I'm putting this out because it might be useful. However, please note that it has not been heavily tested yet and so may contain some errors. Please report any errors you might find back to me (email@example.com, replacing "thisisnotmyaddress" with "theo"). Thanks.
There are some missing classes. You'll have to make them your self.