split into several modules, use hsc2hs for error codes