mostly done with library, haven't tested stuff yet
got some code to compile, but doesn't seem to be working :(