Seems sensible to me. Done. Haven't bothered with the namespace aspect for now as the code for that seems to get quite unreadable quite fast :/