diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+### 0.2.0.1
+
+- Simplified the implementation of all samples.
+
 ### 0.2
 
 - Removed explicit GLSL pragmas because they’re now handled in luminance-0.2+.
diff --git a/luminance-samples.cabal b/luminance-samples.cabal
--- a/luminance-samples.cabal
+++ b/luminance-samples.cabal
@@ -1,5 +1,5 @@
 name:                luminance-samples
-version:             0.2
+version:             0.2.0.1
 synopsis:            Luminance samples
 description:         Luminance samples used as tutorial help
 homepage:            https://github.com/phaazon/luminance-samples
diff --git a/src/Blending.hs b/src/Blending.hs
--- a/src/Blending.hs
+++ b/src/Blending.hs
@@ -24,7 +24,7 @@
     pure $ divided colorU offsetU
   untilM (liftIO $ windowShouldClose window) $ do
     void . runCmd . draw $ framebufferBatch defaultFramebuffer
-      [anySPBatch . shaderProgramBatch program mempty () $
+      [anySPBatch . shaderProgramBatch_ program $
         [
           renderCmd blending False colorOffsetU (color0,offset0) triangle 
         , renderCmd blending False colorOffsetU (color1,offset1) triangle 
diff --git a/src/Blit.hs b/src/Blit.hs
--- a/src/Blit.hs
+++ b/src/Blit.hs
@@ -23,7 +23,7 @@
   untilM (liftIO $ windowShouldClose window) $ do
     _ <- runCmd $ do
       _ <- draw $ framebufferBatch fb 
-        [anySPBatch $ shaderProgramBatch program mempty () [renderCmd Nothing True mempty () triangle]]
+        [anySPBatch $ shaderProgramBatch_ program [stdRenderCmd_ triangle]]
       blit fb defaultFramebuffer 0 0 windowW windowH 0 0 windowW windowH BlitColor Linear
     endFrame window
 
diff --git a/src/DepthTest.hs b/src/DepthTest.hs
--- a/src/DepthTest.hs
+++ b/src/DepthTest.hs
@@ -23,7 +23,7 @@
     pure $ divided colorU offsetU
   untilM (liftIO $ windowShouldClose window) $ do
     void . runCmd . draw $ framebufferBatch defaultFramebuffer
-      [anySPBatch . shaderProgramBatch program mempty () $
+      [anySPBatch . shaderProgramBatch_ program $
         [
           renderCmd Nothing True colorOffsetU (color0,offset0) triangle 
         , renderCmd Nothing True colorOffsetU (color1,offset1) triangle 
diff --git a/src/HelloWorld.hs b/src/HelloWorld.hs
--- a/src/HelloWorld.hs
+++ b/src/HelloWorld.hs
@@ -16,7 +16,7 @@
   triangle <- createGeometry vertices Nothing Triangle
   program <- sequenceA [createVertexShader vsSource,createFragmentShader fsSource] >>= createProgram_
   untilM (liftIO $ windowShouldClose window) $ do
-    void . runCmd . draw $ framebufferBatch defaultFramebuffer [anySPBatch . shaderProgramBatch program mempty () $ [stdRenderCmd mempty () triangle]]
+    void . runCmd . draw $ framebufferBatch defaultFramebuffer [anySPBatch $ shaderProgramBatch_ program [stdRenderCmd_ triangle]]
     endFrame window
 
 vertices :: [V 2 Float]
diff --git a/src/HelloWorldUniform.hs b/src/HelloWorldUniform.hs
--- a/src/HelloWorldUniform.hs
+++ b/src/HelloWorldUniform.hs
@@ -19,7 +19,7 @@
   fs <- createFragmentShader fsSource
   (program,colorsU :: U [(Float,Float,Float)]) <- createProgram [vs,fs] (\f -> f $ Left "colors")
   untilM (liftIO $ windowShouldClose window) $ do
-    void . runCmd . draw $ framebufferBatch defaultFramebuffer [anySPBatch . shaderProgramBatch program colorsU colors $ [stdRenderCmd mempty () triangle]]
+    void . runCmd . draw $ framebufferBatch defaultFramebuffer [anySPBatch $ shaderProgramBatch program colorsU colors [stdRenderCmd_ triangle]]
     endFrame window
 
 colors :: [(Float,Float,Float)]
diff --git a/src/Texture.hs b/src/Texture.hs
--- a/src/Texture.hs
+++ b/src/Texture.hs
@@ -33,7 +33,7 @@
     uni $ Left "srcTex"
   untilM (liftIO $ windowShouldClose window) $ do
     void . runCmd . draw $ framebufferBatch defaultFramebuffer
-      [anySPBatch $ shaderProgramBatch program texU tex [renderCmd Nothing True mempty () quad]]
+      [anySPBatch $ shaderProgramBatch program texU tex [stdRenderCmd_ quad]]
     endFrame window
 
 vertices :: [V 2 Float]
