respect constructor argument requirements