added type constraint arguments