screw it, I'll figure out QuickCheck later.

Or just use SmartCheck instead; it looks better.
move types to dedicated file and add Value type
add tests on invalid syntax