with constraints