extended functions to be able to work a bit more abstract
starting to implement new Interface
starting to implement new Interface