the last type is needed only