diff --git a/cakyrespa.cabal b/cakyrespa.cabal
--- a/cakyrespa.cabal
+++ b/cakyrespa.cabal
@@ -2,7 +2,7 @@
 cabal-version:	>= 1.6
 
 name:		cakyrespa
-version:	0.0.11
+version:	0.0.12
 stability:	Alpha
 license:	BSD3
 license-file:	LICENSE
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,10 +10,11 @@
 
 import Language.Lojban.Parser hiding (
 	Tag, Sumti, Selbri, KOhA, FA, Brivla, BAI, Number, LI, RelativeClause,
-	Time, KU, Linkargs, FIhO, NU, NA, LA, ZOI, ME, JOhI)
+	Time, KU, Linkargs, FIhO, NU, NA, LA, ZOI, ME, JOhI, SE)
 import qualified Language.Lojban.Parser as P
 import Data.Maybe
 import Data.Char
+import Control.Arrow
 
 data Lojban
 	= Bridi Selbri [(Tag, Sumti)]
@@ -31,6 +32,7 @@
 	| NotImplementedSelbri String
 	| NA Selbri
 	| ME Sumti
+	| SE Int Selbri
 	deriving (Show, Eq)
 
 data Sumti
@@ -61,14 +63,25 @@
 data Tag
 	= FA Int
 	| FIhO Selbri
-	| BAI String
+	| BAI (Maybe String) String
 	| Time [String]
 	| NotImplementedTag String
 	deriving (Show, Eq)
 
 readLojban :: String -> Lojban
-readLojban = either (ParseError . show) process . parse
+readLojban = processSE . either (ParseError . show) process . parse
 
+processSE :: Lojban -> Lojban
+processSE (Bridi (SE n selbri) ss) = processSE $
+	Bridi selbri $ map (first $ flipTag n) ss
+processSE l = l
+
+flipTag :: Int -> Tag -> Tag
+flipTag n (FA f)
+	| f == 1 = FA n
+	| f == n = FA 1
+flipTag _ t = t
+
 process :: Text -> Lojban
 process (TopText _ _ [VocativeSumti [(_, v, _)] _ _] Nothing Nothing Nothing) =
 	Vocative v
@@ -119,7 +132,8 @@
 
 readTag :: P.Tag -> (Maybe Int, Tag)
 readTag (P.FA (_, f, _) _) = let n = fromJust $ lookup f faList in (Just n, FA n)
-readTag (P.BAI _ _ (_, b, _) _ _) = (Nothing, BAI b)
+readTag (P.BAI _ Nothing (_, b, _) _ _) = (Nothing, BAI Nothing b)
+readTag (P.BAI _ (Just (_, s, _)) (_, b, _) _ _) = (Nothing, BAI (Just s) b)
 readTag (P.Time _ [((_, t, _), Nothing, Nothing)] _ _) =
 	(Nothing, Time [t])
 readTag (P.Time _ _ _ ts) = (Nothing, Time $ map readTime ts)
@@ -219,7 +233,15 @@
 readSelbri (P.NU (_, "nu", _) _ _ _ bridi _ _) = NU $ process bridi
 readSelbri (P.NA (_, "na", _) _ s) = NA $ readSelbri s
 readSelbri (P.ME (_, "me", _) _ s _ _ _ _) = ME $ readSumti s
+readSelbri (P.SE (_, se, _) _ s) = SE (fromJust $ lookup se seList) $ readSelbri s
 readSelbri s = NotImplementedSelbri $ "readSelbri: " ++ show s
+
+seList = [
+	("se", 2),
+	("te", 3),
+	("ve", 4),
+	("xe", 5)
+ ]
 	
 next :: Int -> [Int] -> Int
 next n e
diff --git a/src/cakyrespa.hs b/src/cakyrespa.hs
--- a/src/cakyrespa.hs
+++ b/src/cakyrespa.hs
@@ -67,8 +67,8 @@
 
 readRejgau s = do
 	KOhA "ko" <- lookup (FA 1) s
-	ZOI fp <- lookup (BAI "me'e") s
-	tai <- lookup (BAI "tai") s
+	ZOI fp <- lookup (BAI Nothing "me'e") s
+	tai <- lookup (BAI (Just "se") "tai") s
 	case tai of
 		LA (Right (Brivla "cakyrespa")) -> return $ SAVEASCAK fp
 		LA (Left "syvygyd") -> return $ SAVEASSVG fp
@@ -177,7 +177,7 @@
 
 readLAhU2 :: [(Tag, Sumti)] -> Maybe Double
 readLAhU2 s = do
-	LI (Number d) <- lookup (BAI "la'u") s
+	LI (Number d) <- lookup (BAI Nothing "la'u") s
 	return d
 
 readCrakla :: [(Tag, Sumti)] -> Maybe Command
