diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -2,6 +2,10 @@
 
 ## [Unreleased]
 
+## [0.1.2.6] - 2019-12-12
+### Fixed
+- Fixes for instance of `StructureModels` for `Mae` when working with structures without explicit chain names.
+
 ## [0.1.2.5] - 2019-12-24
 ### Fixed
 - Possibility to have spaces in Fasta sequences.
diff --git a/cobot-io.cabal b/cobot-io.cabal
--- a/cobot-io.cabal
+++ b/cobot-io.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 0e861a80d499c39e6ac8b1c1cb2b2fbcb63c09cd506f31744cbba112b69d71c5
+-- hash: 0f03c19b37ba0793d464c62245414745d11715571fb56535d09dedf96fc5f683
 
 name:           cobot-io
-version:        0.1.2.5
+version:        0.1.2.6
 synopsis:       Biological data file formats and IO
 description:    Please see the README on GitHub at <https://github.com/less-wrong/cobot-io#readme>
 category:       Bio
diff --git a/src/Bio/MAE.hs b/src/Bio/MAE.hs
--- a/src/Bio/MAE.hs
+++ b/src/Bio/MAE.hs
@@ -18,13 +18,14 @@
                                          Model (..), Residue (..),
                                          SecondaryStructure (..),
                                          StructureModels (..))
+import           Control.Monad          (join)
 import           Control.Monad.IO.Class (MonadIO, liftIO)
 import           Data.Attoparsec.Text   (parseOnly)
 import           Data.Bifunctor         (bimap, first)
 import           Data.Function          (on)
 import qualified Data.List              as L (find, groupBy, sortOn)
 import           Data.Map.Strict        (Map)
-import qualified Data.Map.Strict        as M (fromList, lookup, member, (!))
+import qualified Data.Map.Strict        as M (fromList, lookup, (!))
 import           Data.Maybe             (catMaybes, fromJust)
 import           Data.Text              (Text)
 import qualified Data.Text              as T (head, init, last, null, pack,
@@ -51,7 +52,7 @@
       unsafeGetFromContentsMap m name i = unsafeFromMaeValue $ (m M.! name) !! i
 
       getFromContentsMap :: FromMaeValue a => Map Text [MaeValue] -> Text -> Int -> Maybe a
-      getFromContentsMap m name i = fromMaeValue $ (m M.! name) !! i
+      getFromContentsMap m name i = join $ fromMaeValue . (!! i) <$> name `M.lookup` m
 
       blockToModel :: Block -> Model
       blockToModel Block{..} = Model (atomsTableToChains atomsTable) bonds
@@ -94,19 +95,19 @@
           atomsTableToChains :: Map Text [MaeValue] -> Vector Chain
           atomsTableToChains m = V.fromList $ fmap groupToChain groupedByChains
             where
-              groupedByChains = toGroupsOn (unsafeGetFromContents @Text "s_m_chain_name") [0 .. numberOfAtoms - 1]
+              groupedByChains = toGroupsOn (getFromContents defaultChainName "s_m_chain_name") [0 .. numberOfAtoms - 1]
 
+              getFromContents :: FromMaeValue a => a -> Text -> Int -> a
+              getFromContents def name ind = maybe def id $ getFromContentsMap m name ind
+
               unsafeGetFromContents :: FromMaeValue a => Text -> Int -> a
               unsafeGetFromContents = unsafeGetFromContentsMap m
 
-              getFromContents :: FromMaeValue a => Text -> Int -> Maybe a
-              getFromContents = getFromContentsMap m
-
               groupToChain :: [Int] -> Chain
               groupToChain []            = error "Group that is result of List.groupBy can't be empty."
               groupToChain group@(h : _) = Chain name residues
                 where
-                  name = stripQuotes $ unsafeGetFromContents "s_m_chain_name" h
+                  name = stripQuotes $ getFromContents defaultChainName "s_m_chain_name" h
 
                   groupedByResidues = toGroupsOn by group
                   residues          = V.fromList $ fmap groupToResidue groupedByResidues
@@ -114,6 +115,9 @@
                   by :: Int -> (Int, Text)
                   by i = (unsafeGetFromContents "i_m_residue_number" i, unsafeGetFromContents "s_m_pdb_residue_name" i)
 
+              defaultChainName :: Text
+              defaultChainName = "A"
+
               groupToResidue :: [Int] -> Residue
               groupToResidue []            = error "Group that is result of List.groupBy can't be empty."
               groupToResidue group@(h : _) = Residue name atoms (V.fromList localBonds) secondary chemCompType
@@ -140,16 +144,12 @@
                                    (stripQuotes $ getFromContentsI "s_m_pdb_atom_name")
                                    (elIndToElement M.! getFromContentsI "i_m_atomic_number")
                                    coords
-                                   (getFromContentsIWithDef 0 "i_m_formal_charge")
-                                   (getFromContentsIWithDef 0 "r_m_pdb_tfactor")
-                                   (getFromContentsIWithDef 0 "r_m_pdb_occupancy")
+                                   (getFromContents 0 "i_m_formal_charge" i)
+                                   (getFromContents 0 "r_m_pdb_tfactor" i)
+                                   (getFromContents 0 "r_m_pdb_occupancy" i)
                 where
                   getFromContentsI :: FromMaeValue a => Text -> a
                   getFromContentsI = flip unsafeGetFromContents i
-
-                  getFromContentsIWithDef :: FromMaeValue a => a -> Text -> a
-                  getFromContentsIWithDef def n | n `M.member` m = maybe def id $ getFromContents n i
-                                                | otherwise      = def
 
                   coords :: V3 Float
                   coords = V3 (getFromContentsI "r_m_x_coord")
