add `Type` constraint