diff --git a/Graphics/LambdaCube/Loader/StbImage.hs b/Graphics/LambdaCube/Loader/StbImage.hs
--- a/Graphics/LambdaCube/Loader/StbImage.hs
+++ b/Graphics/LambdaCube/Loader/StbImage.hs
@@ -2,6 +2,7 @@
 
 import Data.Bitmap
 import Data.ByteString.Lazy hiding (putStrLn)
+import Foreign.Ptr
 import qualified Codec.Image.STB as STB
 import qualified Data.ByteString as SB
 
@@ -23,6 +24,7 @@
             (w,h) = bitmapSize img
         putStrLn $ "StbImage loader " ++ "\"" ++ name ++ "\" loaded"
         putStrLn $ "StbImage loader " ++ "resolution = " ++ show w ++ " x " ++ show h ++ ", " ++ show (bitmapPixelSizeInBytes img) ++ " bytes per pixel"
+        imgData <- withBitmap img $ \_ _ _ ptr -> SB.packCStringLen (castPtr ptr,bitmapSizeInBytes img)
         return $ Just Image
           { imName       = name
           , imHeight     = w
@@ -30,5 +32,5 @@
           , imDepth      = 1
           , imNumMipmaps = 0 -- TODO
           , imFormat     = pf
-          , imData       = bitmapToByteString img
+          , imData       = imgData
           }
diff --git a/Graphics/LambdaCube/MeshUtil.hs b/Graphics/LambdaCube/MeshUtil.hs
--- a/Graphics/LambdaCube/MeshUtil.hs
+++ b/Graphics/LambdaCube/MeshUtil.hs
@@ -53,6 +53,8 @@
 groupByGeometry :: [[MeshGroup]] -> [[MeshGroup]]
 groupByGeometry l = groupSetBy compareMeshItem =<< l
   where
+    compareMeshItem (_,_,Just _,_,_) (_,_,Nothing,_,_) = GT
+    compareMeshItem (_,_,Nothing,_,_) (_,_,Just _,_,_) = LT
     compareMeshItem (_,a1,_,_,a2) (_,b1,_,_,b2) = compare (V.map vectorVertexType a1, a2) (V.map vectorVertexType b1, b2)
 
 joinGroup :: [MeshGroup] -> VSubMesh
diff --git a/Graphics/LambdaCube/SceneGraph.hs b/Graphics/LambdaCube/SceneGraph.hs
--- a/Graphics/LambdaCube/SceneGraph.hs
+++ b/Graphics/LambdaCube/SceneGraph.hs
@@ -30,7 +30,7 @@
 simpleCamera :: RenderSystem r vb ib q t p lp => String -> MkSceneObjectAction r vb ib q t p lp e
 simpleCamera name = return $ SO_Camera Camera
     { cmName        = name
-    , cmFov         = 45
+    , cmFov         = 45 / 180 * pi
     , cmNear        = 0.1
     , cmFar         = 5000
     , cmAspectRatio = Nothing
@@ -42,7 +42,7 @@
 wireCamera :: RenderSystem r vb ib q t p lp => String -> MkSceneObjectAction r vb ib q t p lp e
 wireCamera name = return $ SO_Camera Camera
     { cmName        = name
-    , cmFov         = 45
+    , cmFov         = 45 / 180 * pi
     , cmNear        = 0.1
     , cmFar         = 5000
     , cmAspectRatio = Nothing
diff --git a/lambdacube-engine.cabal b/lambdacube-engine.cabal
--- a/lambdacube-engine.cabal
+++ b/lambdacube-engine.cabal
@@ -1,5 +1,5 @@
 name: lambdacube-engine
-version: 0.2.3
+version: 0.2.4
 cabal-version: >= 1.6 && < 2
 build-type: Simple
 license: BSD3
@@ -45,13 +45,14 @@
     containers >= 0.2 && < 1,
     directory >= 1.0.0.2 && < 2,
     filepath >= 1.1.0.1 && < 2,
-    stb-image >= 0.2 && < 0.3,
+    stb-image >= 0.2.1 && < 0.3,
+    bitmap >= 0.0.2 && < 0.1,
     uulib >= 0.9.10 && < 1,
     vector,
     vector-algorithms,
     bytestring-trie >= 0.2 && < 0.3,
     xml >= 1.3 && < 2,
-    zip-archive >= 0.1.1.3 && < 1,
+    zip-archive >= 0.1.1.8 && < 1,
     mtl >= 2 && < 3
   exposed-modules:
     Graphics.LambdaCube
@@ -120,3 +121,15 @@
 --    Graphics.LambdaCube.ParticleSystem
 
   ghc-options: -O2 -fspec-constr-count=12 -Wall -fno-warn-unused-do-bind -fno-warn-name-shadowing
+
+  Extensions:
+    DatatypeContexts
+--    ExistentialQuantification
+--    FlexibleContexts
+--    FlexibleInstances
+--    FunctionalDependencies
+--    MultiParamTypeClasses
+--    NamedFieldPuns
+--    NoMonomorphismRestriction
+--    ParallelListComp
+--    Rank2Types
