removed references to fix some bugs
diff --git a/src/main/cpp/appenderattachableimpl.cpp b/src/main/cpp/appenderattachableimpl.cpp
index 326a873..eb00bd9 100644
--- a/src/main/cpp/appenderattachableimpl.cpp
+++ b/src/main/cpp/appenderattachableimpl.cpp
@@ -34,7 +34,7 @@
 }
 
 
-void AppenderAttachableImpl::addAppender(const AppenderPtr& newAppender)
+void AppenderAttachableImpl::addAppender(const AppenderPtr newAppender)
 {
 	// Null values for newAppender parameter are strictly forbidden.
 	if (newAppender == 0)
@@ -93,7 +93,7 @@
 	return 0;
 }
 
-bool AppenderAttachableImpl::isAttached(const AppenderPtr& appender) const
+bool AppenderAttachableImpl::isAttached(const AppenderPtr appender) const
 {
 	if (appender == 0)
 	{
@@ -120,7 +120,7 @@
 	appenderList.clear();
 }
 
-void AppenderAttachableImpl::removeAppender(const AppenderPtr& appender)
+void AppenderAttachableImpl::removeAppender(const AppenderPtr appender)
 {
 	if (appender == 0)
 	{
diff --git a/src/main/cpp/appenderskeleton.cpp b/src/main/cpp/appenderskeleton.cpp
index c403a57..423c43b 100644
--- a/src/main/cpp/appenderskeleton.cpp
+++ b/src/main/cpp/appenderskeleton.cpp
@@ -136,7 +136,7 @@
 	append(event, pool1);
 }
 
-void AppenderSkeleton::setErrorHandler(const spi::ErrorHandlerPtr& errorHandler1)
+void AppenderSkeleton::setErrorHandler(const spi::ErrorHandlerPtr errorHandler1)
 {
     std::unique_lock lock(mutex);
 
diff --git a/src/main/cpp/asyncappender.cpp b/src/main/cpp/asyncappender.cpp
index a7b275a..184c71e 100644
--- a/src/main/cpp/asyncappender.cpp
+++ b/src/main/cpp/asyncappender.cpp
@@ -59,7 +59,7 @@
 	delete discardMap;
 }
 
-void AsyncAppender::addAppender(const AppenderPtr& newAppender)
+void AsyncAppender::addAppender(const AppenderPtr newAppender)
 {
     std::unique_lock lock(appenders->getMutex());
 	appenders->addAppender(newAppender);
@@ -230,7 +230,7 @@
 	return appenders->getAppender(n);
 }
 
-bool AsyncAppender::isAttached(const AppenderPtr& appender) const
+bool AsyncAppender::isAttached(const AppenderPtr appender) const
 {
     std::unique_lock lock(appenders->getMutex());
 	return appenders->isAttached(appender);
@@ -247,7 +247,7 @@
 	appenders->removeAllAppenders();
 }
 
-void AsyncAppender::removeAppender(const AppenderPtr& appender)
+void AsyncAppender::removeAppender(const AppenderPtr appender)
 {
     std::unique_lock lock(appenders->getMutex());
 	appenders->removeAppender(appender);
diff --git a/src/main/cpp/logger.cpp b/src/main/cpp/logger.cpp
index c134108..61f8d03 100644
--- a/src/main/cpp/logger.cpp
+++ b/src/main/cpp/logger.cpp
@@ -52,7 +52,7 @@
 {
 }
 
-void Logger::addAppender(const AppenderPtr& newAppender)
+void Logger::addAppender(const AppenderPtr newAppender)
 {
     log4cxx::spi::LoggerRepository* rep = 0;
     {
@@ -270,7 +270,7 @@
 }
 
 
-bool Logger::isAttached(const AppenderPtr& appender) const
+bool Logger::isAttached(const AppenderPtr appender) const
 {
     std::shared_lock lock(mutex);
 
@@ -469,7 +469,7 @@
     }
 }
 
-void Logger::removeAppender(const AppenderPtr& appender)
+void Logger::removeAppender(const AppenderPtr appender)
 {
     std::unique_lock lock(mutex);
 
diff --git a/src/main/include/log4cxx/appenderskeleton.h b/src/main/include/log4cxx/appenderskeleton.h
index 96d658a..64608e5 100644
--- a/src/main/include/log4cxx/appenderskeleton.h
+++ b/src/main/include/log4cxx/appenderskeleton.h
@@ -192,7 +192,7 @@
 		/**
 		Set the {@link spi::ErrorHandler ErrorHandler} for this Appender.
 		*/
-		void setErrorHandler(const spi::ErrorHandlerPtr& eh);
+        void setErrorHandler(const spi::ErrorHandlerPtr eh);
 
 		/**
 		Set the layout for this appender. Note that some appenders have
diff --git a/src/main/include/log4cxx/asyncappender.h b/src/main/include/log4cxx/asyncappender.h
index acc0415..95bdb96 100644
--- a/src/main/include/log4cxx/asyncappender.h
+++ b/src/main/include/log4cxx/asyncappender.h
@@ -82,7 +82,7 @@
 		 *
 		 * @param newAppender appender to add, may not be null.
 		*/
-		void addAppender(const AppenderPtr& newAppender);
+        void addAppender(const AppenderPtr newAppender);
 
 		virtual void doAppend(const spi::LoggingEventPtr& event,
 			log4cxx::helpers::Pool& pool1);
@@ -122,7 +122,7 @@
 		* @param appender appender.
 		* @return true if attached.
 		*/
-		bool isAttached(const AppenderPtr& appender) const;
+        bool isAttached(const AppenderPtr appender) const;
 
 		virtual bool requiresLayout() const;
 
@@ -135,7 +135,7 @@
 		 * Removes an appender.
 		 * @param appender appender to remove.
 		*/
-		void removeAppender(const AppenderPtr& appender);
+        void removeAppender(const AppenderPtr appender);
 		/**
 		* Remove appender by name.
 		* @param name name.
diff --git a/src/main/include/log4cxx/helpers/appenderattachableimpl.h b/src/main/include/log4cxx/helpers/appenderattachableimpl.h
index cef7b35..f980bf1 100644
--- a/src/main/include/log4cxx/helpers/appenderattachableimpl.h
+++ b/src/main/include/log4cxx/helpers/appenderattachableimpl.h
@@ -65,7 +65,7 @@
 		/**
 		 * Add an appender.
 		 */
-		virtual void addAppender(const AppenderPtr& newAppender);
+        virtual void addAppender(const AppenderPtr newAppender);
 
 		/**
 		 Call the <code>doAppend</code> method on all attached appenders.
@@ -87,7 +87,7 @@
 		 Returns <code>true</code> if the specified appender is in the
 		 list of attached appenders, <code>false</code> otherwise.
 		*/
-		virtual bool isAttached(const AppenderPtr& appender) const;
+        virtual bool isAttached(const AppenderPtr appender) const;
 
 		/**
 		 * Remove all previously added appenders.
@@ -97,7 +97,7 @@
 		/**
 		 * Remove the appender passed as parameter from the list of appenders.
 		 */
-		virtual void removeAppender(const AppenderPtr& appender);
+        virtual void removeAppender(const AppenderPtr appender);
 
 		/**
 		 * Remove the appender with the name passed as parameter from the
diff --git a/src/main/include/log4cxx/logger.h b/src/main/include/log4cxx/logger.h
index ec95566..66f78b6 100644
--- a/src/main/include/log4cxx/logger.h
+++ b/src/main/include/log4cxx/logger.h
@@ -142,7 +142,7 @@
     <p>If <code>newAppender</code> is already in the list of
     appenders, then it won't be added again.
     */
-    virtual void addAppender(const AppenderPtr& newAppender);
+    virtual void addAppender(const AppenderPtr newAppender);
 
 
     /**
@@ -937,7 +937,7 @@
     /**
     Is the appender passed as parameter attached to this logger?
     */
-    bool isAttached(const AppenderPtr& appender) const;
+    bool isAttached(const AppenderPtr appender) const;
 
     /**
      *  Check whether this logger is enabled for the <code>DEBUG</code>
@@ -1448,7 +1448,7 @@
     /**
     Remove the appender passed as parameter form the list of appenders.
     */
-    void removeAppender(const AppenderPtr& appender);
+    void removeAppender(const AppenderPtr appender);
 
     /**
     Remove the appender with the name passed as parameter form the
diff --git a/src/main/include/log4cxx/spi/appenderattachable.h b/src/main/include/log4cxx/spi/appenderattachable.h
index 14004ba..e855e37 100644
--- a/src/main/include/log4cxx/spi/appenderattachable.h
+++ b/src/main/include/log4cxx/spi/appenderattachable.h
@@ -44,7 +44,7 @@
 		/**
 		 * Add an appender.
 		 */
-		virtual void addAppender(const AppenderPtr& newAppender) = 0;
+        virtual void addAppender(const AppenderPtr newAppender) = 0;
 
 		/**
 		 * Get all previously added appenders as an AppenderList.
@@ -60,7 +60,7 @@
 		 * Returns <code>true</code> if the specified appender is in list of
 		 * attached appenders, <code>false</code> otherwise.
 		 */
-		virtual bool isAttached(const AppenderPtr& appender) const = 0;
+        virtual bool isAttached(const AppenderPtr appender) const = 0;
 
 		/**
 		 * Remove all previously added appenders.
@@ -70,7 +70,7 @@
 		/**
 		 * Remove the appender passed as parameter from the list of appenders.
 		 */
-		virtual void removeAppender(const AppenderPtr& appender) = 0;
+        virtual void removeAppender(const AppenderPtr appender) = 0;
 
 		/**
 		 * Remove the appender with the name passed as parameter from the