add Tower and refactoring some classes