Initial commit with basic functionality. Needs docs and a more features.