diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,12 +1,24 @@
+# 0.2
+
+#### Breaking changes
+
+- Automatically insert GLSL pragmas in shaders.
+
+#### Non-breaking changes
+
+- Added documentation for RenderCmd.
+- Added stdRenderCmd_.
+- Added shaderProgramBatch_.
+
 ### 0.1.1.1
 
 - Fixed a typo in the Graphics.Luminance documentation.
 
-### 0.1.1
+## 0.1.1
 
 - Added a tutoral in Graphics.Luminance.
 
-### 0.1
+# 0.1
 
 - Initial revision. Do not consider this revision as a stable release. It’s experimental. The
   first stable release will be **1.0**.
diff --git a/luminance.cabal b/luminance.cabal
--- a/luminance.cabal
+++ b/luminance.cabal
@@ -1,5 +1,5 @@
 name:                luminance
-version:             0.1.1.1
+version:             0.2
 synopsis:            Type-safe, dependently-typed and stateless graphics framework
 description:         This package exposes several modules to work with /GPUs/ in a stateless and
                      type-safe way. Currently, it uses __OpenGL__ as backend hardware technology but
diff --git a/src/Graphics/Luminance.hs b/src/Graphics/Luminance.hs
--- a/src/Graphics/Luminance.hs
+++ b/src/Graphics/Luminance.hs
@@ -164,10 +164,10 @@
 -- Here’s an exemple of such a use:
 --
 -- @
---   (program,uniformInterface) <- createProgram shaderStages $ \uni -> do
---     resolutionU <- uni $ Left "resolution"
---     timeU <- uni $ Left "time"
---     pure $ divided resolutionU timeU
+--   (program,uniformInterface) <- 'createProgram' shaderStages $ \uni -> do
+--     resolutionU <- uni $ 'Left' "resolution"
+--     timeU <- uni $ 'Left' "time"
+--     'pure' $ 'divided' resolutionU timeU
 -- @
 --
 -- In that example, @uniformInterface@ has type @U ((Float,Float),Float)@, @(Float,Float@ being the
diff --git a/src/Graphics/Luminance/Batch.hs b/src/Graphics/Luminance/Batch.hs
--- a/src/Graphics/Luminance/Batch.hs
+++ b/src/Graphics/Luminance/Batch.hs
@@ -17,6 +17,7 @@
   , AnySPBatch
   , anySPBatch
   , shaderProgramBatch
+  , shaderProgramBatch_
   ) where
 
 import Graphics.Luminance.Core.Batch
diff --git a/src/Graphics/Luminance/Core/Batch.hs b/src/Graphics/Luminance/Core/Batch.hs
--- a/src/Graphics/Luminance/Core/Batch.hs
+++ b/src/Graphics/Luminance/Core/Batch.hs
@@ -85,6 +85,10 @@
 shaderProgramBatch :: Program -> U u -> u -> [RenderCmd rw c d v Geometry] -> SPBatch rw c d u v
 shaderProgramBatch = SPBatch
 
+-- |Create a new 'SPBatch' with no uniform interface.
+shaderProgramBatch_ :: Program -> [RenderCmd rw c d v Geometry] -> SPBatch rw c d () v
+shaderProgramBatch_ p = SPBatch p mempty ()
+
 --------------------------------------------------------------------------------
 -- Geometry draw function ------------------------------------------------------
 
diff --git a/src/Graphics/Luminance/Core/RenderCmd.hs b/src/Graphics/Luminance/Core/RenderCmd.hs
--- a/src/Graphics/Luminance/Core/RenderCmd.hs
+++ b/src/Graphics/Luminance/Core/RenderCmd.hs
@@ -14,11 +14,29 @@
 import Graphics.Luminance.Core.Shader.Uniform ( U(..) )
 
 -- FIXME: we need to make a tighter link between c and blending and between d and the depth test.
+-- FIXME: is the 'rw' type parameter still useful?
+
+-- |A /GPU/ render command. That type exists to implement a stateless way to issue draw commands
+-- to the /GPU/. You can set several hints for a given draw command:
+--
+--   - /blending/: the blending mode is represented by
+--     @'Maybe' ('BlendingMode','BlendingFactor','BlendingFactor')@. If you pass
+--     'Nothing', /blending/ is disabled for that draw command. If you want to enable it, you have
+--     to pass @'Just' (mode,srcK,dstK)@, where @mode@ is the 'BlendingMode' and @srcK@ and @dstK@
+--     are both 'BlendingFactor' representing the source and destination factors.
+--   - /depth test/: the depth test can be enabled by passing 'True' and disabled with 'False'.
+--   - a /per draw command uniform interface and uniform value/: that is the way you can customize
+--     the draw calls. You just have to pass the uniform interface and the value to send down to the
+--     shader.
+--
+-- Finally, a 'RenderCmd' holds a value. That value will be consumed later by other functions. In
+-- general, it’ll be 'Geometry'.
 data RenderCmd rw c d u a = RenderCmd (Maybe (BlendingMode,BlendingFactor,BlendingFactor)) Bool (U u) u a
 
 instance Functor (RenderCmd rw c d u) where
   fmap f (RenderCmd blending depthTest uni u a) = RenderCmd blending depthTest uni u (f a)
 
+-- |@'renderCmd' blending depthTest uniformInterface u a@ constructs a new 'RenderCmd'.
 renderCmd :: Maybe (BlendingMode,BlendingFactor,BlendingFactor)
           -> Bool
           -> U u
@@ -27,5 +45,16 @@
           -> RenderCmd rw c d u a
 renderCmd = RenderCmd
 
+-- |A standard 'RenderCmd' builder.
+--
+--   - no /blending/
+--   - /depth test/ enabled
 stdRenderCmd :: U u -> u -> a -> RenderCmd rw c d u a
 stdRenderCmd = RenderCmd Nothing True
+
+-- |A standard 'RenderCmd' builder with no uniform interface.
+--
+--   - no /blending/
+--   - /depth test/ enabled
+stdRenderCmd_ :: a -> RenderCmd rw c d () a
+stdRenderCmd_ = stdRenderCmd mempty ()
diff --git a/src/Graphics/Luminance/Core/Shader/Stage.hs b/src/Graphics/Luminance/Core/Shader/Stage.hs
--- a/src/Graphics/Luminance/Core/Shader/Stage.hs
+++ b/src/Graphics/Luminance/Core/Shader/Stage.hs
@@ -60,7 +60,7 @@
 mkShader target src = do
   (sid,compiled,cl) <- liftIO $ do
     sid <- glCreateShader target
-    withCString src $ \cstr -> do
+    withCString (prependGLSLPragma src) $ \cstr -> do
       with cstr $ \pcstr -> glShaderSource sid 1 pcstr nullPtr
       glCompileShader sid
       compiled <- isCompiled sid
@@ -91,6 +91,12 @@
   allocaArray l $
     liftA2 (*>) (glGetShaderInfoLog sid (fromIntegral l) nullPtr)
       (peekCString . castPtr)
+
+prependGLSLPragma :: String -> String
+prependGLSLPragma src =
+     "#version 450 core\n"
+  ++ "#extension GL_ARB_bindless_texture : require\n"
+  ++ src
 
 --------------------------------------------------------------------------------
 -- Shader stage errors ---------------------------------------------------------
diff --git a/src/Graphics/Luminance/RenderCmd.hs b/src/Graphics/Luminance/RenderCmd.hs
--- a/src/Graphics/Luminance/RenderCmd.hs
+++ b/src/Graphics/Luminance/RenderCmd.hs
@@ -14,6 +14,7 @@
   , renderCmd
     -- * Special render commands
   , stdRenderCmd
+  , stdRenderCmd_
   ) where
 
 import Graphics.Luminance.Core.RenderCmd
