diff --git a/Data/Forest/StructuredPaired.hs b/Data/Forest/StructuredPaired.hs
new file mode 100644
--- /dev/null
+++ b/Data/Forest/StructuredPaired.hs
@@ -0,0 +1,82 @@
+
+-- | A semi-specialized forest structure with the following atomic elements:
+-- (i) unstructured regions of type @a@, (ii) binary paired regions of type
+-- @(b,b)@ with a recursing tree (or insertion between the two @b@'s), (iii)
+-- juxtaposition of two elements, and (iv) an empty structure.
+
+module Data.Forest.StructuredPaired where
+
+import Control.Lens
+import Data.Bifoldable
+import Data.Bifunctor
+import Data.Bitraversable
+import Data.Monoid
+import GHC.Generics (Generic)
+
+import Data.Forest.Static
+
+
+
+-- | A structured forest.
+
+data SPForest r t
+  -- | An (unstructured) region with the structured forest. In case @r@ forms a
+  -- monoid @SPJ (SPR a) (SPR b) `equiv` SPR (a<>b)@ should hold.
+  = SPR r
+  -- | A tree within the forest brackets the forest on the left and right side
+  -- with elements of type @t@.
+  | SPT t (SPForest r t) t
+  -- | Juxtaposition of two forests. This allows for simple concatenation of
+  -- forests. In particular, there is no particular position, while lists
+  -- prefer @x:xs@ vs @xs++[x]@.
+  | SPJ [SPForest r t]
+  -- | An empty forest. @SPJ SPE SPE `equiv` SPE@ should hold.
+  | SPE
+  deriving (Read,Show,Eq,Ord,Generic)
+makePrisms ''SPForest
+
+instance Bifunctor SPForest where
+  first f = \case
+    SPR r     → SPR (f r)
+    SPT l t r → SPT l (first f t) r
+    SPJ xs    → SPJ (map (first f) xs)
+    SPE       → SPE
+  {-# Inlinable first #-}
+  second g = \case
+    SPR r     → SPR r
+    SPT l t r → SPT (g l) (second g t) (g r)
+    SPJ xs    → SPJ (map (second g) xs)
+    SPE       → SPE
+  {-# Inlinable second #-}
+  bimap f g = \case
+    SPR r     → SPR (f r)
+    SPT l t r → SPT (g l) (bimap f g t) (g r)
+    SPJ xs    → SPJ (map (bimap f g) xs)
+    SPE       → SPE
+  {-# Inlinable bimap #-}
+
+instance Bifoldable SPForest where
+  bifoldMap f g = \case
+    SPR r     → f r
+    SPT l t r → g l <> bifoldMap f g t <> g r
+    SPJ xs    → error "Bifoldable" -- mconcatMap (bifoldMap f g) xs
+    SPE       → mempty
+  {-# Inlinable bifoldMap #-}
+
+instance Bitraversable SPForest where
+  bitraverse f g = \case
+    SPR r     → SPR <$> f r
+    SPT l t r → SPT <$> g l <*> bitraverse f g t <*> g r
+    SPJ xs    → error "Bitraversable" -- SPJ <$> bitraverse f g l <*> bitraverse f g r
+    SPE       → pure SPE
+  {-# Inlinable bitraverse #-}
+
+
+
+-- | Structured Forests can be transformed into static forests.
+--
+-- TODO types involved!
+
+toStaticForest ∷ SPForest r t → Forest p v a
+toStaticForest = undefined
+
diff --git a/ForestStructures.cabal b/ForestStructures.cabal
--- a/ForestStructures.cabal
+++ b/ForestStructures.cabal
@@ -1,7 +1,7 @@
 name:           ForestStructures
-version:        0.0.0.2
-author:         Christian Hoener zu Siederdissen, Sarah Berkemer, 2015-2017
-copyright:      Christian Hoener zu Siederdissen, 2015-2017
+version:        0.0.1.0
+author:         Christian Hoener zu Siederdissen 2015-2018, Sarah Berkemer, 2015-2017
+copyright:      Christian Hoener zu Siederdissen, 2015-2018
 homepage:       https://github.com/choener/ForestStructures
 bug-reports:    https://github.com/choener/ForestStructures/issues
 maintainer:     choener@bioinf.uni-leipzig.de
@@ -11,7 +11,7 @@
 build-type:     Simple
 stability:      experimental
 cabal-version:  >= 1.10.0
-tested-with:    GHC == 7.10.3, GHC == 8.0.2
+tested-with:    GHC == 8.4.4
 synopsis:       Tree- and forest structures
 description:
                 This library provides both static and dynamic tree and forest
@@ -31,27 +31,34 @@
 
 library
   build-depends: base                   >= 4.7      &&  < 5.0
+               , bifunctors             >= 5.0
                , containers             >= 0.5
                , fgl                    >= 5.5
+               , lens                   >= 4.0
                , QuickCheck             >= 2.0
                , unordered-containers   >= 0.2
                , vector                 >= 0.10
                , vector-th-unbox        >= 0.2
   exposed-modules:
     Data.Forest.Static
+    Data.Forest.StructuredPaired
   default-language:
     Haskell2010
   default-extensions: BangPatterns
                     , AllowAmbiguousTypes
                     , DataKinds
+                    , DeriveGeneric
                     , FlexibleContexts
                     , GADTs
                     , KindSignatures
+                    , LambdaCase
                     , OverloadedStrings
                     , RankNTypes
                     , RecordWildCards
                     , StandaloneDeriving
+                    , TemplateHaskell
                     , UndecidableInstances
+                    , UnicodeSyntax
   ghc-options:
     -O2
 
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,8 @@
+0.0.1.0
+-------
+
+- structured forests, mostly for secondary structures of RNA
+
 0.0.0.2
 -------
 
