diff --git a/csound-expression-dynamic.cabal b/csound-expression-dynamic.cabal
--- a/csound-expression-dynamic.cabal
+++ b/csound-expression-dynamic.cabal
@@ -1,5 +1,5 @@
 Name:          csound-expression-dynamic
-Version:       0.1.5
+Version:       0.1.6
 Cabal-Version: >= 1.6
 License:       BSD3
 License-file:  LICENSE
diff --git a/src/Csound/Dynamic/Render/Pretty.hs b/src/Csound/Dynamic/Render/Pretty.hs
--- a/src/Csound/Dynamic/Render/Pretty.hs
+++ b/src/Csound/Dynamic/Render/Pretty.hs
@@ -79,15 +79,26 @@
     <>  int tabId 
     <+> int 0 
     <+> (int $ genSize ft)
-    <+> (int $ genId ft) 
+    <+> (ppGenId $ genId ft) 
     <+> (maybe empty (text . show) $ genFile ft)
     <+> (hsep $ map double $ genArgs ft)
 
+ppGenId :: GenId -> Doc
+ppGenId genId = case genId of
+    IntGenId a      -> int a
+    StringGenId a   -> dquotes $ text a
+
 ppInstr :: InstrId -> Doc -> Doc
 ppInstr instrId body = vcat [
-    text "instr" <+> ppInstrId instrId,
+    text "instr" <+> ppInstrHeadId instrId,
     body,
     text "endin"]
+
+ppInstrHeadId :: InstrId -> Doc
+ppInstrHeadId x = case x of
+    InstrId den nom -> int nom <> maybe empty ppAfterDot den 
+    InstrLabel name -> text name
+    where ppAfterDot a = text $ ('.': ) $ reverse $ show a
 
 ppInstrId :: InstrId -> Doc
 ppInstrId x = case x of
diff --git a/src/Csound/Dynamic/Types/Exp.hs b/src/Csound/Dynamic/Types/Exp.hs
--- a/src/Csound/Dynamic/Types/Exp.hs
+++ b/src/Csound/Dynamic/Types/Exp.hs
@@ -10,7 +10,7 @@
     InstrId(..), intInstrId, ratioInstrId, stringInstrId,
     VarType(..), Var(..), Info(..), OpcFixity(..), Rate(..), 
     Signature(..), isInfix, isPrefix,    
-    Prim(..), Gen(..),  
+    Prim(..), Gen(..), GenId(..),
     Inline(..), InlineExp(..), PreInline(..),
     BoolExp, CondInfo, CondOp(..), isTrue, isFalse,    
     NumExp, NumOp(..), Note,    
@@ -248,7 +248,7 @@
 data Prim 
     -- instrument p-arguments
     = P Int 
-    | PString Int       -- >> p-string: 
+    | PString Int       -- >> p-string (read p-string notes at the bottom of the file): 
     | PrimInt Int 
     | PrimDouble Double 
     | PrimString String 
@@ -261,11 +261,14 @@
 -- Gen routine.
 data Gen = Gen 
     { genSize    :: Int
-    , genId      :: Int
+    , genId      :: GenId
     , genArgs    :: [Double]
     , genFile    :: Maybe String
     } deriving (Show, Eq, Ord, Generic)
 
+data GenId = IntGenId Int | StringGenId String
+    deriving (Show, Eq, Ord, Generic)
+
 -- Csound note
 type Note = [Prim]
 
@@ -346,6 +349,7 @@
 instance Hashable NumOp
 
 instance Hashable Gen
+instance Hashable GenId
 instance Hashable Prim
 instance Hashable Rate
 
@@ -358,28 +362,6 @@
 instance Hashable a => Hashable (PrimOr a)
 instance Hashable a => Hashable (RatedExp a)
 instance Hashable InstrId
-
-{-
-instance Hashable
-instance Hashable
-instance Hashable
-instance Hashable
-
-instance Hashable
-instance Hashable
-instance Hashable
-instance Hashable
-
-instance Hashable
-instance Hashable
-instance Hashable
-instance Hashable
-
-instance Hashable
-instance Hashable
-instance Hashable
-instance Hashable
--}
 
 --------------------------------------------------------------
 -- comments
