Complete overhaul. Added some new features. etc