diff --git a/Bio/PDB/EventParser/ParseFORMUL.hs b/Bio/PDB/EventParser/ParseFORMUL.hs
--- a/Bio/PDB/EventParser/ParseFORMUL.hs
+++ b/Bio/PDB/EventParser/ParseFORMUL.hs
@@ -49,21 +49,21 @@
                                    else errs
   where
     -- parse
-    errs            = fErrs ++ watErr
-    (fields, fErrs) = parseFields formulFields line line_no
+    errs                = fErrs ++ watErr
+    (fields, fErrs)     = parseFields formulFields line line_no
     [fRec, _, fCompNum, _, fHetId, _, fCont, fAsterisk, fFormula] = fields
-    IFInt  compNum  = fCompNum
-    IFStr  hetId    = fHetId
-    IFInt  cont     = fCont
-    IFChar asterisk = fAsterisk
-    IFStr  formula  = fFormula
+    IFInt  compNum      = fCompNum
+    IFStr  hetId        = fHetId
+    IFInt  cont         = fCont
+    IFChar asteriskChar = fAsterisk
+    IFStr  formula      = fFormula
     
-    watErr = if asterisk `elem` " *"
+    watErr = if (==asteriskChar) `BS.any` " *"
                then []
                else [PDBParseError line_no 19 $
                      BS.concat ["Expecting asterisk for water or space, but found: '",
-                                BS.pack [asterisk], "'."]]
-    isWater = asterisk == '*'
+                                BS.pack [asteriskChar], "'."]]
+    isWater = asteriskChar == '*'
 
     -- unpack fields
     result = FORMUL compNum hetId cont isWater [formula]
diff --git a/Bio/PDB/Structure.hs b/Bio/PDB/Structure.hs
--- a/Bio/PDB/Structure.hs
+++ b/Bio/PDB/Structure.hs
@@ -1,10 +1,11 @@
-{-# LANGUAGE DisambiguateRecordFields #-}
+{-# LANGUAGE DisambiguateRecordFields, DeriveGeneric #-}
 module Bio.PDB.Structure(String,
                          vdot, vnorm, vproj, vperpend, vperpends, vdihedral, (*|), (|*),
                          Structure(..), Model(..), Chain(..), Residue(..), Atom(..))
 
 where
 
+import GHC.Generics(Generic)
 import Prelude hiding(String)
 import Bio.PDB.EventParser.PDBEvents(String, Vector3(..)) -- extract to a separate module?
 import Control.DeepSeq
@@ -15,7 +16,7 @@
 -- | Structure holds all data parsed from a single PDB entry
 data Structure = Structure { -- remarks :: [Map String String]
                              models    :: L.List Model
-                           } deriving (Eq, Show)
+                           } deriving (Eq, Show, Generic)
 
 instance NFData Structure where
   rnf m = rnf (models m) `seq` ()
@@ -31,7 +32,7 @@
 -- | PDB entry may contain multiple models, with slight differences in coordinates etc.
 data Model     = Model     { modelId   :: !Int,
                              chains    :: L.List Chain
-                           } deriving (Eq, Show)
+                           } deriving (Eq, Show, Generic)
 
 instance NFData Model where
   rnf m = modelId m `seq` rnf (chains m) `seq` ()
@@ -39,7 +40,7 @@
 -- | Single linear polymer chain of protein, or nucleic acids
 data Chain     = Chain     { chainId   :: !Char,
                              residues  :: L.List Residue
-                           } deriving (Eq, Show)
+                           } deriving (Eq, Show, Generic)
 
 instance NFData Chain where
   rnf m = chainId m `seq` rnf (residues m) `seq` ()
@@ -51,7 +52,7 @@
 
                              insCode   :: !Char
                              -- ss :: SSType 
-                           } deriving (Eq, Show)
+                           } deriving (Eq, Show, Generic)
 
 instance NFData Residue where
   rnf r = rnf (atoms r) `seq` ()
@@ -73,7 +74,8 @@
                              segid     :: !String,
                              charge    :: !String,
                              hetatm    :: !Bool
-                           } deriving (Eq, Show)
+                           } deriving (Eq, Show, Generic)
 
 -- constructor is strict in all arguments...
 instance NFData Atom where
+  rnf (Atom {}) = ()
diff --git a/Bio/PDB/Structure/List.hs b/Bio/PDB/Structure/List.hs
--- a/Bio/PDB/Structure/List.hs
+++ b/Bio/PDB/Structure/List.hs
@@ -37,6 +37,7 @@
 #else
 -- It is defined in newer versions of vector package.
 instance NFData (V.Vector a)   where
+  rnf v = v `seq` ()
 #endif
 
 instance NFData (TempList m a) where
diff --git a/Bio/PDB/Util/MissingInstances.hs b/Bio/PDB/Util/MissingInstances.hs
--- a/Bio/PDB/Util/MissingInstances.hs
+++ b/Bio/PDB/Util/MissingInstances.hs
@@ -13,5 +13,6 @@
 -- I use strict version of BS.ByteString so default implementation should do
 -- | Nothing needs to be done in NFData instance for stricty `BS.ByteString`.
 instance NFData BS.ByteString where
+  rnf a = a `seq` ()
 #endif
 
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -18,7 +18,7 @@
 
 Details on official releases are on [Hackage](https://hackage.haskell.org/package/hPDB)
 
-This package is also a part of [Stackage](http://daniel-diaz.github.io/stackagelist/) - a stable subset of Hackage.
+This package is also a part of [Stackage](http://www.stackage.org/package/hPDB) - a stable subset of Hackage.
 
 Projects for the future:
 ------------------------
diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,5 +1,8 @@
 -*-Changelog-*-
 
+1.2.0.2  Dec 2014
+	* Works with GHC 7.10
+
 1.2.0.1  Dec 2014
 	* Relaxed upper bounds
 
diff --git a/hPDB.cabal b/hPDB.cabal
--- a/hPDB.cabal
+++ b/hPDB.cabal
@@ -1,5 +1,5 @@
 name:                hPDB
-version:             1.2.0.1
+version:             1.2.0.2
 synopsis:            Protein Databank file format library
 homepage:            https://github.com/BioHaskell/hPDB
 stability:           stable
@@ -32,7 +32,7 @@
 
 build-type:          Simple
 cabal-version:       >=1.8
-tested-with:         GHC==7.0.3, GHC==7.2.2, GHC==7.4.1, GHC==7.4.2, GHC==7.6.1, GHC==7.6.2, GHC==7.6.3
+tested-with:         GHC==7.6.3, GHC==7.8.3
 extra-source-files:  README.md INSTALL AUTHORS changelog
 
 source-repository head
@@ -68,7 +68,7 @@
   if flag(have-text-format)
     cpp-options: -DHAVE_TEXT_FORMAT
     build-depends: text-format >= 0.3.1.0
-  other-extensions:       ScopedTypeVariables OverloadedStrings BangPatterns NoMonomorphismRestriction EmptyDataDecls MagicHash CPP PatternGuards NamedFieldPuns DisambiguateRecordFields TemplateHaskell MultiParamTypeClasses FlexibleInstances FlexibleContexts
+  other-extensions:       ScopedTypeVariables OverloadedStrings BangPatterns NoMonomorphismRestriction EmptyDataDecls MagicHash CPP PatternGuards NamedFieldPuns DisambiguateRecordFields TemplateHaskell MultiParamTypeClasses FlexibleInstances FlexibleContexts DeriveGeneric
   other-modules:    Bio.PDB.EventParser.ParseATOM, Bio.PDB.EventParser.ParseCAVEAT, Bio.PDB.EventParser.ParseCISPEP, Bio.PDB.EventParser.ParseCONECT, Bio.PDB.EventParser.ParseCRYST1, Bio.PDB.EventParser.ParseDBREF, Bio.PDB.EventParser.ParseFORMUL, Bio.PDB.EventParser.ParseHEADER, Bio.PDB.EventParser.ParseHELIX, Bio.PDB.EventParser.ParseHET, Bio.PDB.EventParser.ParseHETNAM, Bio.PDB.EventParser.ParseHYDBND, Bio.PDB.EventParser.ParseIntRecord, Bio.PDB.EventParser.ParseJRNL, Bio.PDB.EventParser.ParseLINK, Bio.PDB.EventParser.ParseListRecord, Bio.PDB.EventParser.ParseMASTER, Bio.PDB.EventParser.ParseMatrixRecord, Bio.PDB.EventParser.ParseMODRES, Bio.PDB.EventParser.ParseObsoleting, Bio.PDB.EventParser.ParseREMARK, Bio.PDB.EventParser.ParseREVDAT, Bio.PDB.EventParser.ParseSEQADV, Bio.PDB.EventParser.ParseSEQRES, Bio.PDB.EventParser.ParseSHEET, Bio.PDB.EventParser.ParseSITE, Bio.PDB.EventParser.ParseSLTBRG, Bio.PDB.EventParser.ParseSpecListRecord, Bio.PDB.EventParser.ParseSPLIT, Bio.PDB.EventParser.ParseSSBOND, Bio.PDB.EventParser.ParseTER, Bio.PDB.EventParser.ParseTITLE, Bio.PDB.EventParser.ParseTVECT, Bio.PDB.EventParser.PDBParsingAbstractions, Bio.PDB.EventParser.FastParse, Bio.PDB.Util.MissingInstances, Bio.PDB.Common, Bio.PDB.Iterable.Utils, Bio.PDB.Iterable.Instances, Bio.PDB.StructureBuilder.Internals, Bio.PDB.StructureBuilder.Parallel, Bio.PDB.Util.ParFold
   exposed-modules:  Bio.PDB.EventParser.PDBEvents, Bio.PDB.EventParser.PDBEventParser, Bio.PDB.EventParser.ExperimentalMethods, Bio.PDB.EventParser.HelixTypes, Bio.PDB.EventParser.StrandSense, Bio.PDB.Structure, Bio.PDB.StructureBuilder, Bio.PDB.Iterable, Bio.PDB.IO, Bio.PDB.Fasta, Bio.PDB, Bio.PDB.Structure.Vector, Bio.PDB.Structure.Elements, Bio.PDB.Structure.List, Bio.PDB.StructurePrinter, Bio.PDB.EventParser.PDBEventPrinter, Bio.PDB.IO.OpenAnyFile, Bio.PDB.Structure.Neighbours
   exposed:          True
