diff --git a/src/Temporal/Music/Notation/Local/Western.hs b/src/Temporal/Music/Notation/Local/Western.hs
deleted file mode 100644
--- a/src/Temporal/Music/Notation/Local/Western.hs
+++ /dev/null
@@ -1,367 +0,0 @@
--- | Names specific to western music tradition
-module Temporal.Music.Notation.Local.Western(
-    
-    -- * Pitch
-    
-    -- ** Scales
-    eqt, pyth, 
-    hind, hindFs, hindGb,
-    major, minor,
-    
-    -- ** Tone constants
-    -- | 'c' corresponds to 0, 'db' and 'cs' to 1 etc.
-	c, d, e, f, g, a, b,
-	cs, ds, es, fs, gs, as, bs,
-	cb, db, eb, fb, gb, ab, bb,
-    
-    -- ** Intervals
-    
-    -- *** pure intervals as factors
-    pureOctave, pureFifth, pureForth, pureMajorThird,
-        pureMinorThird, pureWholeTone, pureHalfTone, pureMajorSixth,
-        pureMinorSixth, pureMajorSeventh, pureMinorSeventh, 
-
-    -- *** in steps for 12 tone scale
-    
-    majorSeventh, minorSeventh, majorSixth, minorSixth,
-        fifth, tritone, forth, majorThird, 
-        minorThird, wholeTone, halfTone, 
-    
-    -- * Volume
-    -- ** Levels
-    -- | Dynamics values form 8-level equally spaced grid. 
-    -- They are from quietest
-    -- to loudest: piano pianissimo (ppp), pianissimo (pp), piano (p),
-    -- mezzo piano (mp), mezzo forte (mf), forte (f), fortissimo (ff),
-    -- forte fortissimo (fff).
-    Dynamics,
-    pianoPianissimo, pianissimo, piano, mezzoPiano,
-    mezzoForte, forte, fortissimo, forteFortissimo,
-
-    -- ** short-cuts
-    pppl, ppl, pl, mpl, mfl, fl, ffl, fffl,
-
-    -- ** Envelops
-    dim, cresc, 
-
-    -- ** Volume level constants
-    
-    -- * Score    
-    -- ** Forms    
-    rondo, reprise, 
-    
-    -- ** Tempo
-    -- | Tempo terms specify not a rigid value but tempo range. So all
-    -- terms are functions from relative power of term (it's value
-    -- of type Double from 0 to 1) to some tempo value. Zero means
-    -- lowest value from tempo range and one means highest value.
-    Tempo, 
-	lento, largo, larghetto, grave, adagio, adagietto,
-    andante, andantino, moderato, allegretto,
-    allegro, vivace, presto, prestissimo,
-
-    -- * Note
-    NoteW, DrumW,
-    Note(..), Drum,    
-    absNote, absDrum,
-    
-    -- ** Rests    
-    bnr, wnr, qnr, hnr, enr, snr, tnr, 
-    dbnr, dwnr, dqnr, dhnr, denr, dsnr, dtnr,
-    
-    -- ** Notes
-    
-    bn, wn, hn, qn, en, sn, tn, 
-    dbn, dwn, dhn, dqn, den, dsn, dtn,
-    
-    -- ** Drums
-    bd, wd, hd, qd, ed, sd, td, 
-    dbd, dwd, dhd, dqd, ded, dsd, dtd
-) where
-
-import Temporal.Music.Notation
-
-import Temporal.Music.Notation.Local.Scales(
-        eqt, pyth, hind, hindFs, hindGb,
-        major, minor)
-
-import Temporal.Music.Notation.Note(Note(..), Drum,
-    absNote, absDrum,
-    bnr, wnr, qnr, hnr, enr, snr, tnr, 
-    dbnr, dwnr, dqnr, dhnr, denr, dsnr, dtnr) 
-
-import qualified Temporal.Music.Notation.Note as N
-
--------------------------------------------
--- tones
-
-c, d, e, f, g, a, b, 
-    cs, ds, es, fs, gs, as, bs,
-    cb, db, eb, fb, gb, ab, bb :: Tone N12
-
-c    = 0
-cs   = 1
-d    = 2
-ds   = 3
-e    = 4
-f    = 5
-fs   = 6
-g    = 7
-gs   = 8
-a    = 9
-as   = 10
-b    = 11
-
-bs   = c
-es   = f
-
-cb   = b
-db   = cs
-eb   = ds
-fb   = e
-gb   = fs
-ab   = gs
-bb   = as
-
----------------------------------------------------------
--- intervals
-
-pureOctave, pureFifth, pureForth, pureMajorThird,
-    pureMinorThird, pureWholeTone, pureHalfTone, pureMajorSixth,
-    pureMinorSixth, pureMajorSeventh, pureMinorSeventh :: Fractional a => a
-
-pureOctave = 2
-pureFifth  = 3/2
-pureForth  = 4/3
-pureMajorThird = 5/4
-pureMinorThird = 6/5
-pureWholeTone = 9/8
-pureHalfTone = 25/24
-pureMajorSixth = 5/3
-pureMinorSixth = 8/5
-pureMajorSeventh = 48/25
-pureMinorSeventh = 16/9
-
-
-majorSeventh, minorSeventh, majorSixth, minorSixth,
-    fifth, tritone, forth, majorThird, 
-    minorThird, wholeTone, halfTone :: Step
-
-
-majorSeventh = 11
-minorSeventh = 10
-majorSixth = 9
-minorSixth = 8
-fifth = 7
-tritone = 6
-forth = 5
-majorThird = 4
-minorThird = 3
-wholeTone = 2
-halfTone = 1
-
-
----------------------------------------
--- volume levels
-
-
-type Dynamics = Int
-
-pianoPianissimo :: Dynamics
-pianoPianissimo = 0
-
-pianissimo :: Dynamics
-pianissimo = 1
-
-piano :: Dynamics
-piano = 2
-
-mezzoPiano :: Dynamics
-mezzoPiano = 3
-
-mezzoForte :: Dynamics
-mezzoForte = 4
-
-forte :: Dynamics
-forte = 5
-
-fortissimo :: Dynamics
-fortissimo = 6
-
-forteFortissimo :: Dynamics
-forteFortissimo = 7
-
-
--- short-cuts
-
-pppl, ppl, pl, mpl, mfl, fl, ffl, fffl :: LevelFunctor a => a -> a
-
-pppl = setLevel pianoPianissimo
-ppl  = setLevel pianissimo
-pl   = setLevel piano
-mpl  = setLevel mezzoPiano
-mfl  = setLevel mezzoForte
-fl   = setLevel forte
-ffl  = setLevel fortissimo
-fffl = setLevel forteFortissimo
-
--- | diminuendo
-dim :: LevelFunctor a => Accent -> Score a -> Score a
-dim v = dynamic ((-v) *)
-
--- | crescendo
-cresc :: LevelFunctor a => Accent -> Score a -> Score a
-cresc v = dynamic (v * )
-
----------------------------------------
--- forms
-
--- | rondo form
---
--- >rondo a b c = line [a, b, a, c, a]
-rondo :: Score a -> Score a -> Score a -> Score a
-rondo a b c = line [a, b, a, c, a]
-
--- | reprise form
---
--- >reprise a b1 b2 = line [a, b1, a, b2]
-reprise :: Score a -> Score a -> Score a -> Score a
-reprise a b c = line [a, b, a, c]
-
----------------------------------------
--- tempo
-
-type Tempo = Double
-
-largoRange, larghettoRange, 
-	adagioRange, adagiettoRange, 
-    andanteRange, andantinoRange,
-	moderatoRange, allegroRange,
-    allegrettoRange, vivaceRange,
-	prestoRange, prestissimoRange :: (Double, Double)
-
-largoRange       = ( 40, 60) 
-larghettoRange   = ( 60, 66) 
-adagioRange      = ( 66, 76)
-adagiettoRange   = ( 70, 80)
-andanteRange     = ( 76, 80)
-andantinoRange   = ( 80,100)
-moderatoRange    = (101,110)
-allegrettoRange  = (115,125)
-allegroRange     = (120,139)
-vivaceRange      = (135,160)
-prestoRange      = (168,200)
-prestissimoRange = (200,230)
-
-getTempo :: (Tempo, Tempo) -> Double -> Tempo
-getTempo (a, b) x = a + (b - a) * x
-
--- | very slow (40-60 bpm), like largo
-lento :: Double -> Tempo
-lento       = largo
-
--- | very slow (40-60 bpm)
-largo :: Double -> Tempo
-largo       = getTempo largoRange
-
--- | rather broadly (60-66 bpm)
-larghetto :: Double -> Tempo
-larghetto   = getTempo larghettoRange
-
--- | slow and sloemn (60 - 66 bpm)
-grave :: Double -> Tempo
-grave = larghetto
-
--- | slow and stately (literally "at ease") (66-76 bpm)
-adagio :: Double -> Tempo
-adagio      = getTempo adagioRange
-
--- | rather slow (70-80 bpm)
-adagietto :: Double -> Tempo 
-adagietto = getTempo adagiettoRange
-
--- | at awalking pace (76-80 bpm)
-andante :: Double -> Tempo 
-andante     = getTempo andanteRange
-
--- | slightly faster then andante (80-100 bpm)
-andantino :: Double -> Tempo 
-andantino     = getTempo andantinoRange
-
--- | moderately (101-110 bpm)
-moderato :: Double -> Tempo
-moderato    = getTempo moderatoRange
-
--- | moderately fast (115-125 bpm)
-allegretto :: Double -> Tempo
-allegretto     = getTempo allegrettoRange
-
--- | fast, at 'march tempo' (120-139 bpm)
-allegro :: Double -> Tempo
-allegro     = getTempo allegroRange
-
--- | lively and fast (135-160 bpm)
-vivace :: Double -> Tempo
-vivace = getTempo vivaceRange
-
--- | very fast (168-200 bpm)
-presto :: Double -> Tempo
-presto      = getTempo prestoRange
-
--- | extremely fast (200 - 230 bpm)
-prestissimo :: Double -> Tempo
-prestissimo = getTempo prestissimoRange
-
--- Note
-
--- | Western 'Note' (eight volume levels and twelve tones)
-type NoteW = Note N8 N12
-
--- | Western 'Drum' note (eight volume levels)
-type DrumW = Drum N8
-
--- shortcuts
-
--- notes
-bn, wn, hn, qn, en, sn, tn, 
-    dbn, dwn, dhn, dqn, den, dsn, dtn :: 
-    Tone N12 -> Score NoteW
-
-bn = N.bn
-wn = N.wn
-hn = N.hn
-qn = N.qn
-en = N.en
-sn = N.sn
-tn = N.tn
-dbn = N.dbn
-dwn = N.dwn
-dhn = N.dhn
-dqn = N.dqn
-den = N.den
-dsn = N.dsn
-dtn = N.dtn
-
--- drums
-
-bd, wd, hd, qd, ed, sd, td, 
-    dbd, dwd, dhd, dqd, ded, dsd, dtd :: 
-    Accent -> Score DrumW
-
-bd = N.bd
-wd = N.wd
-hd = N.hd
-qd = N.qd
-ed = N.ed
-sd = N.sd
-td = N.td
-dbd = N.dbd
-dwd = N.dwd
-dhd = N.dhd
-dqd = N.dqd
-ded = N.ded
-dsd = N.dsd
-dtd = N.dtd
-
-
-
diff --git a/src/Temporal/Music/Western.hs b/src/Temporal/Music/Western.hs
new file mode 100644
--- /dev/null
+++ b/src/Temporal/Music/Western.hs
@@ -0,0 +1,251 @@
+-- | Names specific to western music tradition
+module Temporal.Music.Western(
+    -- * Volume
+    -- ** Levels
+    -- | Dynamics values form 8-level equally spaced grid. 
+    -- They are from quietest
+    -- to loudest: piano pianissimo (ppp), pianissimo (pp), piano (p),
+    -- mezzo piano (mp), mezzo forte (mf), forte (f), fortissimo (ff),
+    -- forte fortissimo (fff).
+    Dynamics(..),
+
+    -- ** short-cuts
+    ppp', pp', p', mp', mf', f', ff', fff',
+
+    -- ** Envelops
+    dim, cresc, 
+
+    -- ** Volume level constants
+    
+    -- * Score    
+    -- ** Forms    
+    rondo, reprise, 
+    
+    -- ** Tempo
+    -- | Tempo terms specify not a rigid value but tempo range. So all
+    -- terms are functions from relative power of term (it's value
+    -- of type Double from 0 to 1) to some tempo value. Zero means
+    -- lowest value from tempo range and one means highest value.
+    Tempo, 
+	lento, largo, larghetto, grave, adagio, adagietto,
+    andante, andantino, moderato, allegretto,
+    allegro, vivace, presto, prestissimo,
+
+    -- * Note
+    NoteW, DrumW,
+    Note(..), Drum,    
+    absNote, absDrum,
+    
+    -- ** Rests    
+    bnr, wnr, qnr, hnr, enr, snr, tnr, 
+    dbnr, dwnr, dqnr, dhnr, denr, dsnr, dtnr,
+    
+    -- ** Notes
+    
+    bn, wn, hn, qn, en, sn, tn, 
+    dbn, dwn, dhn, dqn, den, dsn, dtn,
+    
+    -- ** Drums
+    bd, wd, hd, qd, ed, sd, td, 
+    dbd, dwd, dhd, dqd, ded, dsd, dtd
+) where
+
+import Temporal.Music.Notation
+
+
+
+import Temporal.Music.Notation.Note(Note(..), Drum,
+    absNote, absDrum,
+    bnr, wnr, qnr, hnr, enr, snr, tnr, 
+    dbnr, dwnr, dqnr, dhnr, denr, dsnr, dtnr) 
+
+import qualified Temporal.Music.Notation.Note as N
+
+
+
+---------------------------------------
+-- volume levels
+
+-- | Dynamics levels. Default defined volume 
+-- defined in 'Vol' class is (1e-5, 1).
+data Dynamics = PPP | PP | P | MP | MF | F | FF | FFF
+    deriving (Show, Eq, Enum, Bounded)
+
+instance Seg Dynamics
+
+instance Vol Dynamics where
+    volume = Volume (1e-5, 1)
+
+-- short-cuts
+
+ppp', pp', p', mp', mf', f', ff', fff' :: LevelFunctor a => a -> a
+
+ppp' = setLevel PPP
+pp'  = setLevel PP 
+p'   = setLevel P
+mp'  = setLevel MP
+mf'  = setLevel MF
+f'   = setLevel F
+ff'  = setLevel FF
+fff' = setLevel FFF
+
+-- | diminuendo
+dim :: LevelFunctor a => Accent -> Score a -> Score a
+dim v = dynamics ((-v) *)
+
+-- | crescendo
+cresc :: LevelFunctor a => Accent -> Score a -> Score a
+cresc v = dynamics (v * )
+
+---------------------------------------
+-- forms
+
+-- | rondo form
+--
+-- >rondo a b c = line [a, b, a, c, a]
+rondo :: Score a -> Score a -> Score a -> Score a
+rondo a b c = line [a, b, a, c, a]
+
+-- | reprise form
+--
+-- >reprise a b1 b2 = line [a, b1, a, b2]
+reprise :: Score a -> Score a -> Score a -> Score a
+reprise a b c = line [a, b, a, c]
+
+---------------------------------------
+-- tempo
+
+type Tempo = Double
+
+largoRange, larghettoRange, 
+	adagioRange, adagiettoRange, 
+    andanteRange, andantinoRange,
+	moderatoRange, allegroRange,
+    allegrettoRange, vivaceRange,
+	prestoRange, prestissimoRange :: (Double, Double)
+
+largoRange       = ( 40, 60) 
+larghettoRange   = ( 60, 66) 
+adagioRange      = ( 66, 76)
+adagiettoRange   = ( 70, 80)
+andanteRange     = ( 76, 80)
+andantinoRange   = ( 80,100)
+moderatoRange    = (101,110)
+allegrettoRange  = (115,125)
+allegroRange     = (120,139)
+vivaceRange      = (135,160)
+prestoRange      = (168,200)
+prestissimoRange = (200,230)
+
+getTempo :: (Tempo, Tempo) -> Double -> Tempo
+getTempo (a, b) x = a + (b - a) * x
+
+-- | very slow (40-60 bpm), like largo
+lento :: Double -> Tempo
+lento       = largo
+
+-- | very slow (40-60 bpm)
+largo :: Double -> Tempo
+largo       = getTempo largoRange
+
+-- | rather broadly (60-66 bpm)
+larghetto :: Double -> Tempo
+larghetto   = getTempo larghettoRange
+
+-- | slow and sloemn (60 - 66 bpm)
+grave :: Double -> Tempo
+grave = larghetto
+
+-- | slow and stately (literally "at ease") (66-76 bpm)
+adagio :: Double -> Tempo
+adagio      = getTempo adagioRange
+
+-- | rather slow (70-80 bpm)
+adagietto :: Double -> Tempo 
+adagietto = getTempo adagiettoRange
+
+-- | at awalking pace (76-80 bpm)
+andante :: Double -> Tempo 
+andante     = getTempo andanteRange
+
+-- | slightly faster then andante (80-100 bpm)
+andantino :: Double -> Tempo 
+andantino     = getTempo andantinoRange
+
+-- | moderately (101-110 bpm)
+moderato :: Double -> Tempo
+moderato    = getTempo moderatoRange
+
+-- | moderately fast (115-125 bpm)
+allegretto :: Double -> Tempo
+allegretto     = getTempo allegrettoRange
+
+-- | fast, at 'march tempo' (120-139 bpm)
+allegro :: Double -> Tempo
+allegro     = getTempo allegroRange
+
+-- | lively and fast (135-160 bpm)
+vivace :: Double -> Tempo
+vivace = getTempo vivaceRange
+
+-- | very fast (168-200 bpm)
+presto :: Double -> Tempo
+presto      = getTempo prestoRange
+
+-- | extremely fast (200 - 230 bpm)
+prestissimo :: Double -> Tempo
+prestissimo = getTempo prestissimoRange
+
+-- Note
+
+-- | Western 'Note' (eight volume levels and twelve tones)
+type NoteW p a = Note Dynamics p a
+
+-- | Western 'Drum' note (eight volume levels)
+type DrumW a = Drum Dynamics a
+
+-- shortcuts
+
+-- notes
+bn, wn, hn, qn, en, sn, tn, 
+    dbn, dwn, dhn, dqn, den, dsn, dtn :: 
+    Pch p => Tone p -> Score (NoteW p a)
+
+bn = N.bn
+wn = N.wn
+hn = N.hn
+qn = N.qn
+en = N.en
+sn = N.sn
+tn = N.tn
+dbn = N.dbn
+dwn = N.dwn
+dhn = N.dhn
+dqn = N.dqn
+den = N.den
+dsn = N.dsn
+dtn = N.dtn
+
+-- drums
+
+bd, wd, hd, qd, ed, sd, td, 
+    dbd, dwd, dhd, dqd, ded, dsd, dtd :: 
+    Accent -> Score (DrumW a)
+
+bd = N.bd
+wd = N.wd
+hd = N.hd
+qd = N.qd
+ed = N.ed
+sd = N.sd
+td = N.td
+dbd = N.dbd
+dwd = N.dwd
+dhd = N.dhd
+dqd = N.dqd
+ded = N.ded
+dsd = N.dsd
+dtd = N.dtd
+
+
+
diff --git a/src/Temporal/Music/Western/BohlenPierce.hs b/src/Temporal/Music/Western/BohlenPierce.hs
new file mode 100644
--- /dev/null
+++ b/src/Temporal/Music/Western/BohlenPierce.hs
@@ -0,0 +1,64 @@
+-- | Bohlen-Pierce tones
+module Temporal.Music.Western.BohlenPierce(
+        -- * Tones
+        StepBP(..),
+
+        c, cs, cb, d, ds, db, e, es, eb,
+        f, fs, fb, g, gs, gb, h, hs, hb, 
+        j, js, jb, a, as, ab, b, bs, bb,
+
+        -- * Scales
+        eqBP, justBP
+)    
+where
+
+import Temporal.Music.Notation.Seg(Seg)
+import Temporal.Music.Notation.Pitch
+import Temporal.Music.Notation.Scales(eqBP, justBP)
+
+-- | Tones for Bohlen-Pierce 13-tone scale. 
+-- Default scale defined in 'Pch' class is equal 
+-- temperament Bohlen-Pierce scale
+data StepBP = 
+      C  | Cs | D  | E  | F  | Fs | G 
+    | H  | Hs | J  | A  | As | B
+    deriving (Enum, Bounded, Eq, Show)
+
+instance Seg StepBP
+
+instance Pch StepBP where
+    pitch = Pitch (eqBP 0 c1)
+
+c, cs, cb, d, ds, db, e, es, eb,
+    f, fs, fb, g, gs, gb, h, hs, hb, 
+    j, js, jb, a, as, ab, b, bs, bb :: Tone StepBP
+
+c  = tone C  
+cs = tone Cs 
+d  = tone D 
+e  = tone E
+f  = tone F
+fs = tone Fs
+g  = tone G
+h  = tone H
+hs = tone Hs
+j  = tone J
+a  = tone A
+as = tone As
+b  = tone B
+
+cb = b
+ds = e
+db = cs
+es = f
+eb = d
+fb = e
+gs = h
+gb = fs
+hb = g
+js = a
+jb = hs
+ab = j
+
+bb = as
+bs = c
diff --git a/src/Temporal/Music/Western/TwelveTone.hs b/src/Temporal/Music/Western/TwelveTone.hs
new file mode 100644
--- /dev/null
+++ b/src/Temporal/Music/Western/TwelveTone.hs
@@ -0,0 +1,207 @@
+module Temporal.Music.Western.TwelveTone(
+    -- * 12-tones
+    -- | Chromatic scales
+          
+    -- ** Tones
+    Chromatic(..),
+    c, d, e, f, g, a, b, 
+    cs, ds, es, fs, gs, as, bs,
+    cf, df, ef, ff, gf, af, bf,
+
+    -- ** Scales
+    eqt, pyth, 
+    hind, hindFs, hindGb,
+    {-
+    -- * 7-tones
+    
+    -- | Diatonic scales
+
+    -- ** Tones
+    Diatonic(..),
+    d0, d1, d2, d3, d4, d5, d6,
+
+    -- ** Scales
+
+    -- | Here scales are scale functions. The take chromatic scales
+    -- and produce 7-tone subscales.
+    major, minor,
+    ionian, dorian, phrygian, lydian, 
+	mixolydian, aeolian, locrian,
+
+    -- * 5-tones    
+    
+    -- | Pentatonic scales
+    
+    -- ** Tones
+    Pentatonic(..),
+    p0, p1, p2, p3, p4, 
+    -}
+    
+    -- ** Scales
+
+    -- | Here scales are scale functions. The take chromatic scales
+    -- and produce 5-tone subscales.
+    minor5, major5, bluesMinor5, bluesMajor5, egyptian5,
+
+    -- * Intervals
+    
+    -- ** pure intervals as factors
+    pureOctave, pureFifth, pureForth, pureMajorThird,
+        pureMinorThird, pureWholeTone, pureHalfTone, pureMajorSixth,
+        pureMinorSixth, pureMajorSeventh, pureMinorSeventh, 
+
+    -- ** in steps for 12 tone scale
+    
+    majorSeventh, minorSeventh, majorSixth, minorSixth,
+        fifth, tritone, forth, majorThird, 
+        minorThird, wholeTone, halfTone 
+
+    )
+where
+
+import Temporal.Music.Notation.Seg(Seg)
+--import Temporal.Music.Notation.Seg(Seg, IntSeg(..), N5, N7)
+import Temporal.Music.Notation.Pitch
+
+import Temporal.Music.Notation.Scales(
+        eqt, pyth, hind, hindFs, hindGb,
+        minor5, major5, bluesMinor5, bluesMajor5, egyptian5,
+        major, minor, ionian, dorian, phrygian, lydian, 
+	    mixolydian, aeolian, locrian)
+
+-- | 12-tone scale. Default scale defined in 'Pch' class 
+-- is equal temperament.
+data Chromatic = 
+      C  | Cs | D  | Ds | E  | F 
+    | Fs | G  | Gs | A  | As | B
+    deriving (Enum, Bounded, Eq, Show)
+
+instance Seg Chromatic
+
+instance Pch Chromatic where
+    pitch = Pitch (eqt 0 c1)
+
+-- tones
+
+c, d, e, f, g, a, b, 
+    cs, ds, es, fs, gs, as, bs,
+    cf, df, ef, ff, gf, af, bf :: Tone Chromatic
+
+c    = tone C
+cs   = tone Cs
+d    = tone D
+ds   = tone Ds
+e    = tone E
+f    = tone F
+fs   = tone Fs
+g    = tone G
+gs   = tone Gs
+a    = tone A
+as   = tone As
+b    = tone B
+
+bs   = c
+es   = f
+
+cf   = b
+df   = cs
+ef   = ds
+ff   = e
+gf   = fs
+af   = gs
+bf   = as
+
+{-
+-- | 5-tone scale. Default scale defined in 'Pch' class 
+-- is minor pentatonic on equal temerament.
+newtype Pentatonic = Pentatonic { 
+    runPentatonic :: IntSeg N5 
+    } deriving (Show, Eq, Bounded)
+
+instance Enum Pentatonic where
+    toEnum = Pentatonic . toEnum
+    fromEnum = fromEnum . runPentatonic
+
+instance Seg Pentatonic
+
+instance Pch Pentatonic where
+    pitch = Pitch (minor5 $ eqt 0 c1)
+    
+
+p0, p1, p2, p3, p4 :: Tone Pentatonic
+
+p0 = pn 0
+p1 = pn 1
+p2 = pn 2
+p3 = pn 3
+p4 = pn 4
+
+pn :: Int -> Tone Pentatonic
+pn = tone . Pentatonic . IntSeg
+
+ 
+-- | 7-tone scale. Default scale defined in 'Pch' class
+-- is C major on equal temperament.
+newtype Diatonic = Diatonic { 
+    runDiatonic :: IntSeg N7 
+    } deriving (Show, Eq, Bounded)
+
+instance Enum Diatonic where
+    toEnum = Diatonic . toEnum
+    fromEnum = fromEnum . runDiatonic
+
+instance Seg Diatonic
+
+instance Pch Diatonic where
+    pitch = Pitch (major $ eqt 0 c1)
+
+d0, d1, d2, d3, d4, d5, d6 :: Tone Diatonic
+
+d0 = dn 0
+d1 = dn 1
+d2 = dn 2
+d3 = dn 3
+d4 = dn 4
+d5 = dn 5
+d6 = dn 6
+
+dn :: Int -> Tone Diatonic
+dn = tone . Diatonic . IntSeg
+-}
+---------------------------------------------------------
+-- intervals
+
+pureOctave, pureFifth, pureForth, pureMajorThird,
+    pureMinorThird, pureWholeTone, pureHalfTone, pureMajorSixth,
+    pureMinorSixth, pureMajorSeventh, pureMinorSeventh :: Fractional a => a
+
+pureOctave = 2
+pureFifth  = 3/2
+pureForth  = 4/3
+pureMajorThird = 5/4
+pureMinorThird = 6/5
+pureWholeTone = 9/8
+pureHalfTone = 25/24
+pureMajorSixth = 5/3
+pureMinorSixth = 8/5
+pureMajorSeventh = 48/25
+pureMinorSeventh = 16/9
+
+
+majorSeventh, minorSeventh, majorSixth, minorSixth,
+    fifth, tritone, forth, majorThird, 
+    minorThird, wholeTone, halfTone :: Step
+
+
+majorSeventh = 11
+minorSeventh = 10
+majorSixth = 9
+minorSixth = 8
+fifth = 7
+tritone = 6
+forth = 5
+majorThird = 4
+minorThird = 3
+wholeTone = 2
+halfTone = 1
+
diff --git a/temporal-music-notation-western.cabal b/temporal-music-notation-western.cabal
--- a/temporal-music-notation-western.cabal
+++ b/temporal-music-notation-western.cabal
@@ -1,5 +1,5 @@
 Name:          temporal-music-notation-western
-Version:       0.1
+Version:       0.1.2
 Cabal-Version: >= 1.2
 License:       BSD3
 License-file:  LICENSE
@@ -17,7 +17,9 @@
 Library
   Build-Depends:
         base >= 4, base < 5,
-        temporal-music-notation
+        temporal-music-notation >= 0.1.2
   Hs-Source-Dirs:      src/
   Exposed-Modules:
-        Temporal.Music.Notation.Local.Western
+        Temporal.Music.Western
+        Temporal.Music.Western.TwelveTone
+        Temporal.Music.Western.BohlenPierce
