diff --git a/moe.cabal b/moe.cabal
--- a/moe.cabal
+++ b/moe.cabal
@@ -1,5 +1,5 @@
 Name:                 moe
-Version:              2009.8.26
+Version:              2009.8.28
 Build-type:           Simple
 Synopsis:             html with style
 Description:
@@ -24,4 +24,6 @@
                       Text.HTML.Moe   
                       Text.HTML.Moe.Attribute
                       Text.HTML.Moe.Element
+                      Text.HTML.Moe.DSL.Markdown
+                      Text.HTML.Moe.DSL.Kawaii
                       Text.HTML.Moe.Type
diff --git a/src/Text/HTML/Moe.hs b/src/Text/HTML/Moe.hs
--- a/src/Text/HTML/Moe.hs
+++ b/src/Text/HTML/Moe.hs
@@ -29,13 +29,15 @@
 render_element' :: Int -> Element -> String
 render_element' _ (Raw x)   = x
 
+render_element' _ (Pre x)   = escape x
+
 render_element' n (Data x)  = execWriter - do
   tell - (n * indent_space).times ' '
   tell - escape - x
   tell - "\n"
   
 render_element' n x = execWriter - do
-  tell - indent
+  tell - _indent
   tell - "<" ++ x.T.name ++ ""
   tell - x.attributes.map render_attribute. join_attribute
   tell - ">"
@@ -43,13 +45,15 @@
   
   tell - x.elements.map (render_element' (n+1)) .concat
   
-  tell - indent
+  tell - _indent
   tell - "</" ++ x.T.name ++ ">"
   tell - "\n"
   
   where
     join_attribute xs = xs.map (" " ++) .concat
-    indent = (n * indent_space).times ' '
+    _indent
+      | x.indent = (n * indent_space).times ' '
+      | otherwise = ""
 
 
 render_element :: Element -> String
diff --git a/src/Text/HTML/Moe/DSL/Kawaii.hs b/src/Text/HTML/Moe/DSL/Kawaii.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/HTML/Moe/DSL/Kawaii.hs
@@ -0,0 +1,12 @@
+module Text.HTML.Moe.DSL.Kawaii where
+
+
+import Text.HTML.Moe
+import Text.HTML.Moe.Type (MoeUnit)
+import Prelude hiding ((-), (/), div)
+
+c :: String -> MoeUnit -> MoeUnit
+c x = div [_class x]
+
+css :: String -> MoeUnit
+css x = link [rel "stylesheet", _type "text/css", href x] (/)
diff --git a/src/Text/HTML/Moe/DSL/Markdown.hs b/src/Text/HTML/Moe/DSL/Markdown.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/HTML/Moe/DSL/Markdown.hs
@@ -0,0 +1,52 @@
+module Text.HTML.Moe.DSL.Markdown 
+(
+  (#)  
+, (##) 
+, (###)
+, (>>) 
+, (*)  
+, (***)
+-- , _  
+-- , __ 
+, (!)
+, (<>)
+, o
+, block
+) where
+
+
+import Text.HTML.Moe
+import Text.HTML.Moe.Type (MoeUnit)
+import MPS.Light ((-))
+import Prelude hiding ((-), (/), (>>), (*))
+
+single_line, r :: (MoeUnit -> MoeUnit) -> String -> MoeUnit
+single_line f = f . str
+r = single_line
+
+(#)       :: String -> MoeUnit  
+(##)      :: String -> MoeUnit  
+(###)     :: String -> MoeUnit  
+(>>)      :: String -> MoeUnit  
+(*)       :: String -> MoeUnit  
+-- _         :: String -> MoeUnit  
+-- __        :: String -> MoeUnit  
+o         :: String -> MoeUnit  
+block     :: String -> MoeUnit  
+(***)     :: MoeUnit 
+(!)       :: String -> String -> MoeUnit 
+(<>)      :: String -> String -> MoeUnit 
+
+
+(#)       = r h1'
+(##)      = r h2'
+(###)     = r h3'
+(>>)      = r blockquote'
+(*)       = r ul'
+-- _         = r em'
+-- __        = r strong'
+o         = r li'
+block     = pre' . code' . str
+(***)     = hr' (/)
+(!) x y   = img [src y, alt x] (/)
+(<>) x y  = a [href y] - str x
diff --git a/src/Text/HTML/Moe/Element.hs b/src/Text/HTML/Moe/Element.hs
--- a/src/Text/HTML/Moe/Element.hs
+++ b/src/Text/HTML/Moe/Element.hs
@@ -21,19 +21,40 @@
 e :: String -> MoeCombinator
 e = element'
 
+no_indent_element :: String -> MoeCombinator
+no_indent_element x xs u = tell [
+  def
+    {
+      name = x
+    , attributes = xs
+    , elements =  execWriter u
+    , indent = False
+    }
+  ]
+
+ne :: String -> MoeCombinator
+ne = no_indent_element
+
 a         :: MoeCombinator
 body      :: MoeCombinator
 br        :: MoeCombinator
+blockquote  :: MoeCombinator
+code      :: MoeCombinator
 colgroup  :: MoeCombinator
 col       :: MoeCombinator
 div       :: MoeCombinator
 form      :: MoeCombinator
 embed     :: MoeCombinator
+em        :: MoeCombinator
 h1        :: MoeCombinator
 h2        :: MoeCombinator
 h3        :: MoeCombinator
+h4        :: MoeCombinator
+h5        :: MoeCombinator
+h6        :: MoeCombinator
 head      :: MoeCombinator
 html      :: MoeCombinator
+hr        :: MoeCombinator
 img       :: MoeCombinator
 input     :: MoeCombinator
 label     :: MoeCombinator
@@ -54,7 +75,9 @@
 script    :: MoeCombinator
 span      :: MoeCombinator
 style     :: MoeCombinator
+strong    :: MoeCombinator
 table     :: MoeCombinator
+textarea  :: MoeCombinator
 td        :: MoeCombinator
 th        :: MoeCombinator
 title     :: MoeCombinator
@@ -63,16 +86,23 @@
 a'          ::  MoeCombinator'
 body'       ::  MoeCombinator'
 br'         ::  MoeCombinator'
+blockquote' ::  MoeCombinator'
+code'       ::  MoeCombinator'
 colgroup'   ::  MoeCombinator'
 col'        ::  MoeCombinator'
 div'        ::  MoeCombinator'
 embed'      ::  MoeCombinator'
+em'         ::  MoeCombinator'
 form'       ::  MoeCombinator'
 h1'         ::  MoeCombinator'
 h2'         ::  MoeCombinator'
 h3'         ::  MoeCombinator'
+h4'         ::  MoeCombinator'
+h5'         ::  MoeCombinator'
+h6'         ::  MoeCombinator'
 head'       ::  MoeCombinator'
 html'       ::  MoeCombinator'
+hr'         ::  MoeCombinator'
 img'        ::  MoeCombinator'
 input'      ::  MoeCombinator'
 label'      ::  MoeCombinator'
@@ -93,7 +123,9 @@
 script'     ::  MoeCombinator'
 span'       ::  MoeCombinator'
 style'      ::  MoeCombinator'
+strong'     ::  MoeCombinator'
 table'      ::  MoeCombinator'
+textarea'   ::  MoeCombinator'
 td'         ::  MoeCombinator'
 th'         ::  MoeCombinator'
 title'      ::  MoeCombinator'
@@ -103,16 +135,23 @@
 a          = e "a"
 body       = e "body"
 br         = e "br"
+blockquote  = e "blockquote"
+code       = e "code"
 colgroup   = e "colgroup"
 col        = e "col"
 div        = e "div"
 embed      = e "embed"
+em         = e "em"
 form       = e "form"
 h1         = e "h1"
 h2         = e "h2"
 h3         = e "h3"
+h4         = e "h4"
+h5         = e "h5"
+h6         = e "h6"
 head       = e "head"
 html       = e "html"
+hr         = e "hr"
 img        = e "img"
 input      = e "input"
 label      = e "label"
@@ -133,7 +172,9 @@
 script     = e "script"
 span       = e "span"
 style      = e "style"
+strong     = e "strong"
 table      = e "table"
+textarea   = ne "textarea"
 td         = e "td"
 th         = e "th"
 title      = e "title"
@@ -146,15 +187,22 @@
 a'         = a          []
 body'      = body       []
 br'        = br         []
+blockquote' = blockquote  []
+code'      = code       []
 colgroup'  = colgroup   []
 col'       = col        []
 div'       = div        []
 embed'     = embed      []
+em'        = em         []
 form'      = form       []
 h1'        = h1         []
 h2'        = h2         []
 h3'        = h3         []
+h4'        = h4         []
+h5'        = h5         []
+h6'        = h6         []
 head'      = head       []
+hr'        = hr         []
 html'      = html       []
 img'       = img        []
 input'     = input      []
@@ -176,14 +224,16 @@
 script'    = script     []
 span'      = span       []
 style'     = style      []
+strong'    = strong     []
 table'     = table      []
+textarea'  = textarea   []
 td'        = td         []
 th'        = th         []
 title'     = title      []
 tr'        = tr         []
 
-str :: String -> MoeUnit
-raw :: String -> MoeUnit
+str, raw, _pre :: String -> MoeUnit
 
 str x   = tell [Data x]
 raw x   = tell [Raw  x]
+_pre x  = tell [Pre  x]
diff --git a/src/Text/HTML/Moe/Type.hs b/src/Text/HTML/Moe/Type.hs
--- a/src/Text/HTML/Moe/Type.hs
+++ b/src/Text/HTML/Moe/Type.hs
@@ -9,13 +9,15 @@
         name :: String
       , attributes :: [Attribute]
       , elements :: [Element]
+      , indent :: Bool
       }
-  | Raw String
-  | Data String
+  | Raw String  -- for preformatted html strings, no escape
+  | Pre String  -- for space sensitive tags, textarea/pre
+  | Data String -- normal string, auto escaped
   deriving (Show)
 
 instance Default Element where
-  def = Element def def def
+  def = Element def def def True
 
 data Attribute = Attribute
   {
