working on pure virtual functions, does not compile