Initial commit
Add specs, fix issues. Some specs are still pending