first versions of the abstract classes to be used