diff --git a/app/Main.hs b/app/Main.hs
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -180,6 +180,7 @@
                       when (takeExtension schemaFile == ".json") $ do
                         let schemaFilePath = schemasFolder </> schemaFile
                             reportFile = reportFolder </> schemaFile -<.> "html"
+                            reportDataFile = reportFolder </> schemaFile -<.> "results.json"
                         emodel <- eitherDecode <$> LBS.readFile schemaFilePath
                         case emodel of
                           Left e -> writeErrorReportFile reportFile $
@@ -187,6 +188,7 @@
                           Right model ->
                             do reports <- runTests model nTests size
                                writeReportFile reportFile model reports
+                               writeReportDataFile reportDataFile reports
   where
     readSwagger :: FilePath -> IO NormalizedSwagger
     readSwagger swaggerFile= do contents <- LBS.readFile swaggerFile
@@ -199,6 +201,12 @@
                     <> progDesc "Execute one of the commands available depending on your needs"
                     <> header ("Property-based testing tool for Swagger APIs - v. " <> showVersion version)
                     <> footer "Run `COMMAND --help` to get command specific options help")
+
+    -- |Write a json of the structure data of the report
+    writeReportDataFile :: FilePath -> [TestReport] -> IO ()
+    writeReportDataFile fp reports =
+      let failures = filter isFailure reports
+      in LBS.writeFile fp $ encode failures
 
     doGenerate :: NormalizedSwagger
                -> Maybe Seed
diff --git a/src/Test/Swagger/Gen.hs b/src/Test/Swagger/Gen.hs
--- a/src/Test/Swagger/Gen.hs
+++ b/src/Test/Swagger/Gen.hs
@@ -285,7 +285,8 @@
 -- |Generate a JSON from a schema
 genJSON :: Schema -> Gen Value
 genJSON Schema { _schemaAllOf = Just ss } | not (null ss) =
-  do jsons <- shuffle =<< mapM genJSON ss
+  do let ss' = catMaybes $ refToMaybe <$> ss
+     jsons <- shuffle =<< mapM genJSON ss'
      n <- choose (1, length jsons)
      pure $ foldl1 merge $ take n jsons
 
diff --git a/src/Test/Swagger/Report.hs b/src/Test/Swagger/Report.hs
--- a/src/Test/Swagger/Report.hs
+++ b/src/Test/Swagger/Report.hs
@@ -12,6 +12,7 @@
 -}
 module Test.Swagger.Report ( TestReport(..)
                            , isSuccessful
+                           , isFailure
                            , writeReportFile
                            , writeErrorReportFile
                            , runTests) where
@@ -120,8 +121,11 @@
         h2 "Operations"
         ul ! class_ "operations-menu" $
           forM_ reportGroups $ \case
-              (TestReport { reportOperation=Operation { _operationOperationId=Just opid } }:_) ->
-                li $ a ! href (toValue $ "#" <> opid) $ toHtml opid
+              gr@(TestReport { reportOperation=Operation { _operationOperationId=Just opid } }:_) ->
+                do let hasFailure = any isFailure gr
+                   li $ a ! href (toValue $ "#" <> opid)
+                          ! class_ (if hasFailure then "failure" else "success")
+                          $ toHtml opid
               _ -> pure ()
         forM_ reportGroups $ \case
             [] -> error "this shouldn't happen"
@@ -209,6 +213,12 @@
                     \dd {\
                     \  margin-left: 17%;\
                     \  margin-bottom: 1em;\
+                    \}\
+                    \a.success {\
+                    \  color: green;\
+                    \}\
+                    \a.failure {\
+                    \  color: red;\
                     \}"
        body $ do
            h1 schemaTitle
diff --git a/swagger-test.cabal b/swagger-test.cabal
--- a/swagger-test.cabal
+++ b/swagger-test.cabal
@@ -1,5 +1,5 @@
 name:                swagger-test
-version:             0.2.4
+version:             0.2.5
 synopsis:            Testing of Swagger APIs
 description:         This package provides a library and executable tool
                      that supports testing APIs specified with Swagger. It
@@ -23,13 +23,13 @@
   hs-source-dirs:      src
   ghc-options:         -Wall
   exposed-modules:     Test.Swagger
+  other-modules:     Paths_swagger_test
                      , Test.Swagger.Gen
                      , Test.Swagger.Print
                      , Test.Swagger.Report
                      , Test.Swagger.Request
                      , Test.Swagger.Types
                      , Test.Swagger.Validate
-  other-modules:     Paths_swagger_test
   build-depends:       base >= 4.7 && < 5
                      , QuickCheck == 2.10.*
                      , aeson
@@ -49,7 +49,7 @@
                      , lens
                      , random
                      , scientific
-                     , swagger2
+                     , swagger2 >= 2.1.5 && < 3
                      , syb
                      , text
                      , unordered-containers
@@ -70,7 +70,7 @@
                      , optparse-applicative
                      , random
                      , swagger-test
-                     , swagger2
+                     , swagger2 >= 2.1.5 && < 3
                      , text
   default-language:    Haskell2010
 
