use parseEither instead of Aeson's parse
annotations