added the abaility to define an interface