First commit. Almost all finished for release 2.0.0