diff --git a/framework/src/main/java/org/apache/felix/framework/BundleImpl.java b/framework/src/main/java/org/apache/felix/framework/BundleImpl.java
index 79b709c..b2cc828 100644
--- a/framework/src/main/java/org/apache/felix/framework/BundleImpl.java
+++ b/framework/src/main/java/org/apache/felix/framework/BundleImpl.java
@@ -337,7 +337,7 @@
         // Spec says empty local returns raw headers.
         if (locale.length() == 0)
         {
-            result = new StringMap(adapt(BundleRevisionImpl.class).getHeaders(), false);
+            result = new StringMap(adapt(BundleRevisionImpl.class).getHeaders());
         }
 
         // If we have no result, try to get it from the cached headers.
@@ -373,7 +373,7 @@
         if (result == null)
         {
             // Get a modifiable copy of the raw headers.
-            Map headers = new StringMap(adapt(BundleRevisionImpl.class).getHeaders(), false);
+            Map headers = new StringMap(adapt(BundleRevisionImpl.class).getHeaders());
             // Assume for now that this will be the result.
             result = headers;
 
diff --git a/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java b/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java
index 2bc580b..3d774dd 100644
--- a/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java
+++ b/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java
@@ -120,7 +120,7 @@
 
     private final Logger m_logger;
     private final Map m_configMap;
-    private final Map m_headerMap = new StringMap(false);
+    private final Map m_headerMap = new StringMap();
     private final BundleRevision m_systemBundleRevision;
     private volatile List<BundleCapability> m_capabilities = Collections.EMPTY_LIST;
     private volatile Set<String> m_exportNames = Collections.EMPTY_SET;
diff --git a/framework/src/main/java/org/apache/felix/framework/Felix.java b/framework/src/main/java/org/apache/felix/framework/Felix.java
index ffff6e8..c3650b9 100644
--- a/framework/src/main/java/org/apache/felix/framework/Felix.java
+++ b/framework/src/main/java/org/apache/felix/framework/Felix.java
@@ -305,7 +305,7 @@
     {
         super();
         // Copy the configuration properties; convert keys to strings.
-        m_configMutableMap = new StringMap(false);
+        m_configMutableMap = new StringMap();
         if (configMap != null)
         {
             for (Iterator i = configMap.entrySet().iterator(); i.hasNext(); )
@@ -783,7 +783,7 @@
                 // its bundle context to the logger so that it can track log services.
                 m_logger.setSystemBundleContext(_getBundleContext());
 
-                // We have to check with the security provider (if there is one). 
+                // We have to check with the security provider (if there is one).
                 // This is to avoid having bundles in the cache that have been tampered with
                 SecurityProvider sp = getFramework().getSecurityProvider();
                 if ((sp != null) && (System.getSecurityManager() != null))
@@ -829,7 +829,7 @@
                         releaseGlobalLock();
                     }
                 }
-                
+
                 // Clear the cache of classes coming from the system bundle.
                 // This is only used for Felix.getBundle(Class clazz) to speed
                 // up class lookup for the system bundle.
diff --git a/framework/src/main/java/org/apache/felix/framework/FilterImpl.java b/framework/src/main/java/org/apache/felix/framework/FilterImpl.java
index 3f1cc2d..666533f 100644
--- a/framework/src/main/java/org/apache/felix/framework/FilterImpl.java
+++ b/framework/src/main/java/org/apache/felix/framework/FilterImpl.java
@@ -113,7 +113,7 @@
         public WrapperCapability(ServiceReference sr)
         {
             super(null, null, Collections.EMPTY_MAP, Collections.EMPTY_MAP);
-            m_map = new StringMap(false);
+            m_map = new StringMap();
             for (String key : sr.getPropertyKeys())
             {
                 m_map.put(key, sr.getProperty(key));
@@ -161,7 +161,7 @@
             if (!caseSensitive)
             {
                 m_dict = null;
-                m_map = new StringMap(false);
+                m_map = new StringMap();
                 if (dict != null)
                 {
                     Enumeration keys = dict.keys();
diff --git a/framework/src/main/java/org/apache/felix/framework/ServiceRegistrationImpl.java b/framework/src/main/java/org/apache/felix/framework/ServiceRegistrationImpl.java
index be6fb4b..b41d900 100644
--- a/framework/src/main/java/org/apache/felix/framework/ServiceRegistrationImpl.java
+++ b/framework/src/main/java/org/apache/felix/framework/ServiceRegistrationImpl.java
@@ -47,7 +47,7 @@
     // Service factory interface.
     private volatile ServiceFactory m_factory;
     // Associated property dictionary.
-    private volatile Map m_propMap = new StringMap(false);
+    private volatile Map m_propMap = new StringMap();
     // Re-usable service reference.
     private final ServiceReferenceImpl m_ref;
     // Flag indicating that we are unregistering.
@@ -272,7 +272,7 @@
     private void initializeProperties(Dictionary dict)
     {
         // Create a case-insensitive map for the properties.
-        Map props = new StringMap(false);
+        Map props = new StringMap();
 
         if (dict != null)
         {
diff --git a/framework/src/main/java/org/apache/felix/framework/cache/DirectoryRevision.java b/framework/src/main/java/org/apache/felix/framework/cache/DirectoryRevision.java
index c1269c0..baebe1d 100644
--- a/framework/src/main/java/org/apache/felix/framework/cache/DirectoryRevision.java
+++ b/framework/src/main/java/org/apache/felix/framework/cache/DirectoryRevision.java
@@ -89,7 +89,7 @@
             // Get manifest.
             Manifest mf = new Manifest(is);
             // Create a case insensitive map of manifest attributes.
-            return new StringMap(mf.getMainAttributes(), false);
+            return new StringMap(mf.getMainAttributes());
         }
         finally
         {
diff --git a/framework/src/main/java/org/apache/felix/framework/cache/JarRevision.java b/framework/src/main/java/org/apache/felix/framework/cache/JarRevision.java
index 7a539da..99d9679 100644
--- a/framework/src/main/java/org/apache/felix/framework/cache/JarRevision.java
+++ b/framework/src/main/java/org/apache/felix/framework/cache/JarRevision.java
@@ -99,7 +99,7 @@
     public Map getManifestHeader() throws Exception
     {
         // Create a case insensitive map of manifest attributes.
-        Map headers = new StringMap(false);
+        Map headers = new StringMap();
         // Read and parse headers.
         getMainAttributes(headers, m_zipFile);
         return headers;
diff --git a/framework/src/main/java/org/apache/felix/framework/util/StringMap.java b/framework/src/main/java/org/apache/felix/framework/util/StringMap.java
index 9481b0e..39c2eb6 100644
--- a/framework/src/main/java/org/apache/felix/framework/util/StringMap.java
+++ b/framework/src/main/java/org/apache/felix/framework/util/StringMap.java
@@ -34,15 +34,17 @@
 
     private final TreeMap<char[], KeyValueEntry> m_map = new TreeMap<char[], KeyValueEntry>(COMPARATOR);
 
-    public StringMap(boolean caseSensitive)
+    public StringMap()
     {
     }
 
-    public StringMap(Map map, boolean caseSensitive)
+    public StringMap(Map<? extends Object, ? extends Object> map)
     {
-        for (Entry e : (Set<Entry>)map.entrySet())
+        for (Map.Entry<? extends Object, ? extends Object> e : map.entrySet())
         {
-            put(e.getKey().toString(), e.getValue());
+            KeyValueEntry kve = (KeyValueEntry) m_map.put(
+                toUpperCase(e.getKey().toString()),
+                new KeyValueEntry(e.getKey().toString(), e.getValue()));
         }
     }
 
@@ -85,6 +87,15 @@
     }
 
     @Override
+    public void putAll(Map<? extends String, ? extends Object> map)
+    {
+        for (Map.Entry<? extends String, ? extends Object> e : map.entrySet())
+        {
+            put(e.getKey().toString(), e.getValue());
+        }
+    }
+
+    @Override
     public Object remove(Object arg0)
     {
         KeyValueEntry kve = m_map.remove(toUpperCase(arg0.toString()));
@@ -203,4 +214,4 @@
         String key;
         Object value;
     }
-}
\ No newline at end of file
+}
