diff --git a/autobuild.xml b/autobuild.xml
index 2284c87230d0575ba78da33e1d91fbd22aaed2b5..94f3c6df888ed51ef2b67836017322ee5b3583bf 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -2113,76 +2113,6 @@
         <key>version</key>
         <string>0.0.1</string>
       </map>
-      <key>llceflib</key>
-      <map>
-        <key>copyright</key>
-        <string>Copyright (c) 2014, Linden Research, Inc.</string>
-        <key>description</key>
-        <string>LLCefLib implements a headless web browser, rendering modern web content to a memory buffer and providing an API for injecting mouse and keyboard events. It uses the Chromium Embedded Framework (https://bitbucket.org/chromiumembedded/cef)</string>
-        <key>license</key>
-        <string>LGPL</string>
-        <key>license_file</key>
-        <string>LICENSES/LICENSE-source.txt</string>
-        <key>name</key>
-        <string>llceflib</string>
-        <key>platforms</key>
-        <map>
-          <key>darwin</key>
-          <map>
-            <key>archive</key>
-            <map>
-              <key>hash</key>
-              <string>2845033912eb947a1401847ece1469ce</string>
-              <key>hash_algorithm</key>
-              <string>md5</string>
-              <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llceflib_3p-llceflib/rev/321153/arch/Darwin/installer/llceflib-1.5.3.321153-darwin-321153.tar.bz2</string>
-            </map>
-            <key>name</key>
-            <string>darwin</string>
-          </map>
-          <key>darwin64</key>
-          <map>
-            <key>archive</key>
-            <map>
-              <key>hash</key>
-              <string>3af1210d90aeb9f4d5deea6020ee0d55</string>
-              <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1611/3591/llceflib-1.6.0.501600-darwin64-501600.tar.bz2</string>
-            </map>
-            <key>name</key>
-            <string>darwin64</string>
-          </map>
-          <key>windows</key>
-          <map>
-            <key>archive</key>
-            <map>
-              <key>hash</key>
-              <string>9d19271829a372e028dd3c75605ded9c</string>
-              <key>hash_algorithm</key>
-              <string>md5</string>
-              <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1518/3437/llceflib-1.6.0.501501-windows-501501.tar.bz2</string>
-            </map>
-            <key>name</key>
-            <string>windows</string>
-          </map>
-          <key>windows64</key>
-          <map>
-            <key>archive</key>
-            <map>
-              <key>hash</key>
-              <string>da1835b11be4442f22fef36820ad46ac</string>
-              <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1517/3434/llceflib-1.6.0.501501-windows64-501501.tar.bz2</string>
-            </map>
-            <key>name</key>
-            <string>windows64</string>
-          </map>
-        </map>
-        <key>version</key>
-        <string>1.6.0.501600</string>
-      </map>
       <key>llphysicsextensions_source</key>
       <map>
         <key>copyright</key>
diff --git a/indra/cmake/CEFPlugin.cmake b/indra/cmake/CEFPlugin.cmake
index 9cfb7d14c7994d06d1e0163b15e3e1a46b7b78d6..b8e569d3a844886581c7de916388ca5291d0d3c1 100644
--- a/indra/cmake/CEFPlugin.cmake
+++ b/indra/cmake/CEFPlugin.cmake
@@ -6,7 +6,7 @@ if (USESYSTEMLIBS)
     set(CEFPLUGIN OFF CACHE BOOL
         "CEFPLUGIN support for the llplugin/llmedia test apps.")
 else (USESYSTEMLIBS)
-    use_prebuilt_binary(llceflib)
+    use_prebuilt_binary(dullahan)
     set(CEFPLUGIN ON CACHE BOOL
         "CEFPLUGIN support for the llplugin/llmedia test apps.")
         set(CEF_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/cef)
@@ -16,7 +16,7 @@ if (WINDOWS)
     set(CEF_PLUGIN_LIBRARIES
         libcef.lib
         libcef_dll_wrapper.lib
-        llceflib.lib
+        dullahan.lib
     )
 elseif (DARWIN)
     FIND_LIBRARY(APPKIT_LIBRARY AppKit)
@@ -31,7 +31,7 @@ elseif (DARWIN)
 
     set(CEF_PLUGIN_LIBRARIES
         ${ARCH_PREBUILT_DIRS_RELEASE}/libcef_dll_wrapper.a
-        ${ARCH_PREBUILT_DIRS_RELEASE}/libLLCefLib.a
+        ${ARCH_PREBUILT_DIRS_RELEASE}/libdullahan.a
         ${APPKIT_LIBRARY}
         ${CEF_LIBRARY}
        )
diff --git a/indra/media_plugins/cef/media_plugin_cef.cpp b/indra/media_plugins/cef/media_plugin_cef.cpp
index eaba71a6ad018f43792e3a9eadc822a315efcd66..b78af1b34866425e3a25e85f1928381e926024f0 100644
--- a/indra/media_plugins/cef/media_plugin_cef.cpp
+++ b/indra/media_plugins/cef/media_plugin_cef.cpp
@@ -36,11 +36,12 @@
 #include "llpluginmessageclasses.h"
 #include "media_plugin_base.h"
 
-#include "boost/function.hpp"
-#include "boost/bind.hpp"
-#include "llCEFLib.h"
+#include <functional>
+
+#include "dullahan.h"
 //#include "volume_catcher.h"
 
+
 ////////////////////////////////////////////////////////////////////////////////
 //
 class MediaPluginCEF :
@@ -56,7 +57,7 @@ class MediaPluginCEF :
 private:
 	bool init();
 
-	void onPageChangedCallback(unsigned char* pixels, int x, int y, int width, int height, bool is_popup);
+	void onPageChangedCallback(const unsigned char* pixels, int x, int y, const int width, const int height, bool is_popup);
 	void onCustomSchemeURLCallback(std::string url);
 	void onConsoleMessageCallback(std::string message, std::string source, int line);
 	void onStatusMessageCallback(std::string value);
@@ -67,17 +68,17 @@ class MediaPluginCEF :
 	void onAddressChangeCallback(std::string url);
 	void onNavigateURLCallback(std::string url, std::string target);
 	bool onHTTPAuthCallback(const std::string host, const std::string realm, std::string& username, std::string& password);
-	void onCursorChangedCallback(LLCEFLib::ECursorType type, unsigned int handle);
+	void onCursorChangedCallback(dullahan::ECursorType type, unsigned int handle);
 	void onFileDownloadCallback(std::string filename);
 	const std::string onFileDialogCallback();
 
 	void postDebugMessage(const std::string& msg);
 	void authResponse(LLPluginMessage &message);
 
-	LLCEFLib::EKeyboardModifier decodeModifiers(std::string &modifiers);
+	dullahan::EKeyboardModifier decodeModifiers(std::string &modifiers);
 	void deserializeKeyboardData(LLSD native_key_data, uint32_t& native_scan_code, uint32_t& native_virtual_key, uint32_t& native_modifiers);
-	void keyEvent(LLCEFLib::EKeyEvent key_event, int key, LLCEFLib::EKeyboardModifier modifiers, LLSD native_key_data);
-	void unicodeInput(const std::string &utf8str, LLCEFLib::EKeyboardModifier modifiers, LLSD native_key_data);
+	void keyEvent(dullahan::EKeyEvent key_event, int key, dullahan::EKeyboardModifier modifiers, LLSD native_key_data);
+	void unicodeInput(const std::string &utf8str, dullahan::EKeyboardModifier modifiers, LLSD native_key_data);
 
 	void checkEditState();
     void setVolume(F32 vol);
@@ -97,7 +98,7 @@ class MediaPluginCEF :
 	std::string mCachePath;
 	std::string mCookiePath;
 	std::string mPickedFile;
-	LLCEFLib* mLLCEFLib;
+	dullahan* mCEFLib;
 
 	U8 *mPopupBuffer;
 	U32 mPopupW;
@@ -130,7 +131,7 @@ MediaPluginBase(host_send_func, host_user_data)
 	mCachePath = "";
 	mCookiePath = "";
 	mPickedFile = "";
-	mLLCEFLib = new LLCEFLib();
+	mCEFLib = new dullahan();
 
 	mPopupBuffer = NULL;
 	mPopupW = 0;
@@ -164,8 +165,11 @@ void MediaPluginCEF::postDebugMessage(const std::string& msg)
 
 ////////////////////////////////////////////////////////////////////////////////
 //
-void MediaPluginCEF::onPageChangedCallback(unsigned char* pixels, int x, int y, int width, int height, bool is_popup)
+void MediaPluginCEF::onPageChangedCallback(const unsigned char* pixels, int x, int y, const int width, const int height, bool is_popup)
 {
+
+	OutputDebugStringA("@");
+
 	if( is_popup )
 	{
 		delete mPopupBuffer;
@@ -252,8 +256,8 @@ void MediaPluginCEF::onLoadStartCallback()
 {
 	LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "navigate_begin");
 	//message.setValue("uri", event.getEventUri());  // not easily available here in CEF - needed?
-	message.setValueBoolean("history_back_available", mLLCEFLib->canGoBack());
-	message.setValueBoolean("history_forward_available", mLLCEFLib->canGoForward());
+	message.setValueBoolean("history_back_available", mCEFLib->canGoBack());
+	message.setValueBoolean("history_forward_available", mCEFLib->canGoForward());
 	sendMessage(message);
 }
 
@@ -261,7 +265,7 @@ void MediaPluginCEF::onLoadStartCallback()
 //
 void MediaPluginCEF::onRequestExitCallback()
 {
-	mLLCEFLib->shutdown();
+	mCEFLib->shutdown();
 
 	LLPluginMessage message("base", "goodbye");
 	sendMessage(message);
@@ -274,8 +278,8 @@ void MediaPluginCEF::onLoadEndCallback(int httpStatusCode)
 	LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "navigate_complete");
 	//message.setValue("uri", event.getEventUri());  // not easily available here in CEF - needed?
 	message.setValueS32("result_code", httpStatusCode);
-	message.setValueBoolean("history_back_available", mLLCEFLib->canGoBack());
-	message.setValueBoolean("history_forward_available", mLLCEFLib->canGoForward());
+	message.setValueBoolean("history_back_available", mCEFLib->canGoBack());
+	message.setValueBoolean("history_forward_available", mCEFLib->canGoForward());
 	sendMessage(message);
 }
 
@@ -358,25 +362,25 @@ const std::string MediaPluginCEF::onFileDialogCallback()
 	return mPickedFile;
 }
 
-void MediaPluginCEF::onCursorChangedCallback(LLCEFLib::ECursorType type, unsigned int handle)
+void MediaPluginCEF::onCursorChangedCallback(dullahan::ECursorType type, unsigned int handle)
 {
 	std::string name = "";
 
 	switch (type)
 	{
-		case LLCEFLib::CT_POINTER:
+		case dullahan::CT_POINTER:
 			name = "arrow";
 			break;
-		case LLCEFLib::CT_IBEAM:
+		case dullahan::CT_IBEAM:
 			name = "ibeam";
 			break;
-		case LLCEFLib::CT_NORTHSOUTHRESIZE:
+		case dullahan::CT_NORTHSOUTHRESIZE:
 			name = "splitv";
 			break;
-		case LLCEFLib::CT_EASTWESTRESIZE:
+		case dullahan::CT_EASTWESTRESIZE:
 			name = "splith";
 			break;
-		case LLCEFLib::CT_HAND:
+		case dullahan::CT_HAND:
 			name = "hand";
 			break;
 
@@ -428,7 +432,7 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
 			}
 			else if (message_name == "idle")
 			{
-				mLLCEFLib->update();
+				mCEFLib->update();
 
 				// this seems bad but unless the state changes (it won't until we figure out
 				// how to get CEF to tell us if copy/cut/paste is available) then this function
@@ -437,7 +441,7 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
 			}
 			else if (message_name == "cleanup")
 			{
-				mLLCEFLib->requestExit();
+				mCEFLib->requestExit();
 			}
 			else if (message_name == "shm_added")
 			{
@@ -479,47 +483,48 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
 		{
 			if (message_name == "init")
 			{
-				// event callbacks from LLCefLib
-				mLLCEFLib->setOnPageChangedCallback(boost::bind(&MediaPluginCEF::onPageChangedCallback, this, _1, _2, _3, _4, _5, _6));
-				mLLCEFLib->setOnCustomSchemeURLCallback(boost::bind(&MediaPluginCEF::onCustomSchemeURLCallback, this, _1));
-				mLLCEFLib->setOnConsoleMessageCallback(boost::bind(&MediaPluginCEF::onConsoleMessageCallback, this, _1, _2, _3));
-				mLLCEFLib->setOnStatusMessageCallback(boost::bind(&MediaPluginCEF::onStatusMessageCallback, this, _1));
-				mLLCEFLib->setOnTitleChangeCallback(boost::bind(&MediaPluginCEF::onTitleChangeCallback, this, _1));
-				mLLCEFLib->setOnLoadStartCallback(boost::bind(&MediaPluginCEF::onLoadStartCallback, this));
-				mLLCEFLib->setOnLoadEndCallback(boost::bind(&MediaPluginCEF::onLoadEndCallback, this, _1));
-				mLLCEFLib->setOnAddressChangeCallback(boost::bind(&MediaPluginCEF::onAddressChangeCallback, this, _1));
-				mLLCEFLib->setOnNavigateURLCallback(boost::bind(&MediaPluginCEF::onNavigateURLCallback, this, _1, _2));
-				mLLCEFLib->setOnHTTPAuthCallback(boost::bind(&MediaPluginCEF::onHTTPAuthCallback, this, _1, _2, _3, _4));
-				mLLCEFLib->setOnFileDownloadCallback(boost::bind(&MediaPluginCEF::onFileDownloadCallback, this, _1));
-				mLLCEFLib->setOnFileDialogCallback(boost::bind(&MediaPluginCEF::onFileDialogCallback, this));
-				mLLCEFLib->setOnCursorChangedCallback(boost::bind(&MediaPluginCEF::onCursorChangedCallback, this, _1, _2));
-				mLLCEFLib->setOnRequestExitCallback(boost::bind(&MediaPluginCEF::onRequestExitCallback, this));
-
-				LLCEFLib::LLCEFLibSettings settings;
-				settings.initial_width = 1024;
-				settings.initial_height = 1024;
-				// The LLCEFLibSettings struct in the Windows 32-bit
-				// llceflib's build 500907 does not have a page_zoom_factor
-				// member. Set below.
-				//settings.page_zoom_factor = message_in.getValueReal("factor");
-				settings.plugins_enabled = mPluginsEnabled;
-				settings.media_stream_enabled = false; // MAINT-6060 - WebRTC media removed until we can add granualrity/query UI
-				settings.javascript_enabled = mJavascriptEnabled;
-				settings.cookies_enabled = mCookiesEnabled;
-				settings.cookie_store_path = mCookiePath;
+				// event callbacks from Dullahan
+				mCEFLib->setOnPageChangedCallback(std::bind(&MediaPluginCEF::onPageChangedCallback, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5, std::placeholders::_6));
+				mCEFLib->setOnCustomSchemeURLCallback(std::bind(&MediaPluginCEF::onCustomSchemeURLCallback, this, std::placeholders::_1));
+				mCEFLib->setOnConsoleMessageCallback(std::bind(&MediaPluginCEF::onConsoleMessageCallback, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));
+				mCEFLib->setOnStatusMessageCallback(std::bind(&MediaPluginCEF::onStatusMessageCallback, this, std::placeholders::_1));
+				mCEFLib->setOnTitleChangeCallback(std::bind(&MediaPluginCEF::onTitleChangeCallback, this, std::placeholders::_1));
+				mCEFLib->setOnLoadStartCallback(std::bind(&MediaPluginCEF::onLoadStartCallback, this));
+				mCEFLib->setOnLoadEndCallback(std::bind(&MediaPluginCEF::onLoadEndCallback, this, std::placeholders::_1));
+				mCEFLib->setOnAddressChangeCallback(std::bind(&MediaPluginCEF::onAddressChangeCallback, this, std::placeholders::_1));
+				mCEFLib->setOnNavigateURLCallback(std::bind(&MediaPluginCEF::onNavigateURLCallback, this, std::placeholders::_1, std::placeholders::_2));
+				mCEFLib->setOnHTTPAuthCallback(std::bind(&MediaPluginCEF::onHTTPAuthCallback, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4));
+				mCEFLib->setOnFileDownloadCallback(std::bind(&MediaPluginCEF::onFileDownloadCallback, this, std::placeholders::_1));
+				mCEFLib->setOnFileDialogCallback(std::bind(&MediaPluginCEF::onFileDialogCallback, this));
+				mCEFLib->setOnCursorChangedCallback(std::bind(&MediaPluginCEF::onCursorChangedCallback, this, std::placeholders::_1, std::placeholders::_2));
+				mCEFLib->setOnRequestExitCallback(std::bind(&MediaPluginCEF::onRequestExitCallback, this));
+
+				dullahan::dullahan_settings settings;
+				settings.accept_language_list = mHostLanguage;
+				settings.background_color = 0xffffff;
 				settings.cache_enabled = true;
 				settings.cache_path = mCachePath;
-				settings.accept_language_list = mHostLanguage;
-				settings.user_agent_substring = mLLCEFLib->makeCompatibleUserAgentString(mUserAgentSubtring);
+				settings.cookie_store_path = mCookiePath;
+				settings.cookies_enabled = mCookiesEnabled;
+				settings.flash_enabled = mPluginsEnabled;
+				settings.frame_rate = 60;
+				settings.initial_height = 1024;
+				settings.initial_width = 1024;
+				settings.java_enabled = false;
+				settings.javascript_enabled = mJavascriptEnabled;
+				settings.media_stream_enabled = false; // MAINT-6060 - WebRTC media removed until we can add granualrity/query UI
+				settings.plugins_enabled = mPluginsEnabled;
+				settings.user_agent_substring = mCEFLib->makeCompatibleUserAgentString(mUserAgentSubtring);
+				settings.webgl_enabled = true;
 
-				bool result = mLLCEFLib->init(settings);
+				bool result = mCEFLib->init(settings);
 				if (!result)
 				{
 					// if this fails, the media system in viewer will put up a message
 				}
 
 				// now we can set page zoom factor
-				mLLCEFLib->setPageZoom(message_in.getValueReal("factor"));
+				mCEFLib->setPageZoom(message_in.getValueReal("factor"));
 
 				// Plugin gets to decide the texture parameters to use.
 				mDepth = 4;
@@ -530,7 +535,7 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
 				message.setValueU32("internalformat", GL_RGB);
 				message.setValueU32("format", GL_BGRA);
 				message.setValueU32("type", GL_UNSIGNED_BYTE);
-				message.setValueBoolean("coords_opengl", true);
+				message.setValueBoolean("coords_opengl", false);
 				sendMessage(message);
 			}
 			else if (message_name == "set_user_data_path")
@@ -563,7 +568,7 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
 					};
 				};
 
-				mLLCEFLib->setSize(mWidth, mHeight);
+				mCEFLib->setSize(mWidth, mHeight);
 
 				LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "size_change_response");
 				message.setValue("name", name);
@@ -581,7 +586,7 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
 			else if (message_name == "load_uri")
 			{
 				std::string uri = message_in.getValue("uri");
-				mLLCEFLib->navigate(uri);
+				mCEFLib->navigate(uri);
 			}
 			else if (message_name == "set_cookie")
 			{
@@ -592,7 +597,7 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
 				std::string path = message_in.getValue("path");
 				bool httponly = message_in.getValueBoolean("httponly");
 				bool secure = message_in.getValueBoolean("secure");
-				mLLCEFLib->setCookie(uri, name, value, domain, path, httponly, secure);
+				mCEFLib->setCookie(uri, name, value, domain, path, httponly, secure);
 			}
 			else if (message_name == "mouse_event")
 			{
@@ -603,16 +608,16 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
 
 				y = mHeight - y;
 
-				// only even send left mouse button events to LLCEFLib
+				// only even send left mouse button events to the CEF library
 				// (partially prompted by crash in OS X CEF when sending right button events)
 				// we catch the right click in viewer and display our own context menu anyway
 				S32 button = message_in.getValueS32("button");
-				LLCEFLib::EMouseButton btn = LLCEFLib::MB_MOUSE_BUTTON_LEFT;
+				dullahan::EMouseButton btn = dullahan::MB_MOUSE_BUTTON_LEFT;
 
 				if (event == "down" && button == 0)
 				{
-					mLLCEFLib->mouseButton(btn, LLCEFLib::ME_MOUSE_DOWN, x, y);
-					mLLCEFLib->setFocus(true);
+					mCEFLib->mouseButton(btn, dullahan::ME_MOUSE_DOWN, x, y);
+					mCEFLib->setFocus();
 
 					std::stringstream str;
 					str << "Mouse down at = " << x << ", " << y;
@@ -620,7 +625,7 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
 				}
 				else if (event == "up" && button == 0)
 				{
-					mLLCEFLib->mouseButton(btn, LLCEFLib::ME_MOUSE_UP, x, y);
+					mCEFLib->mouseButton(btn, dullahan::ME_MOUSE_UP, x, y);
 
 					std::stringstream str;
 					str << "Mouse up at = " << x << ", " << y;
@@ -628,11 +633,11 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
 				}
 				else if (event == "double_click")
 				{
-					mLLCEFLib->mouseButton(btn, LLCEFLib::ME_MOUSE_DOUBLE_CLICK, x, y);
+					mCEFLib->mouseButton(btn, dullahan::ME_MOUSE_DOUBLE_CLICK, x, y);
 				}
 				else
 				{
-					mLLCEFLib->mouseMove(x, y);
+					mCEFLib->mouseMove(x, y);
 				}
 			}
 			else if (message_name == "scroll_event")
@@ -642,7 +647,7 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
 				const int scaling_factor = 40;
 				y *= -scaling_factor;
 
-				mLLCEFLib->mouseWheel(x, y);
+				mCEFLib->mouseWheel(x, y);
 			}
 			else if (message_name == "text_event")
 			{
@@ -662,28 +667,28 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
 #if 0
 				if (event == "down")
 				{
-					//mLLCEFLib->keyPress(key, true);
-					mLLCEFLib->keyboardEvent(LLCEFLib::KE_KEY_DOWN, (uint32_t)key, 0, LLCEFLib::KM_MODIFIER_NONE, 0, 0, 0);
+					//mCEFLib->keyPress(key, true);
+					mCEFLib->keyboardEvent(dullahan::KE_KEY_DOWN, (uint32_t)key, 0, dullahan::KM_MODIFIER_NONE, 0, 0, 0);
 
 				}
 				else if (event == "up")
 				{
-					//mLLCEFLib->keyPress(key, false);
-					mLLCEFLib->keyboardEvent(LLCEFLib::KE_KEY_UP, (uint32_t)key, 0, LLCEFLib::KM_MODIFIER_NONE, 0, 0, 0);
+					//mCEFLib->keyPress(key, false);
+					mCEFLib->keyboardEvent(dullahan::KE_KEY_UP, (uint32_t)key, 0, dullahan::KM_MODIFIER_NONE, 0, 0, 0);
 				}
 #else
                 // Treat unknown events as key-up for safety.
-                LLCEFLib::EKeyEvent key_event = LLCEFLib::KE_KEY_UP;
+                dullahan::EKeyEvent key_event = dullahan::KE_KEY_UP;
                 if (event == "down")
                 {
-                    key_event = LLCEFLib::KE_KEY_DOWN;
+                    key_event = dullahan::KE_KEY_DOWN;
                 }
                 else if (event == "repeat")
                 {
-                    key_event = LLCEFLib::KE_KEY_REPEAT;
+                    key_event = dullahan::KE_KEY_REPEAT;
                 }
 
-                keyEvent(key_event, key, LLCEFLib::KM_MODIFIER_NONE, native_key_data);
+                keyEvent(key_event, key, dullahan::KM_MODIFIER_NONE, native_key_data);
 
 #endif
 #elif LL_WINDOWS
@@ -693,14 +698,14 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
 				LLSD native_key_data = message_in.getValueLLSD("native_key_data");
 
 				// Treat unknown events as key-up for safety.
-				LLCEFLib::EKeyEvent key_event = LLCEFLib::KE_KEY_UP;
+				dullahan::EKeyEvent key_event = dullahan::KE_KEY_UP;
 				if (event == "down")
 				{
-					key_event = LLCEFLib::KE_KEY_DOWN;
+					key_event = dullahan::KE_KEY_DOWN;
 				}
 				else if (event == "repeat")
 				{
-					key_event = LLCEFLib::KE_KEY_REPEAT;
+					key_event = dullahan::KE_KEY_REPEAT;
 				}
 
 				keyEvent(key_event, key, decodeModifiers(modifiers), native_key_data);
@@ -720,15 +725,15 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
 			}
 			if (message_name == "edit_cut")
 			{
-				mLLCEFLib->editCut();
+				//$1 mCEFLib->editCut();
 			}
 			if (message_name == "edit_copy")
 			{
-				mLLCEFLib->editCopy();
+				//$1 mCEFLib->editCopy();
 			}
 			if (message_name == "edit_paste")
 			{
-				mLLCEFLib->editPaste();
+				//$1 mCEFLib->editPaste();
 			}
 		}
 		else if (message_class == LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER)
@@ -736,24 +741,24 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
 			if (message_name == "set_page_zoom_factor")
 			{
 				F32 factor = (F32)message_in.getValueReal("factor");
-				mLLCEFLib->setPageZoom(factor);
+				mCEFLib->setPageZoom(factor);
 			}
 			if (message_name == "browse_stop")
 			{
-				mLLCEFLib->stop();
+				mCEFLib->stop();
 			}
 			else if (message_name == "browse_reload")
 			{
 				bool ignore_cache = true;
-				mLLCEFLib->reload(ignore_cache);
+				mCEFLib->reload(ignore_cache);
 			}
 			else if (message_name == "browse_forward")
 			{
-				mLLCEFLib->goForward();
+				mCEFLib->goForward();
 			}
 			else if (message_name == "browse_back")
 			{
-				mLLCEFLib->goBack();
+				mCEFLib->goBack();
 			}
 			else if (message_name == "cookies_enabled")
 			{
@@ -765,7 +770,7 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
 			}
 			else if (message_name == "show_web_inspector")
 			{
-				mLLCEFLib->showDevTools(true);
+				mCEFLib->showDevTools();
 			}
 			else if (message_name == "plugins_enabled")
 			{
@@ -790,23 +795,23 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
 	}
 }
 
-LLCEFLib::EKeyboardModifier MediaPluginCEF::decodeModifiers(std::string &modifiers)
+dullahan::EKeyboardModifier MediaPluginCEF::decodeModifiers(std::string &modifiers)
 {
 	int result = 0;
 
 	if (modifiers.find("shift") != std::string::npos)
-		result |= LLCEFLib::KM_MODIFIER_SHIFT;
+		result |= dullahan::KM_MODIFIER_SHIFT;
 
 	if (modifiers.find("alt") != std::string::npos)
-		result |= LLCEFLib::KM_MODIFIER_ALT;
+		result |= dullahan::KM_MODIFIER_ALT;
 
 	if (modifiers.find("control") != std::string::npos)
-		result |= LLCEFLib::KM_MODIFIER_CONTROL;
+		result |= dullahan::KM_MODIFIER_CONTROL;
 
 	if (modifiers.find("meta") != std::string::npos)
-		result |= LLCEFLib::KM_MODIFIER_META;
+		result |= dullahan::KM_MODIFIER_META;
 
-	return (LLCEFLib::EKeyboardModifier)result;
+	return (dullahan::EKeyboardModifier)result;
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -833,7 +838,7 @@ void MediaPluginCEF::deserializeKeyboardData(LLSD native_key_data, uint32_t& nat
 
 ////////////////////////////////////////////////////////////////////////////////
 //
-void MediaPluginCEF::keyEvent(LLCEFLib::EKeyEvent key_event, int key, LLCEFLib::EKeyboardModifier modifiers_x, LLSD native_key_data = LLSD::emptyMap())
+void MediaPluginCEF::keyEvent(dullahan::EKeyEvent key_event, int key, dullahan::EKeyboardModifier modifiers_x, LLSD native_key_data = LLSD::emptyMap())
 {
 #if LL_DARWIN
 
@@ -852,7 +857,7 @@ void MediaPluginCEF::keyEvent(LLCEFLib::EKeyEvent key_event, int key, LLCEFLib::
     char eventUChars = static_cast<char>(native_key_data["event_umodchars"].isUndefined() ? 0 : native_key_data["event_umodchars"].asInteger());
     bool eventIsRepeat = native_key_data["event_isrepeat"].asBoolean();
 
-    mLLCEFLib->keyboardEventOSX(eventType, eventModifiers, (eventChars) ? &eventChars : NULL,
+    mCEFLib->keyboardEventOSX(eventType, eventModifiers, (eventChars) ? &eventChars : NULL,
                                 (eventUChars) ? &eventUChars : NULL, eventIsRepeat, eventKeycode);
 
 #elif LL_WINDOWS
@@ -860,15 +865,15 @@ void MediaPluginCEF::keyEvent(LLCEFLib::EKeyEvent key_event, int key, LLCEFLib::
 	U32 wparam = ll_U32_from_sd(native_key_data["w_param"]);
 	U64 lparam = ll_U32_from_sd(native_key_data["l_param"]);
 
-	mLLCEFLib->nativeKeyboardEvent(msg, wparam, lparam);
+	mCEFLib->nativeKeyboardEvent(msg, wparam, lparam);
 #endif
 };
 
-void MediaPluginCEF::unicodeInput(const std::string &utf8str, LLCEFLib::EKeyboardModifier modifiers, LLSD native_key_data = LLSD::emptyMap())
+void MediaPluginCEF::unicodeInput(const std::string &utf8str, dullahan::EKeyboardModifier modifiers, LLSD native_key_data = LLSD::emptyMap())
 {
 #if LL_DARWIN
-	//mLLCEFLib->keyPress(utf8str[0], true);
-	//mLLCEFLib->keyboardEvent(LLCEFLib::KE_KEY_DOWN, (uint32_t)(utf8str[0]), 0, LLCEFLib::KM_MODIFIER_NONE, 0, 0, 0);
+	//mCEFLib->keyPress(utf8str[0], true);
+	//mCEFLib->keyboardEvent(dullahan::KE_KEY_DOWN, (uint32_t)(utf8str[0]), 0, dullahan::KM_MODIFIER_NONE, 0, 0, 0);
     if (!native_key_data.has("event_chars") || !native_key_data.has("event_umodchars") ||
             !native_key_data.has("event_keycode") || !native_key_data.has("event_modifiers"))
         return;
@@ -877,13 +882,13 @@ void MediaPluginCEF::unicodeInput(const std::string &utf8str, LLCEFLib::EKeyboar
     uint32_t keyCode = native_key_data["event_keycode"].asInteger();
     uint32_t rawmodifiers = native_key_data["event_modifiers"].asInteger();
 
-    mLLCEFLib->injectUnicodeText(unicodeChar, unmodifiedChar, keyCode, rawmodifiers);
+    mCEFLib->injectUnicodeText(unicodeChar, unmodifiedChar, keyCode, rawmodifiers);
 
 #elif LL_WINDOWS
 	U32 msg = ll_U32_from_sd(native_key_data["msg"]);
 	U32 wparam = ll_U32_from_sd(native_key_data["w_param"]);
 	U64 lparam = ll_U32_from_sd(native_key_data["l_param"]);
-	mLLCEFLib->nativeKeyboardEvent(msg, wparam, lparam);
+	mCEFLib->nativeKeyboardEvent(msg, wparam, lparam);
 #endif
 };
 
@@ -891,9 +896,12 @@ void MediaPluginCEF::unicodeInput(const std::string &utf8str, LLCEFLib::EKeyboar
 //
 void MediaPluginCEF::checkEditState()
 {
-	bool can_cut = mLLCEFLib->editCanCut();
-	bool can_copy = mLLCEFLib->editCanCopy();
-	bool can_paste = mLLCEFLib->editCanPaste();
+	//$1 bool can_cut = mCEFLib->editCanCut();
+	//$1 bool can_copy = mCEFLib->editCanCopy();
+	//$1 bool can_paste = mCEFLib->editCanPaste();
+	bool can_cut = false;
+	bool can_copy = false;
+	bool can_paste = false;
 
 	if ((can_cut != mCanCut) || (can_copy != mCanCopy) || (can_paste != mCanPaste))
 	{
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 65c3e70b660218bdcadd6ab5c0d18b60e40a115c..d7b91ba7419fcfe9edfdc62a1ecc5b2edfeae01f 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -125,7 +125,7 @@
 #include "llcoros.h"
 #include "llexception.h"
 #if !LL_LINUX
-#include "cef/llceflib.h"
+#include "cef/dullahan.h"
 #if LL_WINDOWS
 #include "vlc/libvlc_version.h"
 #endif // LL_WINDOWS
@@ -3393,13 +3393,15 @@ LLSD LLAppViewer::getViewerInfo() const
 	}
 
 #if !LL_LINUX
-	info["LLCEFLIB_VERSION"] = LLCEFLIB_VERSION;
+	// TODO this is terrible, but how else to accurately get back entire version from
+	// both CEF and Dullahan when there is no #define anymore?
+	info["LIBCEF_VERSION"] = "Calculating...";
 #else
-	info["LLCEFLIB_VERSION"] = "Undefined";
+	info["LIBCEF_VERSION"] = "Undefined";
 
 #endif
 
-#if LL_WINDOWS
+#if !LL_LINUX
 	std::ostringstream ver_codec;
 	ver_codec << LIBVLC_VERSION_MAJOR;
 	ver_codec << ".";
diff --git a/indra/newview/skins/default/xui/da/floater_about.xml b/indra/newview/skins/default/xui/da/floater_about.xml
index 779b168ae01fc2b829d1668662220ad5d3fdf5ba..7654f0dcd6bdc36c994ad1903809069e0afcc7e6 100644
--- a/indra/newview/skins/default/xui/da/floater_about.xml
+++ b/indra/newview/skins/default/xui/da/floater_about.xml
@@ -24,7 +24,7 @@ Grafik kort: [GRAPHICS_CARD]
 
 J2C Decoder Version: [J2C_VERSION]
 Audio Driver Version: [AUDIO_DRIVER_VERSION]
-LLCEFLib/CEF Version: [LLCEFLIB_VERSION]
+CEF Version: [LIBCEF_VERSION]
 LibVLC Version: [LIBVLC_VERSION]
 Voice Server Version: [VOICE_VERSION]
 	</floater.string>
diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml
index 4a2cbcc81f84ca512c44334a71b02bbd18e01ab0..d3d0423d44025d4edba8ba8bb1e4ba0e80e558f8 100644
--- a/indra/newview/skins/default/xui/de/strings.xml
+++ b/indra/newview/skins/default/xui/de/strings.xml
@@ -79,7 +79,7 @@ Erstellungszeit VFS (Cache): [VFS_TIME]
 	<string name="AboutLibs">
 		J2C-Decoderversion: [J2C_VERSION]
 Audiotreiberversion: [AUDIO_DRIVER_VERSION]
-LLCEFLib/CEF-Version: [LLCEFLIB_VERSION]
+CEF-Version: [LIBCEF_VERSION]
 LibVLC-Version: [LIBVLC_VERSION]
 Voice-Server-Version: [VOICE_VERSION]
 	</string>
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 6b3422d8926035cde535030987754426a3e707e7..c19ab5a5708fdf1ac0466c94b009122ece1056e1 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -61,7 +61,7 @@ VFS (cache) creation time: [VFS_TIME]
 	<string name="AboutLibs">
 J2C Decoder Version: [J2C_VERSION]
 Audio Driver Version: [AUDIO_DRIVER_VERSION]
-LLCEFLib/CEF Version: [LLCEFLIB_VERSION]
+CEF Version: [LIBCEF_VERSION]
 LibVLC Version: [LIBVLC_VERSION]
 Voice Server Version: [VOICE_VERSION]
 	</string>
diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml
index 192d32c267496bba7e30d4820c2557001a59016c..a56d7d6de7565eab6dccefc024e653770b9ec075 100644
--- a/indra/newview/skins/default/xui/es/strings.xml
+++ b/indra/newview/skins/default/xui/es/strings.xml
@@ -70,8 +70,8 @@ Tiempo de creación de VFS (caché): [VFS_TIME]
 	<string name="AboutLibs">
 		Versión de J2C Decoder: [J2C_VERSION]
 Versión de Audio Driver: [AUDIO_DRIVER_VERSION]
-Versión de LLCEFLib/CEF: [LLCEFLIB_VERSION]
-Versión de LibVLC: [LLCEFLIB_VERSION]
+Versión de CEF: [LIBCEF_VERSION]
+Versión de LibVLC: [LIBVLC_VERSION]
 Versión de Voice Server: [VOICE_VERSION]
 	</string>
 	<string name="AboutTraffic">
diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml
index 40a41b93abb4844b71ef92a7f2a05d3f2df2b6e3..10c9be07954879d19c01addafffdd4c62425248c 100644
--- a/indra/newview/skins/default/xui/fr/strings.xml
+++ b/indra/newview/skins/default/xui/fr/strings.xml
@@ -79,7 +79,7 @@ Durée de création VFS (cache) : [VFS_TIME]
 	<string name="AboutLibs">
 		Version J2C Decoder : [J2C_VERSION]
 Version Audio Driver : [AUDIO_DRIVER_VERSION]
-Version LLCEFLib/CEF : [LLCEFLIB_VERSION]
+Version CEF : [LIBCEF_VERSION]
 Version LibVLC : [LIBVLC_VERSION]
 Version serveur vocal : [VOICE_VERSION]
 	</string>
diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml
index 8246f91d17eac6b6277799498e737fc51bcd784f..d158cfd3118794a72cde2e1864b4baaee5933019 100644
--- a/indra/newview/skins/default/xui/it/strings.xml
+++ b/indra/newview/skins/default/xui/it/strings.xml
@@ -76,7 +76,7 @@ Data/ora creazione VFS (cache): [VFS_TIME]
 	<string name="AboutLibs">
 		Versione J2C Decoder: [J2C_VERSION]
 Versione Driver audio: [AUDIO_DRIVER_VERSION]
-Versione LLCEFLib/CEF: [LLCEFLIB_VERSION]
+Versione CEF: [LIBCEF_VERSION]
 Versione LibVLC: [LIBVLC_VERSION]
 Versione Server voice: [VOICE_VERSION]
 	</string>
diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml
index 586b8ab2d357d9c6fdb3c4870dc6adea3a787e61..b3c92dbe8d102155fb6b3690ffe03ac22a06abcc 100644
--- a/indra/newview/skins/default/xui/ja/strings.xml
+++ b/indra/newview/skins/default/xui/ja/strings.xml
@@ -79,7 +79,7 @@ VFS(キャッシュ)作成時間: [VFS_TIME]
 	<string name="AboutLibs">
 		J2C デコーダバージョン:[J2C_VERSION]
 オーディオドライババージョン:[AUDIO_DRIVER_VERSION]
-LLCEFLib/CEF バージョン: [LLCEFLIB_VERSION]
+CEF バージョン: [LIBCEF_VERSION]
 LibVLC バージョン: [LIBVLC_VERSION]
 ボイスサーバーバージョン:[VOICE_VERSION]
 	</string>
diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml
index e9dd18043d698c0a5c07a28f2fd16fd8b27af40d..9aece1221d781a95cf99182997d37ec4dfdad929 100644
--- a/indra/newview/skins/default/xui/pl/strings.xml
+++ b/indra/newview/skins/default/xui/pl/strings.xml
@@ -43,7 +43,7 @@ Wersja OpenGL: [OPENGL_VERSION]
 
 Wersja dekodera J2C: [J2C_VERSION]
 Wersja sterownika dźwięku (Audio Driver): [AUDIO_DRIVER_VERSION]
-Wersja LLCEFLib/CEF: [LLCEFLIB_VERSION]
+Wersja CEF: [LIBCEF_VERSION]
 Wersja LibVLC: [LIBVLC_VERSION]
 Wersja serwera głosu (Voice Server): [VOICE_VERSION]
 	</string>
diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml
index 207b4e709707464024c9d4699ee45aa3461c5e37..0d7585a424d97e1a2953f6756bbce26b3dd16898 100644
--- a/indra/newview/skins/default/xui/pt/strings.xml
+++ b/indra/newview/skins/default/xui/pt/strings.xml
@@ -70,7 +70,7 @@ Tempo de criação de VFS (cache): [VFS_TIME]
 	<string name="AboutLibs">
 		Versão do J2C Decoder: [J2C_VERSION]
 Versão do driver de áudio: [AUDIO_DRIVER_VERSION]
-Versão de LLCEFLib/CEF: [LLCEFLIB_VERSION]
+Versão de CEF: [LIBCEF_VERSION]
 Versão da LibVLC: [LIBVLC_VERSION]
 Versão do servidor de voz: [VOICE_VERSION]
 	</string>
diff --git a/indra/newview/skins/default/xui/ru/strings.xml b/indra/newview/skins/default/xui/ru/strings.xml
index e44d63b3b97d421c28a14353e0cb1e3a23311b76..7b1dcae021984aae8a428fb12d632de4b9c2d699 100644
--- a/indra/newview/skins/default/xui/ru/strings.xml
+++ b/indra/newview/skins/default/xui/ru/strings.xml
@@ -79,7 +79,7 @@ SLURL: &lt;nolink&gt;[SLURL]&lt;/nolink&gt;
 	<string name="AboutLibs">
 		Версия декодера J2C: [J2C_VERSION]
 Версия драйвера звука: [AUDIO_DRIVER_VERSION]
-Версия LLCEFLib/CEF: [LLCEFLIB_VERSION]
+Версия CEF: [LIBCEF_VERSION]
 Версия LibVLC: [LIBVLC_VERSION]
 Версия голосового сервера: [VOICE_VERSION]
 	</string>
diff --git a/indra/newview/skins/default/xui/tr/strings.xml b/indra/newview/skins/default/xui/tr/strings.xml
index 7b4bf1fca6344bd7163f5fbccb5da036f322611d..dda7902e943a168bb6809b0fc2c7f6dc6c3c6538 100644
--- a/indra/newview/skins/default/xui/tr/strings.xml
+++ b/indra/newview/skins/default/xui/tr/strings.xml
@@ -79,7 +79,7 @@ VFS (önbellek) oluşturma zamanı: [VFS_TIME]
 	<string name="AboutLibs">
 		J2C Kod Çözücü Sürümü: [J2C_VERSION]
 Ses Sürücüsü Sürümü: [AUDIO_DRIVER_VERSION]
-LLCEFLib/CEF Sürümü: [LLCEFLIB_VERSION]
+CEF Sürümü: [LIBCEF_VERSION]
 LibVLC Sürümü: [LIBVLC_VERSION]
 Ses Sunucusu Sürümü: [VOICE_VERSION]
 	</string>
diff --git a/indra/newview/skins/default/xui/zh/strings.xml b/indra/newview/skins/default/xui/zh/strings.xml
index ec08c9f91e31d0f378cc8fbf7e73abf5e9aac942..9e88e962840a26354bb198f12198daea83925d29 100644
--- a/indra/newview/skins/default/xui/zh/strings.xml
+++ b/indra/newview/skins/default/xui/zh/strings.xml
@@ -79,7 +79,7 @@ VFS(快取)建立時間:[VFS_TIME]
 	<string name="AboutLibs">
 		J2C 解碼器版本: [J2C_VERSION]
 音效驅動程式版本: [AUDIO_DRIVER_VERSION]
-LLCEFLib/CEF版本:[LLCEFLIB_VERSION]
+CEF版本:[LIBCEF_VERSION]
 LibVLC版本:[LIBVLC_VERSION]N]
 語音伺服器版本: [VOICE_VERSION]
 	</string>
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index d68c01351f655f616bc2103b92ee74355f4416e6..c5bd91e3961ce0c8753248dc09dec564f7b5eb04 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -447,7 +447,7 @@ def construct(self):
                 self.path("libcef.dll")
                 self.path("libEGL.dll")
                 self.path("libGLESv2.dll")
-                self.path("llceflib_host.exe")
+                self.path("dullahan_host.exe")
                 self.path("natives_blob.bin")
                 self.path("snapshot_blob.bin")
                 self.path("widevinecdmadapter.dll")
@@ -461,7 +461,7 @@ def construct(self):
                 self.path("libcef.dll")
                 self.path("libEGL.dll")
                 self.path("libGLESv2.dll")
-                self.path("llceflib_host.exe")
+                self.path("dullahan_host.exe")
                 self.path("natives_blob.bin")
                 self.path("snapshot_blob.bin")
                 self.path("widevinecdmadapter.dll")
@@ -839,22 +839,21 @@ def path_optional(src, dst):
                         except OSError as err:
                             print "Can't symlink %s -> %s: %s" % (src, dst, err)
 
-                # LLCefLib helper apps go inside SLPlugin.app
+                # Dullahan helper apps go inside SLPlugin.app
                 if self.prefix(src="", dst="SLPlugin.app/Contents/Frameworks"):
-                    for helperappfile in ('LLCefLib Helper.app',
-                                          'LLCefLib Helper EH.app'):
+                    for helperappfile in ('DullahanHelper.app'):
                         self.path2basename(relpkgdir, helperappfile)
 
                     pluginframeworkpath = self.dst_path_of('Chromium Embedded Framework.framework');
                     # Putting a Frameworks directory under Contents/MacOS
-                    # isn't canonical, but the path baked into LLCefLib
-                    # Helper.app/Contents/MacOS/LLCefLib Helper is:
+                    # isn't canonical, but the path baked into Dullahan
+                    # Helper.app/Contents/MacOS/DullahanHelper is:
                     # @executable_path/Frameworks/Chromium Embedded Framework.framework/Chromium Embedded Framework
                     # (notice, not @executable_path/../Frameworks/etc.)
                     # So we'll create a symlink (below) from there back to the
                     # Frameworks directory nested under SLPlugin.app.
                     helperframeworkpath = \
-                        self.dst_path_of('LLCefLib Helper.app/Contents/MacOS/'
+                        self.dst_path_of('DullahanHelper.app/Contents/MacOS/'
                                          'Frameworks/Chromium Embedded Framework.framework')
 
                     self.end_prefix()
@@ -918,7 +917,7 @@ def path_optional(src, dst):
                     # Life.app/Contents/Frameworks/Chromium Embedded Framework.framework
                     origin, target = pluginframeworkpath, frameworkpath
                     symlinkf(target, origin)
-                    # from SLPlugin.app/Contents/Frameworks/LLCefLib
+                    # from SLPlugin.app/Contents/Frameworks/Dullahan
                     # Helper.app/Contents/MacOS/Frameworks/Chromium Embedded
                     # Framework.framework back to
                     # SLPlugin.app/Contents/Frameworks/Chromium Embedded Framework.framework