major refactoring - putting classics aside