diff --git a/HJScript.cabal b/HJScript.cabal
--- a/HJScript.cabal
+++ b/HJScript.cabal
@@ -1,5 +1,5 @@
 Name:             HJScript
-Version:          0.4.7
+Version:          0.4.8
 License:          BSD3
 Author:           Joel Bjornson, joel.bjornson@gmail.com,
                   Niklas Broberg, nibro@cs.chalmers.se
@@ -23,6 +23,7 @@
                   HJScript.Objects.JQuery
                   HJScript.Objects.Date
                   HJScript.Objects.Math
+                  HJScript.Objects.Object
                   HJScript.Objects.RegExp
                   HJScript.Objects.String
                   HJScript.Objects.ActiveXObject
@@ -45,7 +46,7 @@
 
                   
 Cabal-Version:    >= 1.2.3
-Build-Depends:    base < 5, HJavaScript >= 0.4.4, mtl, hsx >= 0.4.4
+Build-Depends:    base < 5, HJavaScript >= 0.4.6, mtl, hsx >= 0.4.4
 Build-Type:       Simple
 Category:         Web, Language
 
diff --git a/src/HJScript.hs b/src/HJScript.hs
--- a/src/HJScript.hs
+++ b/src/HJScript.hs
@@ -18,6 +18,7 @@
     module HJScript.Objects.Boolean,
     module HJScript.Objects.Date,
     module HJScript.Objects.Math,
+    module HJScript.Objects.Object,
     module HJScript.Objects.RegExp,
     module HJScript.Objects.String
   ) where
@@ -31,5 +32,6 @@
 import HJScript.Objects.Boolean
 import HJScript.Objects.Date
 import HJScript.Objects.Math
+import HJScript.Objects.Object
 import HJScript.Objects.RegExp
 import HJScript.Objects.String
diff --git a/src/HJScript/Lang.hs b/src/HJScript/Lang.hs
--- a/src/HJScript/Lang.hs
+++ b/src/HJScript/Lang.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE OverlappingInstances, UndecidableInstances #-}
+{-# LANGUAGE FlexibleInstances, OverlappingInstances, TypeSynonymInstances, UndecidableInstances #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  HJScript.Lang
@@ -21,10 +21,10 @@
     function, procedure, functionDecl, procedureDecl,
     
     -- Control flow
-    for, while, doWhile, doIf, doElse, doIfElse, doIfNoElse, noElse,
+    for, forIn, forInVar, while, doWhile, doIf, doElse, doIfElse, doIfNoElse, noElse,
     
     -- Objects
-    var, varWith, inVar, new ,( # ), ( #. ),
+    var, varWith, inVar, new, delete, ( # ), ( #. ),
     rec, first, second, x, y,
     
     -- Helpers    
@@ -137,6 +137,20 @@
     pre name  = VarDeclAssign name from
     cond name = (val $ JVar name) .<=. to
     
+-- | for (var in object) { .. }    
+forIn :: (IsDeref d) => d -> (JString -> HJScript ()) -> HJScript ()
+forIn obj script =
+  do v <- var
+     (_, body) <- hjsInside $ script (val v)
+     outputStmt $ ForIn v obj body
+     
+-- | for (var in object) { .. }    
+forInVar :: (IsDeref d) => d -> (Var a -> HJScript ()) -> HJScript ()
+forInVar obj script =
+  do v <- var
+     (_, body) <- hjsInside $ script (obj # propertyVar (val v))
+     outputStmt $ ForIn v obj body     
+     
 -- | while
 while :: JBool -> HJScript t -> HJScript ()
 while cond script = do
@@ -286,6 +300,15 @@
 -- Create new Objects.
 new ::  (HasConstructor o e t, Args e t) => o -> e -> HJScript (Exp o)
 new o = fmap val . varWith . JNew o                     
+
+-- |delete a property
+--
+-- Can only delete properties/variables that are created implicitly,
+-- not those declared with the var statement.
+--
+-- returns true if property was deleted. false if operation was not possible.
+delete :: Var a -> Exp Bool
+delete = JDelete
 
 -- | Dereferencing operator, similar to the `dot` operator in JavaScript.
 -- E.g. document.forms => document # forms, same as forms document
diff --git a/src/HJScript/Monad.hs b/src/HJScript/Monad.hs
--- a/src/HJScript/Monad.hs
+++ b/src/HJScript/Monad.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE OverlappingInstances, UndecidableInstances, GADTs #-}
+{-# LANGUAGE FlexibleInstances, OverlappingInstances, TypeSynonymInstances, UndecidableInstances, GADTs #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  HJScript.Monad
diff --git a/src/HJScript/Objects/Object.hs b/src/HJScript/Objects/Object.hs
new file mode 100644
--- /dev/null
+++ b/src/HJScript/Objects/Object.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE MultiParamTypeClasses #-}
+-----------------------------------------------------------------------------
+-- |
+-- Module      :  Language.HJavaScript.Objects.Array
+-- Copyright   :  (c) 2010 Joel Bjornson 
+-- License     :  BSD-style
+-- Maintainer  :  Joel Bjornson joel.bjornson@gmail.com
+--                Niklas Broberg nibro@cs.chalmers.se
+-- Stability   :  experimental
+-----------------------------------------------------------------------------
+module HJScript.Objects.Object where
+
+import Language.HJavaScript.Syntax
+
+-- | plain old Object
+data Object = Object deriving Show
+instance IsClass Object
+instance HasConstructor Object () ()
