diff --git a/casadi-bindings.cabal b/casadi-bindings.cabal
--- a/casadi-bindings.cabal
+++ b/casadi-bindings.cabal
@@ -1,5 +1,5 @@
 name:                casadi-bindings
-version:             2.1.3.1
+version:             2.1.3.2
 synopsis:            mid-level bindings to CasADi
 category:            Numerical, Math
 description:
@@ -49,6 +49,7 @@
                        Casadi.Option
                        Casadi.Overloading
                        Casadi.SharedObject
+                       Casadi.Slice
                        Casadi.SX
                        Casadi.SXElement
                        Casadi.SXFunction
diff --git a/src/Casadi/DMatrix.hs b/src/Casadi/DMatrix.hs
--- a/src/Casadi/DMatrix.hs
+++ b/src/Casadi/DMatrix.hs
@@ -6,6 +6,7 @@
        , dsize, dsize1, dsize2, dnumel
        , dvertcat, dhorzcat, dveccat, dvertsplit, dhorzsplit
        , dones, dzeros
+       , dindexed
        ) where
 
 import qualified Data.Vector as V
@@ -14,6 +15,7 @@
 
 import Casadi.Core.Classes.Sparsity
 import Casadi.Core.Classes.DMatrix
+import Casadi.Core.Classes.Slice ( Slice )
 import qualified Casadi.Core.Tools as C
 
 import Casadi.Overloading ( Fmod(..), ArcTan2(..), SymOrd(..) )
@@ -115,6 +117,10 @@
 dzeros :: (Int,Int) -> DMatrix
 dzeros (r,c) = unsafePerformIO (dmatrix_zeros__3 r c)
 {-# NOINLINE dzeros #-}
+
+dindexed :: DMatrix -> Slice -> Slice -> DMatrix
+dindexed m sx sy = unsafePerformIO (dmatrix_indexed__5 m sx sy)
+{-# NOINLINE dindexed #-}
 
 instance Num DMatrix where
   (+) x y = unsafePerformIO (dmatrix___add__ x y)
diff --git a/src/Casadi/MX.hs b/src/Casadi/MX.hs
--- a/src/Casadi/MX.hs
+++ b/src/Casadi/MX.hs
@@ -12,6 +12,7 @@
        , size, size1, size2, numel
        , crs, vertcat, horzcat, veccat, vertsplit, horzsplit
        , ones, zeros
+       , indexed
        ) where
 
 import Data.Vector ( Vector )
@@ -22,6 +23,7 @@
 import Casadi.Core.Classes.MX
 import Casadi.Core.Classes.DMatrix ( DMatrix )
 import Casadi.Core.Classes.Sparsity ( Sparsity )
+import Casadi.Core.Classes.Slice ( Slice )
 import qualified Casadi.Core.Tools as C
 
 import Casadi.Overloading ( Fmod(..), ArcTan2(..), SymOrd(..) )
@@ -152,6 +154,10 @@
 zeros :: (Int,Int) -> MX
 zeros (r,c) = unsafePerformIO (mx_zeros__3 r c)
 {-# NOINLINE zeros #-}
+
+indexed :: MX -> Slice -> Slice -> MX
+indexed m sx sy = unsafePerformIO (mx_indexed__6 m sx sy)
+{-# NOINLINE indexed #-}
 
 instance Num MX where
   (+) x y = unsafePerformIO (mx___add__ x y)
diff --git a/src/Casadi/SX.hs b/src/Casadi/SX.hs
--- a/src/Casadi/SX.hs
+++ b/src/Casadi/SX.hs
@@ -12,6 +12,7 @@
        , ssize, ssize1, ssize2, snumel
        , scrs, svertcat, shorzcat, sveccat, svertsplit, shorzsplit
        , sones, szeros
+       , sindexed
        ) where
 
 import qualified Data.Vector as V
@@ -22,6 +23,7 @@
 import Casadi.Core.Classes.SX
 import Casadi.Core.Classes.DMatrix ( DMatrix )
 import Casadi.Core.Classes.Sparsity ( Sparsity )
+import Casadi.Core.Classes.Slice ( Slice )
 import qualified Casadi.Core.Tools as C
 
 import Casadi.Overloading ( Fmod(..), ArcTan2(..), SymOrd(..) )
@@ -155,6 +157,10 @@
 szeros :: (Int,Int) -> SX
 szeros (r,c) = unsafePerformIO (sx_zeros__3 r c)
 {-# NOINLINE szeros #-}
+
+sindexed :: SX -> Slice -> Slice -> SX
+sindexed m sx sy = unsafePerformIO (sx_indexed__5 m sx sy)
+{-# NOINLINE sindexed #-}
 
 instance Num SX where
   (+) x y = unsafePerformIO (sx___add__ x y)
diff --git a/src/Casadi/Slice.hs b/src/Casadi/Slice.hs
new file mode 100644
--- /dev/null
+++ b/src/Casadi/Slice.hs
@@ -0,0 +1,19 @@
+{-# OPTIONS_GHC -Wall -fno-cse -fno-warn-orphans #-}
+
+module Casadi.Slice
+       ( Slice, slice
+       ) where
+
+import Data.Vector ( Vector )
+import System.IO.Unsafe ( unsafePerformIO )
+
+import Casadi.Core.Classes.Slice
+
+instance Show Slice where
+  show x = unsafePerformIO (slice_getDescription x)
+  {-# NOINLINE show #-}
+
+-- | slice start stop step
+slice :: Int -> Int -> Int -> Slice
+slice x y z = unsafePerformIO (slice__3 x y z)
+{-# NOINLINE slice #-}
