V2.0.1 RC

This is an update to the major release 2.0.0 which added a
bunch of features. This commit adds nothing new though does
fix several issues 2.0.0 had while also performing a buch of
code clean up.

Most notably, the utils have all been seperated and moved
into its own utils module.

The rest of the adds are modifications.