add documentation , create abstract methods