better requirement handling