Well, as a proof-of-concept I'm pleased I've got this far. :)