Loader changes & optimizations related to issue #2551
diff --git a/user_guide_src/source/changelog.rst b/user_guide_src/source/changelog.rst
index 2bd34c3..08a8f0b 100644
--- a/user_guide_src/source/changelog.rst
+++ b/user_guide_src/source/changelog.rst
@@ -375,6 +375,8 @@
       -  ``$config['rewrite_short_tags']`` now has no effect when using PHP 5.4 as ``<?=`` will always be available.
       -  Changed method ``config()`` to return whatever ``CI_Config::load()`` returns instead of always being void.
       -  Added support for model aliasing on autoload.
+      -  Changed method ``is_loaded()`` to ask for the (case sensitive) library name instead of its instance name.
+      -  Removed ``$_base_classes`` property and unified all class data in ``$_ci_classes`` instead.
 
    -  :doc:`Input Library <libraries/input>` changes include:
 
@@ -596,6 +598,7 @@
 -  Fixed a bug (#2490) - :doc:`Database Class <database/queries>` method ``query()`` returning boolean instead of a result object for PostgreSQL-specific *INSERT INTO ... RETURNING* statements.
 -  Fixed a bug (#249) - :doc:`Cache Library <libraries/caching>` didn't properly handle Memcache(d) configurations with missing options.
 -  Fixed a bug (#180) - :php:func:`config_item()` didn't take into account run-time configuration changes.
+-  Fixed a bug (#2551) - :doc:`Loader Library <libraries/loader>` method ``library()`` didn't properly check if a class that is being loaded already exits.
 
 Version 2.1.4
 =============
diff --git a/user_guide_src/source/libraries/loader.rst b/user_guide_src/source/libraries/loader.rst
index 1597bf1..19446a9 100644
--- a/user_guide_src/source/libraries/loader.rst
+++ b/user_guide_src/source/libraries/loader.rst
@@ -261,6 +261,32 @@
 This method is an alias of the :doc:`config file loading
 method <config>`: ``$this->config->load()``
 
+$this->load->is_loaded('library_name')
+======================================
+
+The ``is_loaded()`` method allows you to check if a class has already
+been loaded or not.
+
+.. note:: The word "class" here refers to libraries and drivers.
+
+If the requested class has been loaded, the method returns its assigned
+name in the CI Super-object and FALSE if it's not::
+
+	$this->load->library('form_validation');
+	$this->load->is_loaded('Form_validation');	// returns 'form_validation'
+
+	$this->load->is_loaded('Nonexistent_library');	// returns FALSE
+
+.. important:: If you have more than one instance of a class (assigned to
+	different properties), then the first one will be returned.
+
+::
+
+	$this->load->library('form_validation', $config, 'fv');
+	$this->load->library('form_validation');
+
+	$this->load->is_loaded('Form_validation');	// returns 'fv'
+
 Application "Packages"
 ======================