Adding many of the features. Considering this a v0.1