Removed a lot of unnecessary (Monoid result) constraints.
Created Driver module to provide a unified interface to different back-ends.