diff --git a/BASIC.cabal b/BASIC.cabal
--- a/BASIC.cabal
+++ b/BASIC.cabal
@@ -1,5 +1,5 @@
 Name:		BASIC
-Version:	0.1.0.0
+Version:	0.1.1.0
 License:	BSD3
 Author:		Lennart Augustsson
 Maintainer:	Lennart Augustsson
diff --git a/Language/BASIC/Interp.hs b/Language/BASIC/Interp.hs
--- a/Language/BASIC/Interp.hs
+++ b/Language/BASIC/Interp.hs
@@ -54,7 +54,13 @@
              (Dbl d1, "-", Dbl d2)  -> return $ Dbl (d1 - d2)
              (Dbl d1, "*", Dbl d2)  -> return $ Dbl (d1 * d2)
              (Dbl d1, "/", Dbl d2)  -> return $ Dbl (d1 / d2)
+             (Dbl d1, "^", Dbl d2)  -> return $ Dbl (d1 ** d2)
              (Dbl d1, "<>", Dbl d2) -> return $ Dbl (if d1 /= d2 then 1 else 0)
+             (Dbl d1, "==", Dbl d2) -> return $ Dbl (if d1 == d2 then 1 else 0)
+             (Dbl d1, "<", Dbl d2) -> return $ Dbl (if d1 < d2 then 1 else 0)
+             (Dbl d1, ">", Dbl d2) -> return $ Dbl (if d1 < d2 then 1 else 0)
+             (Dbl d1, "<=", Dbl d2) -> return $ Dbl (if d1 <= d2 then 1 else 0)
+             (Dbl d1, ">=", Dbl d2) -> return $ Dbl (if d1 >= d2 then 1 else 0)
 	     x -> error $ "Expected numbers " ++ show x
 	eval env (SGN e) = fmap (\ (Dbl x) -> Dbl $ signum x) $ eval env e
 	eval env (INT e) = fmap (\ (Dbl x) -> Dbl $ fromIntegral $ truncate x) $ eval env e
diff --git a/Language/BASIC/Parser.hs b/Language/BASIC/Parser.hs
--- a/Language/BASIC/Parser.hs
+++ b/Language/BASIC/Parser.hs
@@ -3,8 +3,10 @@
 module Language.BASIC.Parser(
     getBASIC, BASIC,
     PRINT(..), END(..), LET(..), GOTO(..), IF(..), THEN(..), INPUT(..), FOR(..), TO(..), NEXT(..),
-    Expr((:=)), (<>)
+    Expr((:=)), (<>), (==), (<), (>), (<=), (>=), (^)
     ) where
+import Prelude hiding ((==),(<),(>),(<=),(>=),(^))
+import qualified Prelude as P
 import Data.List
 import Data.Maybe
 import Data.Function
@@ -44,10 +46,24 @@
 isCmd (Cmd _ _ _) = True
 isCmd _ = False
 
-infix 4 <>
+infix 4 <>, ==, <, >, <=, >=
 (<>) :: Expr a -> Expr a -> Expr a
 (<>) = binop "<>"
+(==) :: Expr a -> Expr a -> Expr a
+(==) = binop "=="
+(<) :: Expr a -> Expr a -> Expr a
+(<) = binop "<"
+(>) :: Expr a -> Expr a -> Expr a
+(>) = binop ">"
+(<=) :: Expr a -> Expr a -> Expr a
+(<=) = binop "<-"
+(>=) :: Expr a -> Expr a -> Expr a
+(>=) = binop ">="
 
+infixr 8 ^
+(^) :: Expr a -> Expr a -> Expr a
+(^) = binop "^"
+
 binop :: String -> Expr a -> Expr a -> Expr a
 binop op (Cmd l c [x]) y = Cmd l c (binops x op y)
 binop op x (Binop y ";" z) = Binop (Binop x op y) ";" z
@@ -65,7 +81,7 @@
 flex (Label l) = Label l
 flex (Binop e1 op e2) = Binop (flex e1) op (flex e2)
 flex (e1 := e2) = flex e1 := flex e2
-flex (RND x) = RND x
+flex (RND x) = RND (flex x)
 flex (INT x) = INT (flex x)
 flex (SGN x) = SGN (flex x)
 flex Var = Var
@@ -137,7 +153,7 @@
 instance Eq (END -> Expr a)
 instance Show (END -> Expr a)
 instance Num (END -> Expr a) where
-    fromInteger i c = Cmd i (if c == RETURN then Return else if c == REM then Rem else End) []
+    fromInteger i c = Cmd i (if c P.== RETURN then Return else if c P.== REM then Rem else End) []
 
 instance Eq (LET -> Expr a -> Expr b)
 instance Show (LET -> Expr a -> Expr b)
@@ -147,7 +163,7 @@
 instance Eq (GOTO -> t -> Expr a)
 instance Show (GOTO -> t -> Expr a)
 instance (Integral t) => Num (GOTO -> t -> Expr a) where
-    fromInteger i c l = Cmd i (if c == GOSUB then Gosub else Goto) [Label $ toInteger l]
+    fromInteger i c l = Cmd i (if c P.== GOSUB then Gosub else Goto) [Label $ toInteger l]
 
 instance Eq (IF -> Expr a -> Expr b)
 instance Show (IF -> Expr a -> Expr b)
diff --git a/Language/BASIC/Translate.hs b/Language/BASIC/Translate.hs
--- a/Language/BASIC/Translate.hs
+++ b/Language/BASIC/Translate.hs
@@ -49,6 +49,7 @@
 trans acmds = do
     atof     <- newNamedFunction ExternalLinkage "atof"     :: TFunction (Ptr Word8 -> IO Double)
     gets     <- newNamedFunction ExternalLinkage "gets"     :: TFunction (Ptr Word8 -> IO (Ptr Word8))
+    power    <- newNamedFunction ExternalLinkage "power"    :: TFunction (Double -> Double -> IO Double)
     printfv  <- newNamedFunction ExternalLinkage "printf"   :: TFunction (Ptr Word8 -> VarArgs Word32)
     rand     <- newNamedFunction ExternalLinkage "rand"     :: TFunction (IO Word32)
     sranddev <- newNamedFunction ExternalLinkage "sranddev" :: TFunction (IO ())
@@ -126,6 +127,7 @@
 	    genExpr (Binop e1 "-" e2) = binop sub e1 e2
 	    genExpr (Binop e1 "*" e2) = binop mul e1 e2
 	    genExpr (Binop e1 "/" e2) = binop fdiv e1 e2
+	    genExpr (Binop e1 "^" e2) = binop (call power) e1 e2
 	    genExpr (INT e) = do
 	        v <- genExpr e
 --		r <- frem v (1 :: Double)
diff --git a/Language/BASIC/Types.hs b/Language/BASIC/Types.hs
--- a/Language/BASIC/Types.hs
+++ b/Language/BASIC/Types.hs
@@ -10,7 +10,7 @@
     | Label Integer
     | Binop (Expr a) String (Expr a)
     | Expr a := Expr a
-    | RND () | INT (Expr a) | SGN (Expr a)
+    | RND (Expr a) | INT (Expr a) | SGN (Expr a)
     | Var
     | I | S | X | Y | Z
     | None
diff --git a/examples/HiLo.hs b/examples/HiLo.hs
--- a/examples/HiLo.hs
+++ b/examples/HiLo.hs
@@ -9,7 +9,7 @@
     20 PRINT "* Welcome to HiLo *"
     30 GOSUB 1000
 
-    100 LET I := INT(100 * RND())
+    100 LET I := INT(100 * RND(X))
 --    110 PRINT I
     200 PRINT "Guess my number:"
     210 INPUT X
