this should support typehinting the interface as well