diff --git a/src/OpenFOAM/db/dynamicLibrary/dlLibraryTable/dlLibraryTable.C b/src/OpenFOAM/db/dynamicLibrary/dlLibraryTable/dlLibraryTable.C
index 641a051a41d59da9b35ec196c244d2320fd1679b..2c64282612975077b59f46a5c618c376291e56d8 100644
--- a/src/OpenFOAM/db/dynamicLibrary/dlLibraryTable/dlLibraryTable.C
+++ b/src/OpenFOAM/db/dynamicLibrary/dlLibraryTable/dlLibraryTable.C
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2011-2017 OpenFOAM Foundation
-     \\/     M anipulation  |
+     \\/     M anipulation  | Copyright (C) 2018 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -79,104 +79,92 @@ Foam::dlLibraryTable::~dlLibraryTable()
 
 bool Foam::dlLibraryTable::open
 (
-    const fileName& functionLibName,
+    const fileName& libName,
     const bool verbose
 )
 {
-    if (functionLibName.size())
+    if (libName.empty())
     {
-        void* functionLibPtr = dlOpen
-        (
-            fileName(functionLibName).expand(),
-            verbose
-        );
+        return false;
+    }
 
-        if (debug)
-        {
-            InfoInFunction
-                << "Opened " << functionLibName
-                << " resulting in handle " << uintptr_t(functionLibPtr) << endl;
-        }
+    void* ptr = dlOpen(fileName(libName).expand(), verbose);
 
-        if (!functionLibPtr)
-        {
-            if (verbose)
-            {
-                WarningInFunction
-                    << "could not load " << functionLibName
-                    << endl;
-            }
+    if (debug)
+    {
+        InfoInFunction
+            << "Opened " << libName
+            << " resulting in handle " << uintptr_t(ptr) << endl;
+    }
 
-            return false;
-        }
-        else
-        {
-            libPtrs_.append(functionLibPtr);
-            libNames_.append(functionLibName);
-            return true;
-        }
+    if (ptr)
+    {
+        libPtrs_.append(ptr);
+        libNames_.append(libName);
+        return true;
     }
-    else
+
+    if (verbose)
     {
-        return false;
+        WarningInFunction
+            << "could not load " << libName
+            << endl;
     }
+
+    return false;
 }
 
 
 bool Foam::dlLibraryTable::close
 (
-    const fileName& functionLibName,
+    const fileName& libName,
     const bool verbose
 )
 {
     label index = -1;
     forAllReverse(libNames_, i)
     {
-        if (libNames_[i] == functionLibName)
+        if (libName == libNames_[i])
         {
             index = i;
             break;
         }
     }
 
-    if (index != -1)
+    if (index == -1)
     {
-        if (debug)
-        {
-            InfoInFunction
-                << "Closing " << functionLibName
-                << " with handle " << uintptr_t(libPtrs_[index]) << endl;
-        }
+        return false;
+    }
 
-        bool ok = dlClose(libPtrs_[index]);
+    if (debug)
+    {
+        InfoInFunction
+            << "Closing " << libName
+            << " with handle " << uintptr_t(libPtrs_[index]) << endl;
+    }
 
-        libPtrs_[index] = nullptr;
-        libNames_[index] = fileName::null;
+    const bool ok = dlClose(libPtrs_[index]);
 
-        if (!ok)
-        {
-            if (verbose)
-            {
-                WarningInFunction
-                    << "could not close " << functionLibName
-                    << endl;
-            }
-
-            return false;
-        }
+    libPtrs_[index] = nullptr;
+    libNames_[index].clear();
 
-        return true;
+    if (!ok && verbose)
+    {
+        WarningInFunction
+            << "could not close " << libName
+            << endl;
     }
-    return false;
+
+    return ok;
 }
 
 
-void* Foam::dlLibraryTable::findLibrary(const fileName& functionLibName)
+void* Foam::dlLibraryTable::findLibrary(const fileName& libName)
 {
     label index = -1;
     forAllReverse(libNames_, i)
     {
-        if (libNames_[i] == functionLibName)
+        if (libName == libNames_[i])
         {
             index = i;
             break;
@@ -187,6 +175,7 @@ void* Foam::dlLibraryTable::findLibrary(const fileName& functionLibName)
     {
         return libPtrs_[index];
     }
+
     return nullptr;
 }
 
@@ -197,23 +186,20 @@ bool Foam::dlLibraryTable::open
     const word& libsEntry
 )
 {
-    if (dict.found(libsEntry))
-    {
-        fileNameList libNames(dict.lookup(libsEntry));
+    fileNameList libNames;
+    dict.readIfPresent(libsEntry, libNames);
 
-        bool allOpened = !libNames.empty();
+    label nOpen = 0;
 
-        forAll(libNames, i)
+    for (const fileName& libName : libNames)
+    {
+        if (dlLibraryTable::open(libName))
         {
-            allOpened = dlLibraryTable::open(libNames[i]) && allOpened;
+            ++nOpen;
         }
-
-        return allOpened;
-    }
-    else
-    {
-        return false;
     }
+
+    return nOpen && nOpen == libNames.size();
 }
 
 
diff --git a/src/OpenFOAM/db/dynamicLibrary/dlLibraryTable/dlLibraryTable.H b/src/OpenFOAM/db/dynamicLibrary/dlLibraryTable/dlLibraryTable.H
index b40c4c495393c32ce0b67d999a127bc362f9ff82..04f51fd5ad8cb717115ce87d5998e0775bae5b07 100644
--- a/src/OpenFOAM/db/dynamicLibrary/dlLibraryTable/dlLibraryTable.H
+++ b/src/OpenFOAM/db/dynamicLibrary/dlLibraryTable/dlLibraryTable.H
@@ -49,13 +49,15 @@ namespace Foam
 
 class dlLibraryTable
 {
-    // Private Member Functions
+    // Private data
 
         DynamicList<void*> libPtrs_;
 
         DynamicList<fileName> libNames_;
 
 
+    // Private Member Functions
+
         //- No copy construct
         dlLibraryTable(const dlLibraryTable&) = delete;
 
@@ -73,9 +75,9 @@ public:
         //- Construct null
         dlLibraryTable();
 
-        //- Construct from dictionary and name of 'libs' entry giving
-        //  the libraries to load
-        dlLibraryTable(const dictionary&, const word&);
+        //- Open all libraries listed in the 'libsEntry' entry in the
+        //- given dictionary.
+        dlLibraryTable(const dictionary& dict, const word& libsEntry);
 
 
     //- Destructor
@@ -85,25 +87,25 @@ public:
     // Member Functions
 
         //- Open the named library, optionally with warnings if problems occur
-        bool open(const fileName& name, const bool verbose = true);
+        bool open(const fileName& libName, const bool verbose = true);
 
         //- Close the named library, optionally with warnings if problems occur
-        bool close(const fileName& name, const bool verbose = true);
+        bool close(const fileName& libName, const bool verbose = true);
 
         //- Find the handle of the named library
-        void* findLibrary(const fileName& name);
+        void* findLibrary(const fileName& libName);
 
-        //- Open all the libraries listed in the 'libsEntry' entry in the
-        //  given dictionary if present
-        bool open(const dictionary&, const word& libsEntry);
+        //- Open all libraries listed in the 'libsEntry' entry in the
+        //- given dictionary.
+        bool open(const dictionary& dict, const word& libsEntry);
 
-        //- Open all the libraries listed in the 'libsEntry' entry in the
-        //  given dictionary if present and check the additions
-        //  to the given constructor table
+        //- Open all libraries listed in the 'libsEntry' entry in the
+        //- given dictionary and check the additions
+        //- to the given constructor table
         template<class TablePtr>
         bool open
         (
-            const dictionary&,
+            const dictionary& dict,
             const word& libsEntry,
             const TablePtr& tablePtr
         );
diff --git a/src/OpenFOAM/db/dynamicLibrary/dlLibraryTable/dlLibraryTableTemplates.C b/src/OpenFOAM/db/dynamicLibrary/dlLibraryTable/dlLibraryTableTemplates.C
index 62796ab0624045cf4bb14e0102d5f9b745852917..08491cb03a2562e75dd97dc3aee2464a18f3bcea 100644
--- a/src/OpenFOAM/db/dynamicLibrary/dlLibraryTable/dlLibraryTableTemplates.C
+++ b/src/OpenFOAM/db/dynamicLibrary/dlLibraryTable/dlLibraryTableTemplates.C
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
-     \\/     M anipulation  |
+     \\/     M anipulation  | Copyright (C) 2018 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -37,47 +37,36 @@ bool Foam::dlLibraryTable::open
     const TablePtr& tablePtr
 )
 {
-    if (dict.found(libsEntry))
-    {
-        fileNameList libNames(dict.lookup(libsEntry));
-
-        bool allOpened = (libNames.size() > 0);
+    fileNameList libNames;
+    dict.readIfPresent(libsEntry, libNames);
 
-        forAll(libNames, i)
-        {
-            const fileName& libName = libNames[i];
+    label nOpen = 0;
 
-            label nEntries = 0;
-
-            if (tablePtr)
-            {
-                nEntries = tablePtr->size();
-            }
+    for (const fileName& libName : libNames)
+    {
+        const label nEntries = (tablePtr ? tablePtr->size() : 0);
 
-            bool opened = dlLibraryTable::open(libName);
-            allOpened = opened && allOpened;
+        if (dlLibraryTable::open(libName))
+        {
+            ++nOpen;
 
-            if (!opened)
-            {
-                WarningInFunction
-                    << "Could not open library " << libName
-                    << endl << endl;
-            }
-            else if (debug && (!tablePtr || tablePtr->size() <= nEntries))
+            if (debug && (!tablePtr || tablePtr->size() <= nEntries))
             {
                 WarningInFunction
                     << "library " << libName
                     << " did not introduce any new entries"
-                    << endl << endl;
+                    << nl << endl;
             }
         }
-
-        return allOpened;
-    }
-    else
-    {
-        return false;
+        else
+        {
+            WarningInFunction
+                << "Could not open library " << libName
+                << nl << endl;
+        }
     }
+
+    return nOpen && nOpen == libNames.size();
 }