diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
 # Revision history for ogma-language-fret-cs
 
+## [1.0.10] - 2023-07-21
+
+* Version bump 1.0.10 (#98).
+* Improve parsing error messages (#96).
+
 ## [1.0.9] - 2023-05-21
 
 * Version bump 1.0.9 (#93).
diff --git a/ogma-language-fret-cs.cabal b/ogma-language-fret-cs.cabal
--- a/ogma-language-fret-cs.cabal
+++ b/ogma-language-fret-cs.cabal
@@ -32,7 +32,7 @@
 build-type:          Simple
 
 name:                ogma-language-fret-cs
-version:             1.0.9
+version:             1.0.10
 homepage:            http://nasa.gov
 license:             OtherLicense
 license-file:        LICENSE.pdf
@@ -68,8 +68,8 @@
       base                   >= 4.11.0.0 && < 5
     , aeson                  >= 2.0.0.0  && < 2.2
 
-    , ogma-language-cocospec >= 1.0.9 && < 1.1
-    , ogma-language-smv      >= 1.0.9 && < 1.1
+    , ogma-language-cocospec >= 1.0.10 && < 1.1
+    , ogma-language-smv      >= 1.0.10 && < 1.1
 
   hs-source-dirs:
     src
@@ -95,7 +95,7 @@
     , test-framework
     , test-framework-quickcheck2
 
-    , ogma-extra                 >= 1.0.9 && < 1.1
+    , ogma-extra                 >= 1.0.10 && < 1.1
     , ogma-language-fret-cs
 
   hs-source-dirs:
diff --git a/src/Language/FRETComponentSpec/AST.hs b/src/Language/FRETComponentSpec/AST.hs
--- a/src/Language/FRETComponentSpec/AST.hs
+++ b/src/Language/FRETComponentSpec/AST.hs
@@ -128,11 +128,40 @@
   deriving (Show)
 
 instance FromJSON FRETRequirement where
-  parseJSON (Object v) = FRETRequirement
-    <$> v .: "name"
-    <*> (fmap (CoCoSpec.pBoolSpec . CoCoSpec.myLexer) <$> v .: "CoCoSpecCode")
-    <*> (fmap (SMV.pBoolSpec . SMV.myLexer) <$> v .: "ptLTL")
-    <*> (v .: "fretish")
+  parseJSON (Object v) = do
+      n <- v .: "name"
+
+      coco  <- fmap (CoCoSpec.pBoolSpec . CoCoSpec.myLexer)
+                 <$> v .: "CoCoSpecCode"
+      coco' <-
+        case coco of
+          Nothing        -> fail $ noField "CoCoSpecCode" n
+          Just (Left s)  -> fail $ noParse "CoCoSpecCode" n s
+          Just (Right _) -> return coco
+
+      ptltl  <- fmap (SMV.pBoolSpec . SMV.myLexer) <$> v .: "ptLTL"
+      ptltl' <-
+        case ptltl of
+          Nothing        -> fail $ noField "ptLTL" n
+          Just (Left s)  -> fail $ noParse "ptLTL" n s
+          Just (Right _) -> return ptltl
+
+      fretish <- v .: "fretish"
+
+      return $ FRETRequirement n coco' ptltl' fretish
+
+    where
+
+      noField field req = concat
+        [ "error: requirement ", show req , " does not have a ", field
+        , " field"
+        ]
+
+      noParse field req err = concat
+        [ "error: parsing of ", field, " field of requirement ", show req
+        , " failed with ", err
+        ]
+
 
   parseJSON invalid =
     prependFailure "parsing FRET Requirement failed, "
diff --git a/tests/fret_good.json b/tests/fret_good.json
--- a/tests/fret_good.json
+++ b/tests/fret_good.json
@@ -12,7 +12,7 @@
     "Requirements": [
       {
         "name": "behnazOne",
-        "CoCoSpecCode": "",
+        "CoCoSpecCode": "true",
         "ptLTL": "((H ((((! <b><i>flight_mode</i></b>) & (Y <b><i>flight_mode</i></b>)) & (Y TRUE)) -> (Y (((O[=<b><i>10</i></b>] ((<b><i>(conflict_detected)</i></b> & ((Y (! <b><i>(conflict_detected)</i></b>)) | (<b><i>flight_mode</i></b> & ((! (Y TRUE)) | (Y (! <b><i>flight_mode</i></b>)))))) & (! <b><i>(( replanning_mode ))</i></b>))) -> (O[<<b><i>10</i></b>] ((<b><i>flight_mode</i></b> & ((! (Y TRUE)) | (Y (! <b><i>flight_mode</i></b>)))) | <b><i>(( replanning_mode ))</i></b>))) S (((O[=<b><i>10</i></b>] ((<b><i>(conflict_detected)</i></b> & ((Y (! <b><i>(conflict_detected)</i></b>)) | (<b><i>flight_mode</i></b> & ((! (Y TRUE)) | (Y (! <b><i>flight_mode</i></b>)))))) & (! <b><i>(( replanning_mode ))</i></b>))) -> (O[<<b><i>10</i></b>] ((<b><i>flight_mode</i></b> & ((! (Y TRUE)) | (Y (! <b><i>flight_mode</i></b>)))) | <b><i>(( replanning_mode ))</i></b>))) & (<b><i>flight_mode</i></b> & ((! (Y TRUE)) | (Y (! <b><i>flight_mode</i></b>))))))))) & (((! ((! <b><i>flight_mode</i></b>) & (Y <b><i>flight_mode</i></b>))) S ((! ((! <b><i>flight_mode</i></b>) & (Y <b><i>flight_mode</i></b>))) & (<b><i>flight_mode</i></b> & ((! (Y TRUE)) | (Y (! <b><i>flight_mode</i></b>)))))) -> (((O[=<b><i>10</i></b>] ((<b><i>(conflict_detected)</i></b> & ((Y (! <b><i>(conflict_detected)</i></b>)) | (<b><i>flight_mode</i></b> & ((! (Y TRUE)) | (Y (! <b><i>flight_mode</i></b>)))))) & (! <b><i>(( replanning_mode ))</i></b>))) -> (O[<<b><i>10</i></b>] ((<b><i>flight_mode</i></b> & ((! (Y TRUE)) | (Y (! <b><i>flight_mode</i></b>)))) | <b><i>(( replanning_mode ))</i></b>))) S (((O[=<b><i>10</i></b>] ((<b><i>(conflict_detected)</i></b> & ((Y (! <b><i>(conflict_detected)</i></b>)) | (<b><i>flight_mode</i></b> & ((! (Y TRUE)) | (Y (! <b><i>flight_mode</i></b>)))))) & (! <b><i>(( replanning_mode ))</i></b>))) -> (O[<<b><i>10</i></b>] ((<b><i>flight_mode</i></b> & ((! (Y TRUE)) | (Y (! <b><i>flight_mode</i></b>)))) | <b><i>(( replanning_mode ))</i></b>))) & (<b><i>flight_mode</i></b> & ((! (Y TRUE)) | (Y (! <b><i>flight_mode</i></b>))))))))",
         "fretish": "Meaning not specified"
       }
