fixing to make it work more like you would use it for real
use either wrapping validation to show 3 types of error, unrecoverable on the left of the either
created some type aliases to make things easier to read
fixed merge issue