removed constants from classes and introduced new abstract and protected
methods in base-class