diff --git a/seqloc.cabal b/seqloc.cabal
--- a/seqloc.cabal
+++ b/seqloc.cabal
@@ -1,5 +1,5 @@
 Name:                seqloc
-Version:             0.5.0.2
+Version:             0.5.1.0
 Cabal-Version:       >= 1.6
 Synopsis:            Handle sequence locations for bioinformatics
 Description:         Handle sequence locations for bioinformatics
diff --git a/src/Bio/SeqLoc/Location.hs b/src/Bio/SeqLoc/Location.hs
--- a/src/Bio/SeqLoc/Location.hs
+++ b/src/Bio/SeqLoc/Location.hs
@@ -52,6 +52,10 @@
   -- 'startPos'.
   endPos :: l -> Pos.Pos
 
+  -- | List of sequence positions in the location, in order from the
+  -- 5' end to the 3' end of the location strand.
+  allPos :: l -> [Pos.Pos]
+
   -- | Extract 'Just' the nucleotide 'SeqLike' for the sequence
   -- location, or 'Nothing' if f any part of the location lies outside
   -- the bounds of the sequence.
@@ -157,6 +161,10 @@
     = case str of
         Plus      -> Pos.Pos (seq5 + len - 1) str
         Minus -> Pos.Pos seq5             str
+  allPos (ContigLoc seq5 len str) 
+    = case str of
+        Plus ->  [ Pos.Pos (seq5+o)         str | o <- [0..(len - 1)] ]
+        Minus -> [ Pos.Pos (seq5+len-(1+o)) str | o <- [0..(len - 1)] ]
   clocInto = clocClocInto
   clocOutof = clocClocOutof
   extend = clocExtend
diff --git a/src/Bio/SeqLoc/SpliceLocation.hs b/src/Bio/SeqLoc/SpliceLocation.hs
--- a/src/Bio/SeqLoc/SpliceLocation.hs
+++ b/src/Bio/SeqLoc/SpliceLocation.hs
@@ -88,6 +88,7 @@
   posOutof pos = posOutofContigs pos . contigs
   startPos = startPos . firstContig
   endPos = endPos . lastContig
+  allPos = concatMap allPos . contigs
   clocInto = slocClocInto
   clocOutof = slocClocOutof
   extend = slocExtend
diff --git a/test/TestMain.hs b/test/TestMain.hs
--- a/test/TestMain.hs
+++ b/test/TestMain.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE ExistentialQuantification #-}
+{-# LANGUAGE ExistentialQuantification, BangPatterns #-}
 module Main
     where
 
@@ -45,6 +45,7 @@
         , T "Contig loc outof/into inverse" property_ContigLocOutofInto
         , T "Contig into based on bounds"   test_Contig_IntoBounds
         , T "Contig outof based on bounds"  test_Contig_OutofBounds
+        , T "Contig allPos/outof equiv"     property_Contig_allPos_outof
         , T "Contig seqData"                property_Contig_seqData
         , T "Contig seqDataPadded"          property_Contig_seqDataPadded
         , T "Contig seqData2"               property_Contig_seqData2
@@ -53,13 +54,14 @@
         , T "Contig fromBoundsStrand"       property_Contig_fromBoundsStrand
         , T "Contig overlaps"               property_Contig_overlaps  
         , T "Contig repr"                   test_Contig_repr
-        
+          
         , T "Loc revCompl"                  test_Loc_Minus
         , T "Loc pos into/outof inverse"    property_LocIntoOutof
         , T "Loc pos outof/into inverse"    property_LocOutofInto
         , T "Loc outof based on bounds"     test_Loc_OutofBounds
         , T "Loc loc outof/into inverse"    property_LocCLocOutofInto
         , T "Loc outof association"         property_LocOutofAssoc
+        , T "Loc allPos/outof equiv"        property_Loc_allPos_outof        
         , T "Loc locOutof"                  property_SpLocOutof
         , T "Loc locOutof valid"            property_SpLocOutofGood
         , T "Loc within"                    property_Loc_Within
@@ -85,9 +87,6 @@
 instance Arbitrary SeqLabel where
     arbitrary = genName
 
-instance Show SeqLabel where
-  show = show . unSeqLabel
-
 test_revCompl :: (Eq s, Stranded s) => s -> Bool
 test_revCompl s = (revCompl . revCompl) s == s
 
@@ -188,6 +187,14 @@
     = let !offset = Pos.offset pos
       in (isJust $ Loc.posOutof pos contig) == (offset >= 0 && offset < Loc.length contig)
 
+property_Contig_allPos_outof :: Loc.ContigLoc -> Property
+property_Contig_allPos_outof contig
+  = forAll (choose (0, fromIntegral $ Loc.length contig - 1)) $ \ioff ->
+  let p = drop ioff $ Loc.allPos contig
+  in and [ not $ null p
+         , Loc.posOutof (Pos.Pos (Pos.Offset $ fromIntegral ioff) Plus) contig == Just (head p)
+         ]
+
 property_Contig_seqData :: Loc.ContigLoc -> Property
 property_Contig_seqData contig
     = forAll (genNonNegOffset >>= genNtByteString . fromIntegral) $ \sequ ->
@@ -312,6 +319,14 @@
                        mapM (flip Loc.clocOutof outerloc) $
                        Loc.toContigs subloc
   in (isJust mOutofContigs) ==> mOutofContigs == mContigsOutof
+
+property_Loc_allPos_outof :: SpLoc.SpliceLoc -> Property
+property_Loc_allPos_outof sploc
+  = forAll (choose (0, fromIntegral $ Loc.length sploc - 1)) $ \ioff ->
+  let p = drop ioff $ Loc.allPos sploc
+  in and [ not $ null p
+         , Loc.posOutof (Pos.Pos (Pos.Offset $ fromIntegral ioff) Plus) sploc == Just (head p)
+         ]
 
 property_Loc_seqData :: SpLoc.SpliceLoc -> Property
 property_Loc_seqData loc
