trying to implement an interface to simplify some things
and getting rid of a few unneeded files