diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -48,3 +48,7 @@
 printed prompt message in the MMSyn4 module. Changed the exported and imported functions and dependencies for modules. Added the possibility 
 to specify three additional command line arguments to specify the command to be executed to create the visualization file and its format. 
 So, now the program behavior can be basically controlled with command line arguments.
+
+## 0.3.1.0 -- 2020-05-16
+
+* Third version revised A. Added CPP pre-processor to support compilation also for GHC-7.8* series. 
diff --git a/MMSyn4.hs b/MMSyn4.hs
--- a/MMSyn4.hs
+++ b/MMSyn4.hs
@@ -13,7 +13,12 @@
 module MMSyn4 (getFormat,process2)
  where
 
+#ifdef __GLASGOW_HASKELL__
+#if __GLASGOW_HASKELL__>=710
+/* code that applies only to GHC 7.10.* and higher versions */
 import GHC.Base (mconcat)
+#endif
+#endif
 import Data.List (nub)
 import System.Info (os)
 import System.CPUTime (getCPUTime)
@@ -22,6 +27,13 @@
 import qualified Data.Vector as V
 import EndOfExe (showE)
 import Data.Maybe (isJust,fromJust)
+
+#ifdef __GLASGOW_HASKELL__
+#if __GLASGOW_HASKELL__==708
+/* code that applies only to GHC 7.8.* */
+mconcat = concat
+#endif
+#endif
 
 isSep :: Char -> Bool
 isSep = (== ':')
diff --git a/mmsyn4.cabal b/mmsyn4.cabal
--- a/mmsyn4.cabal
+++ b/mmsyn4.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                mmsyn4
-version:             0.3.0.0
+version:             0.3.1.0
 synopsis:            The "glue" between electronic tables and GraphViz
 description:         The program mmsyn4 converts a specially formated .csv file with a colon as a field separator obtained from the electronic table into a visualized by GraphViz graph.
 homepage:            https://hackage.haskell.org/package/mmsyn4
@@ -19,7 +19,7 @@
 library
   exposed-modules:     Main, MMSyn4
   -- other-modules:    
-  -- other-extensions:
+  other-extensions:    CPP
   build-depends:       base >=4.7 && <4.15, directory >=1 && <1.5, process >=1.2 && <1.8, mmsyn2 >=0.1.8 && <0.2, vector >=0.11 && <0.14, mmsyn3 >=0.1.5 && <0.2
   -- hs-source-dirs:
   default-language:    Haskell2010
@@ -27,7 +27,7 @@
 executable mmsyn4
   main-is:             Main.hs
   -- other-modules:
-  -- other-extensions:
+  other-extensions:    CPP
   build-depends:       base >=4.7 && <4.15, directory >=1 && <1.5, process >=1.2 && <1.8, mmsyn2 >=0.1.8 && <0.2, vector >=0.11 && <0.14, mmsyn3 >=0.1.5 && <0.2
   -- hs-source-dirs:
   default-language:    Haskell2010
