diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -4,6 +4,11 @@
 
 ## Released changes
 
+### 0.3.0.1
+
+- support "State0" line in retrieved instances (introduced by Alloy 6)
+- support CRLF at line end
+
 ### 0.3
 
 - upgrade to Alloy 6.0.0
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@
 This package includes a simple Java Library to make an API call to the Alloy Library.
 Alloy is included (as JAR file) within this library as well.
 
-## Requriements
+## Requirements
 
 - Java Runtime Environment:
   There is currently no warning if you have not set up any Java Runtime Environment.
@@ -15,7 +15,7 @@
 
 The Java interface to get Alloy instances as well as the
 [Alloy Jar](https://github.com/AlloyTools/org.alloytools.alloy/releases/download/v5.1.0/org.alloytools.alloy.dist.jar)
-file are backed into this library.
+file are baked into this library.
 
 On every call the application checks the [`XdgDirectory`](https://hackage.haskell.org/package/directory/docs/System-Directory.html#t:XdgDirectory) if the libraries exist in a current version.
 If not they are placed there together with a version identifier.
@@ -59,7 +59,7 @@
 
 ### An instance example
 
-Calling Alloy using `getInstances` and the above program,
+Calling Alloy using `getInstances` and the above program
 could return the following (abbreviated) instance:
 
 ``` Haskell
diff --git a/call-alloy.cabal b/call-alloy.cabal
--- a/call-alloy.cabal
+++ b/call-alloy.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           call-alloy
-version:        0.3
+version:        0.3.0.1
 synopsis:       A simple library to call Alloy given a specification
 description:    Please see the README on GitHub at <https://github.com/marcellussiegburg/call-alloy#readme>
 category:       Language
@@ -57,7 +57,7 @@
     , file-embed >=0.0.11 && <0.1
     , filepath ==1.4.*
     , hashable >=1.2 && <1.5
-    , mtl ==2.2.*
+    , mtl >=2.2 && <2.4
     , process ==1.6.*
     , split ==0.2.*
     , trifecta >=2 && <2.2
@@ -99,7 +99,7 @@
     , filepath ==1.4.*
     , hashable >=1.2 && <1.5
     , hspec
-    , mtl ==2.2.*
+    , mtl >=2.2 && <2.4
     , process ==1.6.*
     , split ==0.2.*
     , trifecta >=2 && <2.2
diff --git a/src/Language/Alloy/Functions.hs b/src/Language/Alloy/Functions.hs
--- a/src/Language/Alloy/Functions.hs
+++ b/src/Language/Alloy/Functions.hs
@@ -194,7 +194,7 @@
 lookupRel kind rel e = case M.lookup rel (relation e) of
   Nothing -> throwError $ fromString $ "relation " ++ fromString rel
     ++ " is missing in the Alloy instance"
-    ++ " available are: " ++ intercalate ", " (M.keys $ relation e)
+    ++ "; available are: " ++ intercalate ", " (M.keys $ relation e)
   Just r  -> kind r
 
 {-|
@@ -208,7 +208,7 @@
 lookupSig s insta = case M.lookup s insta of
   Nothing -> throwError $ fromString $ showSignature s
     ++ " is missing in the Alloy instance"
-    ++ " available are: \"" ++ intercalate "\", " (showSignature <$> M.keys insta)
+    ++ "; available are: \"" ++ intercalate "\", " (showSignature <$> M.keys insta)
   Just e   -> return e
 
 identity
diff --git a/src/Language/Alloy/Internal/Call.hs b/src/Language/Alloy/Internal/Call.hs
--- a/src/Language/Alloy/Internal/Call.hs
+++ b/src/Language/Alloy/Internal/Call.hs
@@ -237,6 +237,51 @@
   mclassPath' <- readIORef mclassPath
   maybe readClassPath return mclassPath'
 
+{-
+{-
+data CallAlloyConfig = Config {
+    alloyJarFile   :: FilePath,
+    alloyClassFile :: FilePath,
+    keepFiles      :: Bool
+  }
+-}
+
+jarFileEnv :: String
+jarFileEnv = "ALLOY_JAR_FILE"
+
+callAlloyEnv :: String
+callAlloyEnv = "CALL_ALLOY_CLASS_FILE"
+
+keepFilesEnv :: String
+keepFilesEnv = "KEEP_ALLOY_FILES"
+
+{-|
+Lookup environment variables which are to prefer if present.
+-}
+getEnvironmentInformation :: IO CallAlloyConfig
+getEnvironmentInformation = do
+  alloy     <- lookupEnv jarFileEnv
+  callAlloy <- lookupEnv callAlloyEnv
+  keep      <- lookupEnv keepFilesEnv
+  let mconfig = Config <$> alloy <*> callAlloy <*> pure (isJust keep)
+  case mconfig of
+    Nothing -> do
+      dataDir <- getXdgDirectory XdgData $ appName </> "dataDir"
+    Just c  -> return c
+-}
+{-
+getVersionFile :: IO FilePath
+getVersionFile = do
+  configDir <- getXdgDirectory XdgConfig appName
+  let versionFile = configDir </> "version"
+  exists <- doesFileExist versionFile
+  if exists
+    then do
+    version <- read <$> readFile versionFile
+    unless (version == versionHash) $ createVersionFile configDir versionFile
+    else createVersionFile configDir versionFile
+-}
+
 fallbackToTempDir :: IO FilePath -> IO FilePath
 fallbackToTempDir m = catch m $ \e ->
   if isDoesNotExistError e
diff --git a/src/Language/Alloy/Parser.hs b/src/Language/Alloy/Parser.hs
--- a/src/Language/Alloy/Parser.hs
+++ b/src/Language/Alloy/Parser.hs
@@ -57,9 +57,19 @@
     alterSig e Nothing  = e { relation = uncurry M.singleton $ relation e}
     alterSig e (Just y) = y { relation = uncurry M.insert (relation e) (relation y) }
 
+crlf :: Parser Char
+crlf = char '\r' *> char '\n'
+
+endOfLine :: Parser Char
+endOfLine = newline <|> crlf
+
 alloyInstance :: Parser [Entries (,)]
-alloyInstance = (try (void $ string "---INSTANCE---" *> newline) <|> return ())
-  *> many entry
+alloyInstance = (++)
+  <$> entrySection "---INSTANCE---"
+  <*> entrySection "------State 0-------"
+  where
+    entrySection x = (try (void $ string x *> endOfLine) <|> return ())
+      *> many entry
 
 entry :: Parser (Entries (,))
 entry = do
@@ -69,7 +79,7 @@
     <$> (Entry entryAnnotation
          <$> ((,)
               <$> ((string "<:" *> word) <|> pure "")
-              <*> parseRelations <* (void newline <|> eof)))
+              <*> parseRelations <* (void endOfLine <|> eof)))
 
 sig :: Parser Signature
 sig = do
diff --git a/test/Language/Alloy/CallSpec.hs b/test/Language/Alloy/CallSpec.hs
--- a/test/Language/Alloy/CallSpec.hs
+++ b/test/Language/Alloy/CallSpec.hs
@@ -25,6 +25,6 @@
       existsInstance "pred a (a: Int) { a > a }\nrun a" `shouldReturn` False
   describe "getInstances" $ do
     it "an empty spec returns a single trivial instance" $
-      (show <$> getInstances (Just 2) "") `shouldReturn` "[fromList [(Signature {scope = Nothing, sigName = \"end\"},Entry {annotation = Nothing, relation = fromList [(\"\",Id (NumberObject {number = 0}))]}),(Signature {scope = Nothing, sigName = \"integers\"},Entry {annotation = Nothing, relation = fromList [(\"\",Single (fromList [NumberObject {number = -8},NumberObject {number = -7},NumberObject {number = -6},NumberObject {number = -5},NumberObject {number = -4},NumberObject {number = -3},NumberObject {number = -2},NumberObject {number = -1},NumberObject {number = 0},NumberObject {number = 1},NumberObject {number = 2},NumberObject {number = 3},NumberObject {number = 4},NumberObject {number = 5},NumberObject {number = 6},NumberObject {number = 7}]))]}),(Signature {scope = Nothing, sigName = \"loop\"},Entry {annotation = Nothing, relation = fromList [(\"\",Id (NumberObject {number = 0}))]})]]"
+      (show <$> getInstances (Just 2) "") `shouldReturn` "[fromList [(Signature {scope = Nothing, sigName = \"Int\"},Entry {annotation = Nothing, relation = fromList [(\"\",Single (fromList [NumberObject {number = -8},NumberObject {number = -7},NumberObject {number = -6},NumberObject {number = -5},NumberObject {number = -4},NumberObject {number = -3},NumberObject {number = -2},NumberObject {number = -1},NumberObject {number = 0},NumberObject {number = 1},NumberObject {number = 2},NumberObject {number = 3},NumberObject {number = 4},NumberObject {number = 5},NumberObject {number = 6},NumberObject {number = 7}]))]}),(Signature {scope = Nothing, sigName = \"String\"},Entry {annotation = Nothing, relation = fromList [(\"\",EmptyRelation)]}),(Signature {scope = Nothing, sigName = \"end\"},Entry {annotation = Nothing, relation = fromList [(\"\",Id (NumberObject {number = 0}))]}),(Signature {scope = Nothing, sigName = \"integers\"},Entry {annotation = Nothing, relation = fromList [(\"\",Single (fromList [NumberObject {number = -8},NumberObject {number = -7},NumberObject {number = -6},NumberObject {number = -5},NumberObject {number = -4},NumberObject {number = -3},NumberObject {number = -2},NumberObject {number = -1},NumberObject {number = 0},NumberObject {number = 1},NumberObject {number = 2},NumberObject {number = 3},NumberObject {number = 4},NumberObject {number = 5},NumberObject {number = 6},NumberObject {number = 7}]))]}),(Signature {scope = Nothing, sigName = \"loop\"},Entry {annotation = Nothing, relation = fromList [(\"\",Id (NumberObject {number = 0}))]}),(Signature {scope = Nothing, sigName = \"none\"},Entry {annotation = Nothing, relation = fromList [(\"\",EmptyRelation)]}),(Signature {scope = Nothing, sigName = \"univ\"},Entry {annotation = Nothing, relation = fromList [(\"\",Single (fromList [NumberObject {number = -8},NumberObject {number = -7},NumberObject {number = -6},NumberObject {number = -5},NumberObject {number = -4},NumberObject {number = -3},NumberObject {number = -2},NumberObject {number = -1},NumberObject {number = 0},NumberObject {number = 1},NumberObject {number = 2},NumberObject {number = 3},NumberObject {number = 4},NumberObject {number = 5},NumberObject {number = 6},NumberObject {number = 7}]))]}),(Signature {scope = Just \"seq\", sigName = \"Int\"},Entry {annotation = Nothing, relation = fromList [(\"\",Single (fromList [NumberObject {number = 0},NumberObject {number = 1},NumberObject {number = 2},NumberObject {number = 3}]))]})]]"
     it "a conflicting spec returns no instance" $
       getInstances (Just 1) "pred a (a: Int) { a > a }\nrun a" `shouldReturn` []
