The use of constraints for the definition of graphical user interfaces has been recognized as a great concept. However, often many valuations of the variables will satisfy the constraints, and which particular valuation matches best with the expectation of the user cannot be decided without further information. Three typical examples of user interfaces are presented where this occurs, and from these, requirements on a more cooperative constraint solver are derived. A new method for the definition and implementation of the strategy to decide which variables to adapt is presented. The model is based on two notions: hierarchy and grouping. Variables are divided into groups, and for each group three parameters are set. These are used to determine the level of variables, dependent on which group they belong, and which variables are modified. These levels are used in turn to select the variables to be adapted. An implementation of this method is described, as part of the Computational Steering Environment (CSE) developed at CWI. The resulting constraint solver can handle simultaneous sets of non-linear, multi-way constraints; and can handle a high-level definition of the strategy to be followed. Finally, the results are discussed, and suggestions for further work are done