started major refactorization and implemented some design changes