requires type