Your code looks as though you have been playing bingo with anti-patterns.
More?