components are no longer an interface