Hi Martin,
Seems reasonable to me. It's a common dependency-breaking technique, akin to introducing an interface in OO-land. Did you also introduce a typeclass constraint on the type 'r' so you can call some methods on it too? If not then Process doesn't really depend on System at all.
Another thing to look for is that perhaps your System module splits into two bits, one low-level (defining types and so on) and one high-level (making use of everything in System and Process and Runner) and the two bits live at opposite ends of the dependency graph. I've found that quite a common situation to be in when splitting things up into modules too.
HTH,
David