diff --git a/cakyrespa.cabal b/cakyrespa.cabal
--- a/cakyrespa.cabal
+++ b/cakyrespa.cabal
@@ -2,13 +2,14 @@
 cabal-version:	>= 1.6
 
 name:		cakyrespa
-version:	0.0.3
+version:	0.0.4
 stability:	Alpha
 license:	BSD3
 license-file:	LICENSE
 
 author:		iocikun juj <PAF01143@nifty.ne.jp>
 maintainer:	iocikun juj <PAF01143@nifty.ne.jp>
+homepage:	http://homepage3.nifty.com/salamander/myblog/cakyrespa.html
 
 category:	Teaching
 synopsis:	run turtle like LOGO with lojban
diff --git a/src/Language/Lojban/Read.hs b/src/Language/Lojban/Read.hs
--- a/src/Language/Lojban/Read.hs
+++ b/src/Language/Lojban/Read.hs
@@ -10,13 +10,14 @@
 
 import Language.Lojban.Parser hiding (
 	Tag, Sumti, Selbri, KOhA, FA, Brivla, BAI, Number, LI, RelativeClause,
-	Time, KU, Linkargs, FIhO)
+	Time, KU, Linkargs, FIhO, NU)
 import qualified Language.Lojban.Parser as P
 import Data.Maybe
 import Data.Char
 
 data Lojban
 	= Bridi Selbri [(Tag, Sumti)]
+	| TenseGI String Lojban Lojban
 	| Vocative String
 	| Free [Free]
 	| ParseError String
@@ -26,6 +27,7 @@
 data Selbri
 	= Brivla String
 	| Linkargs Selbri Sumti
+	| NU Lojban
 	| NotImplementedSelbri String
 	deriving (Show, Eq)
 
@@ -72,6 +74,15 @@
 	Bridi (readSelbri selbri) $ processTagSumti ss ts
 process (TermsBridiTail ss _ _ (P.Selbri selbri)) =
 	Bridi (readSelbri selbri) $ processTagSumti ss []
+process (TermsBridiTail ss _ _
+	(GekSentence
+		(STagGik
+			(P.Time _ [((_, tense, _), _, _)] _ _)
+			((_, "gi", _), _, _))
+		t ((_, "gi", _), _, _) u _ _ _)) =
+	TenseGI tense
+		(process $ TermsBridiTail ss undefined undefined t)
+		(process $ TermsBridiTail ss undefined undefined u)
 process (P.Selbri selbri) = Bridi (readSelbri selbri) []
 process t = NotImplemented $ "process: " ++ show t
 
@@ -178,6 +189,7 @@
 readSelbri (P.Brivla (_, b, _) _) = Brivla $ map toLower b
 readSelbri (P.Linkargs selbri (BE (_, "be", _) _ sumti _ _ _)) =
 	Linkargs (readSelbri selbri) (readSumti sumti)
+readSelbri (P.NU (_, "nu", _) _ _ _ bridi _ _) = NU $ process bridi
 readSelbri s = NotImplementedSelbri $ "readSelbri: " ++ show s
 	
 next :: Int -> [Int] -> Int
diff --git a/src/cakyrespa.hs b/src/cakyrespa.hs
--- a/src/cakyrespa.hs
+++ b/src/cakyrespa.hs
@@ -1,6 +1,6 @@
 module Main where
 
-import Graphics.UI.GLUT hiding (R)
+import Graphics.UI.GLUT hiding (R, Repeat)
 import Graphics.UI.GLUT.Turtle
 
 import Language.Lojban.Read
@@ -23,8 +23,12 @@
 	mainLoop
 
 cmd :: String -> Command
-cmd str = case readLojban str of
+cmd = pcmd . readLojban
+
+pcmd p = case p of
 	(Vocative "co'o") -> COhO
+	(TenseGI "ba" b c) -> Commands (pcmd b) (pcmd c)
+	b@(Bridi (Brivla "rapli") s) -> fromMaybe (Unknown b) $ readRapli s
 	b@(Bridi (Brivla "carna") s) -> fromMaybe (Unknown b) $ readCarna s
 	b@(Bridi (Brivla "crakla") s) -> fromMaybe (Unknown b) $ readCrakla s
 	b@(Bridi (Brivla "rixykla") s) -> fromMaybe (Unknown b) $ readRixykla s
@@ -32,6 +36,12 @@
 	b@(Bridi (Brivla "clugau") s) -> fromMaybe (Unknown b) $ readClugau s
 	r -> Unknown r
 
+readRapli :: [(Tag, Sumti)] -> Maybe Command
+readRapli s = do
+	LO (NU p) _ <- lookup (FA 1) s
+	LI (Number n) <- lookup (FA 2) s
+	return $ Repeat (round n) (pcmd p)
+
 readClugau :: [(Tag, Sumti)] -> Maybe Command
 readClugau s = do
 	KOhA "ko" <- lookup (FA 1) s
@@ -128,6 +138,8 @@
 	| BURSKA Int Int Int
 	| COhACLUGAU
 	| COhUCLUGAU
+	| Commands Command Command
+	| Repeat Int Command
 	| COhO | Unknown Lojban | ParseErrorC
 	| UnknownSelpli Sumti
 	deriving Show
@@ -145,6 +157,9 @@
 processInput _ t COhACLUGAU = beginfill t >> return True
 processInput _ t COhUCLUGAU = endfill t >> return True
 processInput _ _ COhO = return False
+processInput f t (Commands c d) = processInput f t c >> processInput f t d
+processInput f t (Repeat n c) = sequence_ (replicate n (processInput f t c)) >>
+	return True
 processInput f _ u@(Unknown _) = do
 	outputString f ".i mi na jimpe"
 	print u
