diff --git a/src/main/com/mongodb/BasicDBList.java b/src/main/com/mongodb/BasicDBList.java
index f17ff13..09dc498 100644
--- a/src/main/com/mongodb/BasicDBList.java
+++ b/src/main/com/mongodb/BasicDBList.java
@@ -79,8 +83,8 @@ public class BasicDBList extends ArrayList<Object> implements DBObject {
     }
 
     public void putAll( Map m ){
-        for ( Object k : m.keySet() ){
-            put( k.toString() , m.get( k ) );
+    	for (Map.Entry entry : (Set<Map.Entry>)m.entrySet()){
+            put( entry.getKey().toString() , entry.getValue() );
         }
     } 
     
diff --git a/src/main/com/mongodb/BasicDBObject.java b/src/main/com/mongodb/BasicDBObject.java
index fc41c71..21ed180 100644
--- a/src/main/com/mongodb/BasicDBObject.java
+++ b/src/main/com/mongodb/BasicDBObject.java
@@ -154,8 +156,8 @@ public class BasicDBObject extends LinkedHashMap<String,Object> implements DBObj
     }
 
     public void putAll( Map m ){
-        for ( Object k : m.keySet() ){
-            put( k.toString() , m.get( k ) );
+        for ( Map.Entry entry : (Set<Map.Entry>)m.entrySet() ){
+            put( entry.getKey().toString() , entry.getValue() );
         }
     } 
     
diff --git a/src/main/com/mongodb/ByteEncoder.java b/src/main/com/mongodb/ByteEncoder.java
index 4567bb4..5c171bd 100644
--- a/src/main/com/mongodb/ByteEncoder.java
+++ b/src/main/com/mongodb/ByteEncoder.java
@@ -322,8 +331,8 @@ public class ByteEncoder extends Bytes {
         final int sizePos = _buf.position();
         _buf.putInt( 0 );
         
-        for ( Object key : m.keySet() )
-            _putObjectField( key.toString() , m.get( key ) );
+        for ( Map.Entry entry : (Set<Map.Entry>)m.entrySet() )
+            _putObjectField( entry.getKey().toString() , entry.getValue() );
 
         _buf.put( EOO );
         _buf.putInt( sizePos , _buf.position() - sizePos );
diff --git a/src/main/com/mongodb/ReflectionDBObject.java b/src/main/com/mongodb/ReflectionDBObject.java
index b3a2bdf..bf3aa47 100644
--- a/src/main/com/mongodb/ReflectionDBObject.java
+++ b/src/main/com/mongodb/ReflectionDBObject.java
@@ -49,8 +53,8 @@ public abstract class ReflectionDBObject implements DBObject {
     }
 
     public void putAll( Map m ){
-        for ( Object k : m.keySet() ){
-            put( k.toString() , m.get( k ) );
+        for ( Map.Entry entry : (Set<Map.Entry>)m.entrySet() ){
+            put( entry.getKey().toString() , entry.getValue() );
         }
     } 
     
diff --git a/src/main/com/mongodb/util/JSON.java b/src/main/com/mongodb/util/JSON.java
index 02f2335..db01d1c 100644
--- a/src/main/com/mongodb/util/JSON.java
+++ b/src/main/com/mongodb/util/JSON.java
@@ -114,13 +125,13 @@ public class JSON {
             
             Map m = (Map)o;
             
-            for ( Object name : m.keySet() ){
+            for ( Map.Entry entry : (Set<Map.Entry>)m.entrySet() ){
                 if ( first ) first = false;
                 else buf.append( " , " );
                 
-                string( buf , name.toString() );
+                string( buf , entry.getKey().toString() );
                 buf.append( " : " );
-                serialize( m.get( name ) , buf );
+                serialize( entry.getValue() , buf );
             }
             
             buf.append( "}" );
