diff --git a/Sound/Tidal/Parse.hs b/Sound/Tidal/Parse.hs
--- a/Sound/Tidal/Parse.hs
+++ b/Sound/Tidal/Parse.hs
@@ -105,10 +105,12 @@
 pSingle f = f >>= pRand >>= pMult
 
 pPart :: Parser (Pattern a) -> Parser ([Pattern a])
-pPart f = do part <- parens (pSequence f) <|> pSingle f <|> pPolyIn f <|> pPolyOut f
-             part' <- pRand part
+pPart f = do -- part <- parens (pSequence f) <|> pSingle f <|> pPolyIn f <|> pPolyOut f
+             part <- pSingle f <|> pPolyIn f <|> pPolyOut f
+             part <- pE part
+             part <- pRand part
              spaces
-             parts <- pReplicate part'
+             parts <- pReplicate part
              spaces
              return $ parts
 
@@ -178,6 +180,18 @@
                  spaces
                  return $ degrade thing
               <|> return thing
+
+pE :: Pattern a -> Parser (Pattern a)
+pE thing = do (n,k) <- parens (pair)
+              return $ e n k thing
+            <|> return thing
+   where pair = do a <- integer
+                   spaces
+                   symbol ","
+                   spaces
+                   b <- integer
+                   return (fromIntegral a, fromIntegral b)
+                   
 
 pReplicate :: Pattern a -> Parser ([Pattern a])
 pReplicate thing = do extras <- many $ do char '!'
diff --git a/Sound/Tidal/Pattern.hs b/Sound/Tidal/Pattern.hs
--- a/Sound/Tidal/Pattern.hs
+++ b/Sound/Tidal/Pattern.hs
@@ -13,6 +13,8 @@
 import Data.Function
 import System.Random.Mersenne.Pure64
 
+import Music.Theory.Bjorklund
+
 import Sound.Tidal.Time
 import Sound.Tidal.Utils
 
@@ -55,7 +57,6 @@
     mempty = silence
     mappend = overlay
 
-
 instance Monad Pattern where
   return = pure
   p >>= f = 
@@ -470,3 +471,5 @@
 
 revArc a = within a rev
 
+e :: Int -> Int -> Pattern b -> Pattern b
+e n k p = (flip const) <$> (filterValues (== True) $ listToPat $ bjorklund (n,k)) <*> p
diff --git a/Sound/Tidal/Strategies.hs b/Sound/Tidal/Strategies.hs
--- a/Sound/Tidal/Strategies.hs
+++ b/Sound/Tidal/Strategies.hs
@@ -42,6 +42,7 @@
 samples :: Applicative f => f String -> f Int -> f String
 samples p p' = pick <$> p <*> p'
 
+
 {-
 scrumple :: Time -> Pattern a -> Pattern a -> Pattern a
 scrumple o p p' = p'' -- overlay p (o ~> p'')
@@ -108,6 +109,15 @@
            newEvent :: OscMap -> (Int, Arc) -> Event OscMap
            newEvent v (i, a) = (a,a,Map.insert (param dirt "end") (Just $ OSC.FD.float ((fromIntegral $ i+1)/(fromIntegral n))) $ Map.insert (param dirt "begin") (Just $ OSC.FD.float ((fromIntegral i)/(fromIntegral n))) v)
 
+gap :: Int -> OscPattern -> OscPattern
+gap n p = Pattern $ \queryA -> concatMap (f queryA) $ arcCycles queryA
+     where f queryA a = concatMap (chopEvent queryA) (arc p a)
+           chopEvent (queryS, queryE) (a,a',v) = map (newEvent v) $ filter (\(_, (s,e)) -> not $ or [e < queryS, s >= queryE]) (enumerate $ everyOther $ chopArc a n)
+           newEvent :: OscMap -> (Int, Arc) -> Event OscMap
+           newEvent v (i, a) = (a,a,Map.insert (param dirt "end") (Just $ OSC.FD.float ((fromIntegral $ i+1)/(fromIntegral n))) $ Map.insert (param dirt "begin") (Just $ OSC.FD.float ((fromIntegral i)/(fromIntegral n))) v)
+           everyOther (x:(y:xs)) = x:(everyOther xs)
+           everyOther xs = xs
+
 chopArc :: Arc -> Int -> [Arc]
 chopArc (s, e) n = map (\i -> ((s + (e-s)*(fromIntegral i/fromIntegral n)), s + (e-s)*((fromIntegral $ i+1)/fromIntegral n))) [0 .. n-1]
 {-
@@ -129,3 +139,6 @@
 --               where wrapAtCycle f t' = sam t' + cyclePos (f t')
 --                     wrappedPlus = wrapAtCycle (+t)
 
+
+en :: [(Int, Int)] -> Pattern String -> Pattern String
+en ns p = stack $ map (\(i, (k, n)) -> e k n (samples p (pure i))) $ enumerate ns
diff --git a/tidal.cabal b/tidal.cabal
--- a/tidal.cabal
+++ b/tidal.cabal
@@ -1,5 +1,5 @@
 name:                tidal
-version:             0.4.15
+version:             0.4.16
 synopsis:            Pattern language for improvised music
 -- description:         
 homepage:            http://yaxu.org/tidal/
@@ -28,4 +28,4 @@
                        Sound.Tidal.Context
                        Sound.Tidal.Utils
 
-  Build-depends: base < 5, process, parsec, hosc > 0.13, hashable, colour, containers, time, websockets > 0.8, text, mtl >=2.1, transformers, mersenne-random-pure64,binary, bytestring
+  Build-depends: base < 5, process, parsec, hosc > 0.13, hashable, colour, containers, time, websockets > 0.8, text, mtl >=2.1, transformers, mersenne-random-pure64,binary, bytestring, hmt
