restructure of abstract classes + starting doc