Used a special implementation of pickle instead of shelve, changed most of the code structure because of it. Fixed a few bugs, added a few new things.