diff --git a/Egison.hs b/Egison.hs
--- a/Egison.hs
+++ b/Egison.hs
@@ -9,7 +9,7 @@
 import IO hiding (try)
 
 welcomeMsg :: String
-welcomeMsg = "Egison, version 0.3.0.0 : http://hagi.is.s.u-tokyo.ac.jp/~egi/egison/\nWelcome to Egison Interpreter!\n"
+welcomeMsg = "Egison, version 0.3.0.1 : http://hagi.is.s.u-tokyo.ac.jp/~egi/egison/\nWelcome to Egison Interpreter!\n"
 
 byebyeMsg :: String
 byebyeMsg = "\nLeaving Egison.\nByebye. See you again! (^^)/\n"
@@ -950,14 +950,6 @@
   frames2 <- patternMatchListMap frames typesIValRefs patIValRefs rest
   return (frames1 ++ frames2)
   
---patternMatchListMapHelper :: [(Frame, IORef IntermidiateValue)] -> [IORef IntermidiateValue] -> [IORef IntermidiateValue] -> IOThrowsError [Frame]
---patternMatchListMapHelper [] _ _ = return []
---patternMatchListMapHelper ((frame, tgtIValRef):rests) typesIValRefs patIValRefs = do
---  tgtIValRefs <- tupleToList tgtIValRef
---  frames1 <- patternMatchList frames typesIValRefs patIValRefs tgtIValRefs
---  frames2 <- patternMatchListMap frames typesIValRefs patIValRefs rest
---  return (frames1 ++ frames2)
-  
 patternMatch :: [Frame] -> Value -> Value -> IORef IntermidiateValue -> IOThrowsError [Frame]
 patternMatch [] _ _ _ = return []
 patternMatch frames _ (Pattern WildCard) _ = return frames
@@ -1045,16 +1037,6 @@
 connectFrames (frame:frames) newFrames =
   (map (\newFrame -> (appendFrames frame newFrame)) newFrames) ++ (connectFrames frames newFrames)
 
---extractAssocs :: Frame -> [String] -> IOThrowsError Frame
---extractAssocs _ [] = return (Frame [])
---extractAssocs frame (var:vars) =
---  let mValRef = getValueFromFrame frame var in
---    case mValRef of
---      Nothing -> throwError (Default "extractAssocs")
---      Just iValRef -> do newFrame <- extractAssocs frame vars
---                         case newFrame of
---                           Frame assocs -> return (Frame ((var, iValRef):assocs))
-  
 ---
 ---
 ---
diff --git a/egison.cabal b/egison.cabal
--- a/egison.cabal
+++ b/egison.cabal
@@ -7,7 +7,7 @@
 -- The package version. See the Haskell package versioning policy
 -- (http://www.haskell.org/haskellwiki/Package_versioning_policy) for
 -- standards guiding when and how versions should be incremented.
-Version:             0.3.0.0
+Version:             0.3.0.1
 
 -- A short (one-line) description of the package.
 Synopsis:            An Interpreter for the Programming Language Egison
@@ -45,7 +45,7 @@
 
 Data-Dir:            etc/
 
-Data-files:          lib/number.egi lib/collection.egi sample/number-test.egi sample/collection-test.egi sample/io-test.egi elisp/egison-mode.el
+Data-files:          lib/basic.egi lib/number.egi lib/collection.egi sample/number-test.egi sample/collection-test.egi sample/io-test.egi elisp/egison-mode.el
 
 -- Extra files to be distributed with the package, such as examples or
 -- a README.
diff --git a/etc/lib/basic.egi b/etc/lib/basic.egi
new file mode 100644
--- /dev/null
+++ b/etc/lib/basic.egi
@@ -0,0 +1,66 @@
+(define $Something
+  (type
+    {[$var-match (lambda [$tgt] {tgt})]
+     }))
+
+(define $Bool
+  (type
+    {[$var-match (lambda [$tgt] {tgt})]
+     [$inductive-match
+      (deconstructor
+        {[true []
+          {[<true> {[]}]
+           [_ {}]}]
+         [false []
+          {[<false> {[]}]
+           [_ {}]}]
+         })]
+     [$equal?
+      (lambda [$val $tgt]
+        (match [val tgt] [Bool Bool]
+          {[[<true> <true>] <true>]
+           [[<false> <false>] <true>]
+           [[_ _] <false>]}))]
+     }))
+
+(define $or
+  (lambda [$b1 $b2]
+    (match b1 Bool
+      {[<true> <true>]
+       [<false> b2]})))
+
+(define $and
+  (lambda [$b1 $b2]
+    (match b1 Bool
+      {[<true> b2]
+       [<false> <false>]})))
+
+(define $not
+  (lambda [$b]
+    (match b Bool
+      {[<true> <false>]
+       [<false> <true>]})))
+
+(define $Order
+  (type
+    {[$var-match (lambda [$tgt] {tgt})]
+     [$inductive-match
+      (deconstructor
+        {[less []
+          {[<equal> {[]}]
+           [_ {}]}]
+         [equal []
+          {[<equal> {[]}]
+           [_ {}]}]
+         [greater []
+          {[<greater> {[]}]
+           [_ {}]}]
+         })]
+     [$equal?
+      (lambda [$val $tgt]
+        (match [val tgt] [Order Order]
+          {[[<less> <less>] <true>]
+           [[<equal> <equal>] <true>]
+           [[<greater> <greater>] <true>]
+           [[_ _] <false>]}))]
+     }))
