Moved the interface definition to the deinfe interface method, refined some other stuff i think