diff --git a/applications/test/HashSet/hashSetTest.C b/applications/test/HashSet/hashSetTest.C
index 21e1276604518f9b9adf4905305ed091702ac48e..fd40e349990559c6f6d8b98a2b7cc94474d234aa 100644
--- a/applications/test/HashSet/hashSetTest.C
+++ b/applications/test/HashSet/hashSetTest.C
@@ -92,6 +92,8 @@ int main(int argc, char *argv[])
     labelHashSet setD(1);
     setD.insert(11);
     setD.insert(100);
+    setD.insert(49);
+    setD.insert(36);
     setD.insert(2008);
 
     Info<< "setD : " << setD << endl;
@@ -138,6 +140,17 @@ int main(int argc, char *argv[])
     // this doesn't work (yet?)
     // setD[12] = true;
 
+    List<label> someLst(10);
+    forAll(someLst, elemI)
+    {
+        someLst[elemI] = elemI*elemI;
+    }
+
+    label added = setD.set(someLst);
+    Info<< "added " << added << " from " << someLst.size() << endl;
+    Info<< "setD : " << setD << endl;
+
+
     return 0;
 }
 
diff --git a/src/OpenFOAM/containers/HashTables/HashSet/HashSet.C b/src/OpenFOAM/containers/HashTables/HashSet/HashSet.C
index 4701c8020de7180bb9907516c290837a7c0260fb..644e98ccfb2fa6f722fcede75031c525aa648bd5 100644
--- a/src/OpenFOAM/containers/HashTables/HashSet/HashSet.C
+++ b/src/OpenFOAM/containers/HashTables/HashSet/HashSet.C
@@ -31,6 +31,18 @@ License
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
+template<class Key, class Hash>
+Foam::HashSet<Key, Hash>::HashSet(const UList<Key>& lst)
+:
+    HashTable<nil, Key, Hash>(2*lst.size())
+{
+    forAll(lst, elemI)
+    {
+        insert(lst[elemI]);
+    }
+}
+
+
 template<class Key, class Hash>
 template<class AnyType>
 Foam::HashSet<Key, Hash>::HashSet(const HashTable<AnyType, Key, Hash>& h)
@@ -49,6 +61,24 @@ Foam::HashSet<Key, Hash>::HashSet(const HashTable<AnyType, Key, Hash>& h)
 }
 
 
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class Key, class Hash>
+Foam::label Foam::HashSet<Key, Hash>::insert(const UList<Key>& lst)
+{
+    label count = 0;
+    forAll(lst, elemI)
+    {
+        if (insert(lst[elemI]))
+        {
+            ++count;
+        }
+    }
+
+    return count;
+}
+
+
 // * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
 
 template<class Key, class Hash>
diff --git a/src/OpenFOAM/containers/HashTables/HashSet/HashSet.H b/src/OpenFOAM/containers/HashTables/HashSet/HashSet.H
index 6353818d7efea8e8b93e8e499f821feecc9b3c13..7fa22c6b967b14b691870e51efdc120224e17aa6 100644
--- a/src/OpenFOAM/containers/HashTables/HashSet/HashSet.H
+++ b/src/OpenFOAM/containers/HashTables/HashSet/HashSet.H
@@ -84,15 +84,7 @@ public:
         {}
 
         //- Construct from UList of Key
-        HashSet(const UList<Key>& lst)
-        :
-            HashTable<nil, Key, Hash>(2*lst.size())
-        {
-            forAll(lst, i)
-            {
-                insert(lst[i]);
-            }
-        }
+        HashSet(const UList<Key>&);
 
         //- Construct as copy
         HashSet(const HashSet<Key, Hash>& hs)
@@ -127,10 +119,20 @@ public:
             return HashTable<nil, Key, Hash>::insert(key, nil());
         }
 
+        //- Insert keys from a UList of Key
+        //  Return the number of new elements inserted
+        label insert(const UList<Key>&);
+
         //- Same as insert (cannot overwrite nil content)
         bool set(const Key& key)
         {
-            return HashTable<nil, Key, Hash>::insert(key, nil());
+            return insert(key);
+        }
+
+        //- Same as insert (cannot overwrite nil content)
+        label set(const UList<Key>& lst)
+        {
+            return insert(lst);
         }
 
     // Member Operators