A systematic internal model control(IMC) controller design methodology has been developed for various types of multivariable processes. When we try to apply IMC to various systems several implementation problems are encountered. In this paper, we resolve theses problems and suggest a systematic IMC controller design methodology. IMC shows very good performance and is easy to tune for open-loop stable systems. For unstable systems we apply IMC after stabilizing the systems using the pole placement technique. A combination of quadratic programming and IMC can handle constraints on manipulated and controlled variables.