make requirements polymorphics