mark base classes abstract and correct naming.