clean up the interfaces to be more generic/specific