setting up classes and an interface