This might as well be an interface.