constraints-based approach