extract towers and reporting into modules, refactor methods