Yup, yup the approach seems to be working.
- The rules can be written in terms of generic monadic classes and they can then be unified
  and run with the specific Rule monad.