Real world problems, such as scheduling and routing problems, are often solved by creating constraint models. These models are automatically rewritten for the use of dedicated solver programs. Over the years, both the size of the problems and approaches taken by the solver programs have significantly changed. This has meant that for some applications the rewriting process has become prohibitively inefficient. This thesis proposes a more efficient structure for the rewriting process that makes constraint modelling a more powerful and attractive approach.