diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,5 @@
 Copyright (c)2014-2016, Robin KAY
+Copyright (c)2025, Sascha-Oliver Prolic
 
 All rights reserved.
 
diff --git a/hsqml-demo-samples.cabal b/hsqml-demo-samples.cabal
--- a/hsqml-demo-samples.cabal
+++ b/hsqml-demo-samples.cabal
@@ -1,12 +1,12 @@
 Name:          hsqml-demo-samples
-Version:       0.3.4.0
+Version:       0.3.5.0
 Cabal-version: >= 1.10
 Build-type:    Simple
 License:       BSD3
 License-file:  LICENSE
-Copyright:     (c) 2014-2016 Robin KAY
+Copyright:     (c) 2014-2016 Robin KAY, (c) 2025 Sascha-Oliver Prolic
 Author:        Robin KAY
-Maintainer:    komadori@gekkou.co.uk
+Maintainer:    saschaprolic@googlemail.com
 Stability:     experimental
 Homepage:      http://www.gekkou.co.uk/software/hsqml/
 Category:      Graphics, GUI
@@ -16,12 +16,7 @@
 Extra-source-files:
     CHANGELOG
 Description:
-    HsQML sample programs
-
-Flag OpenGL
-    Description:
-        Build sample programs which use OpenGL.
-    Default: True
+    HsQML sample programs.
 
 Executable hsqml-factorial1
     Default-language: Haskell2010
@@ -29,7 +24,7 @@
     Main-is: Factorial1.hs
     Build-depends:
         base       == 4.*,
-        text       >= 0.11 && < 1.3,
+        text       >= 2.0 && < 2.1,
         hsqml      == 0.3.*
     GHC-options: -threaded
 
@@ -39,7 +34,7 @@
     Main-is: Factorial2.hs
     Build-depends:
         base       == 4.*,
-        text       >= 0.11 && < 1.3,
+        text       >= 2.0 && < 2.1,
         hsqml      == 0.3.*
     GHC-options: -threaded
 
@@ -49,8 +44,8 @@
     Main-is: Model1.hs
     Build-depends:
         base       == 4.*,
-        text       >= 0.11 && < 1.3,
-        hsqml      >= 0.3.4 && < 0.4
+        text       >= 2.0 && < 2.1,
+        hsqml      >= 0.3.6 && < 0.4
     GHC-options: -threaded
 
 Executable hsqml-opengl1
@@ -59,13 +54,11 @@
     Main-is: OpenGL1.hs
     Build-depends:
         base       == 4.*,
-        text       >= 0.11 && < 1.3,
-        OpenGL     >= 2.10 && < 2.14,
-        OpenGLRaw  >= 2.1  && < 2.6,
-        hsqml      >= 0.3.2 && < 0.4
+        text       >= 2.0 && < 2.1,
+        OpenGL     >= 3.0 && < 3.1,
+        OpenGLRaw  >= 3.3  && < 3.4,
+        hsqml      >= 0.3.6 && < 0.4
     GHC-options: -threaded
-    if !flag(OpenGL)
-        Buildable: False
 
 Executable hsqml-opengl2
     Default-language: Haskell2010
@@ -73,14 +66,12 @@
     Main-is: OpenGL2.hs
     Build-depends:
         base       == 4.*,
-        text       >= 0.11 && < 1.3,
-        OpenGL     >= 2.10 && < 2.14,
-        OpenGLRaw  >= 2.1  && < 2.6,
-        hsqml      >= 0.3.3 && < 0.4
+        text       >= 2.0 && < 2.1,
+        OpenGL     >= 3.0 && < 3.1,
+        OpenGLRaw  >= 3.3  && < 3.4,
+        hsqml      >= 0.3.6 && < 0.4
     GHC-options: -threaded
-    if !flag(OpenGL)
-        Buildable: False
 
 Source-repository head
-    type:     darcs
-    location: http://hub.darcs.net/komadori/hsqml-demo-samples
+    type:     git
+    location: https://github.com/prolic/hsqml-demo-samples
diff --git a/src/Factorial1.hs b/src/Factorial1.hs
--- a/src/Factorial1.hs
+++ b/src/Factorial1.hs
@@ -3,15 +3,21 @@
 import Graphics.QML
 import Data.Text (Text)
 import qualified Data.Text as T
+import Text.Read (readMaybe)
 
 import Paths_hsqml_demo_samples
 
 main :: IO ()
 main = do
     clazz <- newClass [
-        defMethod' "factorial" (\_ txt ->
-            let n = read $ T.unpack txt :: Integer
-            in return . T.pack . show $ product [1..n] :: IO Text)]
+        defMethod' "factorial" (\_ txt -> do
+            let maybeN = readMaybe (T.unpack txt) :: Maybe Integer
+            case maybeN of
+                Nothing -> do
+                    return (T.pack "0")
+                Just n -> do
+                    let result = product [1..n]
+                    return (T.pack (show result)) :: IO Text)]
     ctx <- newObject clazz ()
     doc <- getDataFileName "factorial1.qml"
     runEngineLoop defaultEngineConfig {
diff --git a/src/Factorial2.hs b/src/Factorial2.hs
--- a/src/Factorial2.hs
+++ b/src/Factorial2.hs
@@ -6,6 +6,7 @@
 import Data.IORef
 import Data.Text (Text)
 import qualified Data.Text as T
+import Text.Read (readMaybe)
 
 import Paths_hsqml_demo_samples
 
@@ -17,7 +18,10 @@
         defPropertySigRO' "result" skey (\_ ->
             readIORef state),
         defMethod' "factorial" (\obj txt -> do
-            let n = read $ T.unpack txt :: Integer
+            let maybeN = readMaybe (T.unpack txt) :: Maybe Integer
+                n = case maybeN of
+                    Nothing -> 0
+                    Just n -> n
             writeIORef state $ T.pack "Working..."
             fireSignal skey obj
             forkIO $ do
diff --git a/src/OpenGL1.hs b/src/OpenGL1.hs
--- a/src/OpenGL1.hs
+++ b/src/OpenGL1.hs
@@ -1,10 +1,10 @@
 module Main where
 
+import Graphics.GL.ARB.ShaderObjects (glUniformMatrix4fvARB)
 import Graphics.QML
 import Graphics.QML.Canvas
 import Graphics.Rendering.OpenGL.GL
 import Graphics.Rendering.OpenGL.GLU.Errors
-import Graphics.Rendering.OpenGL.Raw.ARB.ShaderObjects (glUniformMatrix4fvARB)
 import Data.Text (Text)
 import qualified Data.Text as T
 import qualified Data.Text.Encoding as T
