Moved isEmpty and first logic onto parser state
Fixing step to work as expected.
Adding a few more tests