A lot of small improvements
Added tests (a lot!).
Also encountered some creepy bug with os.path.mtime()
behavior.