[logback] 01/02: Import Upstream version 1.0.4

Markus Koschany apo at moszumanska.debian.org
Fri Apr 7 22:16:22 UTC 2017


This is an automated email from the git hooks/post-receive script.

apo pushed a commit to branch wheezy
in repository logback.

commit b179fd312b67aa84f540e3a5580574051b78c244
Author: Markus Koschany <apo at debian.org>
Date:   Sat Apr 8 00:14:48 2017 +0200

    Import Upstream version 1.0.4
---
 README.txt                                         |    5 +-
 docs/.htaccess                                     |    5 +-
 docs/access.html                                   |    8 +-
 docs/beagle/images/beagleFeature.png               |  Bin 16874 -> 0 bytes
 docs/beagle/images/beagleSample.png                |  Bin 37986 -> 0 bytes
 docs/beagle/images/beagleView0.png                 |  Bin 2093 -> 0 bytes
 docs/beagle/images/callerData-jump.png             |  Bin 15024 -> 0 bytes
 docs/beagle/images/callerData.png                  |  Bin 10848 -> 0 bytes
 docs/beagle/images/font.png                        |  Bin 57302 -> 0 bytes
 docs/beagle/images/menu.png                        |  Bin 6263 -> 0 bytes
 docs/beagle/images/nebulaFeature.png               |  Bin 44392 -> 0 bytes
 docs/beagle/images/play_doc.gif                    |  Bin 598 -> 0 bytes
 docs/beagle/images/preferences.png                 |  Bin 38884 -> 0 bytes
 docs/beagle/images/sailing-ship-128x128.png        |  Bin 18587 -> 0 bytes
 docs/beagle/images/sailing-ship-16x16.png          |  Bin 498 -> 0 bytes
 docs/beagle/images/sailing-ship-32x32.png          |  Bin 2276 -> 0 bytes
 docs/beagle/images/sailing-ship-48x48.png          |  Bin 4073 -> 0 bytes
 docs/beagle/index.html                             |  193 ---
 docs/codes.html                                    |  337 ++---
 docs/consolePlugin.html                            |  330 +++++
 docs/css/anchor12.png                              |  Bin 624 -> 0 bytes
 docs/css/anchor16.png                              |  Bin 945 -> 0 bytes
 docs/css/anchor20.png                              |  Bin 1212 -> 0 bytes
 docs/css/anchor24.png                              |  Bin 1630 -> 0 bytes
 docs/css/common.css                                |   29 +-
 docs/css/screen.css                                |   76 +-
 docs/demo.html                                     |   34 +-
 docs/dependencies.html                             |   52 +-
 docs/documentation.html                            |   34 +-
 docs/download.html                                 |   48 +-
 docs/faq.html                                      |    8 +-
 docs/images/logos/lblogo-150.jpg                   |  Bin 16605 -> 0 bytes
 docs/images/logos/lblogo-200.jpg                   |  Bin 20874 -> 0 bytes
 docs/images/logos/lblogo-40.jpg                    |  Bin 8716 -> 0 bytes
 docs/index.html                                    |   43 +-
 docs/job.html                                      |   67 +-
 docs/js/decorator.js                               |  100 --
 docs/mailinglist.html                              |   46 +-
 docs/manual/.htaccess                              |    4 +-
 docs/manual/appenders.html                         | 1134 +++++------------
 docs/manual/architecture.html                      |  116 +-
 docs/manual/configuration.html                     |  548 ++++-----
 docs/manual/encoders.html                          |   26 +-
 docs/manual/filters.html                           |   56 +-
 docs/manual/groovy.html                            |  183 ++-
 .../chapters/receivers/serverSocketReceiver.png    |  Bin 13715 -> 0 bytes
 .../images/chapters/receivers/socketReceiver.png   |  Bin 14043 -> 0 bytes
 docs/manual/index.html                             |    8 -
 docs/manual/introduction.html                      |   37 +-
 docs/manual/jmxConfig.html                         |   27 +-
 docs/manual/layouts.html                           |  636 +++++-----
 docs/manual/loggingSeparation.html                 |   45 +-
 docs/manual/mdc.html                               |   20 +-
 docs/manual/menu.js                                |   26 +-
 docs/manual/migrationFromLog4j.html                |   12 +-
 docs/manual/onJoran.html                           |   82 +-
 docs/manual/receivers.html                         |  541 --------
 docs/manual/usingSSL.html                          | 1294 --------------------
 docs/news.html                                     |  665 +---------
 docs/project-reports.html                          |   10 +-
 docs/reasonsToSwitch.html                          |   91 +-
 docs/recipes/emailPerTransaction.html              |    4 +-
 docs/setup.html                                    |  234 ++--
 docs/templates/creative.js                         |    2 +-
 docs/templates/footer.js                           |   10 +-
 docs/templates/left.js                             |    5 -
 docs/volunteer.html                                |  109 +-
 logback-access/pom.xml                             |   50 +-
 .../ch/qos/logback/access/AccessConstants.java     |    2 +-
 .../java/ch/qos/logback/access/PatternLayout.java  |   59 +-
 .../qos/logback/access/PatternLayoutEncoder.java   |    2 +-
 .../logback/access/ViewStatusMessagesServlet.java  |    2 +-
 .../access/boolex/JaninoEventEvaluator.java        |    2 +-
 .../java/ch/qos/logback/access/db/DBAppender.java  |    6 +-
 .../java/ch/qos/logback/access/db/script/mysql.sql |    4 +-
 .../qos/logback/access/filter/CountingFilter.java  |    2 +-
 .../qos/logback/access/filter/PeriodicStats.java   |    2 +-
 .../qos/logback/access/filter/StatisticalView.java |    2 +-
 .../logback/access/filter/StatisticalViewImpl.java |    2 +-
 .../ch/qos/logback/access/filter/StatsByDay.java   |    2 +-
 .../ch/qos/logback/access/filter/StatsByHour.java  |    2 +-
 .../qos/logback/access/filter/StatsByMinute.java   |    2 +-
 .../ch/qos/logback/access/filter/StatsByMonth.java |    2 +-
 .../ch/qos/logback/access/filter/StatsByWeek.java  |    2 +-
 .../qos/logback/access/html/DefaultCssBuilder.java |    2 +-
 .../ch/qos/logback/access/html/HTMLLayout.java     |    2 +-
 .../ch/qos/logback/access/html/UrlCssBuilder.java  |    2 +-
 .../logback/access/jetty/JettyServerAdapter.java   |   21 +-
 .../qos/logback/access/jetty/RequestLogImpl.java   |    2 +-
 .../logback/access/jetty/RequestLogRegistry.java   |    2 +-
 .../logback/access/joran/JoranConfigurator.java    |   28 +-
 .../access/joran/action/ConfigurationAction.java   |    2 +-
 .../access/joran/action/EvaluatorAction.java       |    2 +-
 .../AccessEventPreSerializationTransformer.java    |    2 +-
 .../ch/qos/logback/access/net/SMTPAppender.java    |    4 +-
 .../qos/logback/access/net/SSLSocketAppender.java  |   47 -
 .../qos/logback/access/net/SimpleSocketServer.java |    2 +-
 .../ch/qos/logback/access/net/SocketAppender.java  |   24 +-
 .../java/ch/qos/logback/access/net/SocketNode.java |    2 +-
 .../ch/qos/logback/access/net/URLEvaluator.java    |    2 +-
 .../access/net/server/SSLServerSocketAppender.java |   44 -
 .../access/net/server/ServerSocketAppender.java    |   44 -
 .../ch/qos/logback/access/net/server/package.html  |   14 -
 .../logback/access/pattern/AccessConverter.java    |    2 +-
 .../access/pattern/ContentLengthConverter.java     |    2 +-
 .../qos/logback/access/pattern/DateConverter.java  |    7 +-
 .../access/pattern/ElapsedTimeConverter.java       |   24 -
 .../access/pattern/EnsureLineSeparation.java       |   12 +-
 .../access/pattern/FullRequestConverter.java       |    4 +-
 .../access/pattern/FullResponseConverter.java      |    4 +-
 .../access/pattern/LineSeparatorConverter.java     |    2 +-
 .../access/pattern/LocalIPAddressConverter.java    |    2 +-
 .../logback/access/pattern/LocalPortConverter.java |    2 +-
 .../ch/qos/logback/access/pattern/NAConverter.java |    2 +-
 .../access/pattern/RemoteHostConverter.java        |    2 +-
 .../access/pattern/RemoteIPAddressConverter.java   |    2 +-
 .../access/pattern/RemoteUserConverter.java        |    2 +-
 .../access/pattern/RequestAttributeConverter.java  |    2 +-
 .../access/pattern/RequestContentConverter.java    |    2 +-
 .../access/pattern/RequestCookieConverter.java     |    2 +-
 .../access/pattern/RequestHeaderConverter.java     |    2 +-
 .../access/pattern/RequestMethodConverter.java     |    2 +-
 .../access/pattern/RequestParameterConverter.java  |    2 +-
 .../access/pattern/RequestProtocolConverter.java   |    2 +-
 .../access/pattern/RequestURIConverter.java        |    2 +-
 .../access/pattern/RequestURLConverter.java        |    2 +-
 .../access/pattern/ResponseContentConverter.java   |    2 +-
 .../access/pattern/ResponseHeaderConverter.java    |    2 +-
 .../access/pattern/ServerNameConverter.java        |    2 +-
 .../access/pattern/StatusCodeConverter.java        |    2 +-
 .../ch/qos/logback/access/servlet/TeeFilter.java   |    2 +-
 .../access/servlet/TeeHttpServletRequest.java      |    2 +-
 .../access/servlet/TeeHttpServletResponse.java     |    2 +-
 .../access/servlet/TeeServletInputStream.java      |    2 +-
 .../access/servlet/TeeServletOutputStream.java     |    2 +-
 .../java/ch/qos/logback/access/servlet/Util.java   |   17 +-
 .../access/sift/AccessEventDiscriminator.java      |   19 +-
 ...FactoryUsingJoran.java => AppenderFactory.java} |   16 +-
 .../ch/qos/logback/access/sift/SiftAction.java     |    8 +-
 .../qos/logback/access/sift/SiftingAppender.java   |    7 +-
 .../access/sift/SiftingJoranConfigurator.java      |   20 +-
 .../ch/qos/logback/access/spi/AccessContext.java   |    2 +-
 .../ch/qos/logback/access/spi/AccessEvent.java     |   64 +-
 .../ch/qos/logback/access/spi/IAccessEvent.java    |   15 +-
 .../ch/qos/logback/access/spi/ServerAdapter.java   |    3 +-
 .../main/java/ch/qos/logback/access/spi/Util.java  |    2 +-
 .../ch/qos/logback/access/tomcat/LogbackValve.java |   56 +-
 .../logback/access/tomcat/TomcatServerAdapter.java |   18 +-
 .../java/ch/qos/logback/access/AllAccessTest.java  |   21 +-
 .../java/ch/qos/logback/access/TeztConstants.java  |    2 +-
 .../access/boolex/JaninoEventEvaluatorTest.java    |    2 +-
 .../ch/qos/logback/access/boolex/PackageTest.java  |    2 +-
 .../access/db/DBAppenderIntegrationTest.java       |   11 +-
 ...DBAppenderHSQLTest.java => DBAppenderTest.java} |   89 +-
 ...TestFixture.java => DBAppenderTestFixture.java} |   12 +-
 .../java/ch/qos/logback/access/db/PackageTest.java |   15 +-
 .../access/dummy/DummyAccessEventBuilder.java      |    2 +-
 .../ch/qos/logback/access/dummy/DummyRequest.java  |    2 +-
 .../ch/qos/logback/access/dummy/DummyResponse.java |    2 +-
 .../logback/access/dummy/DummyServerAdapter.java   |   16 +-
 .../ch/qos/logback/access/filter/PackageTest.java  |    2 +-
 .../qos/logback/access/filter/StatsByDayTest.java  |    2 +-
 .../qos/logback/access/jetty/JettyBasicTest.java   |    2 +-
 .../qos/logback/access/jetty/JettyFixtureBase.java |    2 +-
 .../JettyFixtureWithListAndConsoleAppenders.java   |    2 +-
 .../ch/qos/logback/access/jetty/PackageTest.java   |    2 +-
 .../qos/logback/access/joran/ConditionalTest.java  |   13 -
 .../access/joran/JoranConfiguratorTest.java        |    2 +-
 .../ch/qos/logback/access/joran/PackageTest.java   |   13 -
 .../qos/logback/access/net/MockSocketServer.java   |   77 ++
 .../ch/qos/logback/access/net/NOPOutputStream.java |    2 +-
 .../ch/qos/logback/access/net/PackageTest.java     |    4 +-
 .../logback/access/net/SerializationPerfTest.java  |    2 +-
 .../qos/logback/access/net/SocketAppenderTest.java |   89 ++
 .../qos/logback/access/net/URLEvaluatorTest.java   |    2 +-
 .../qos/logback/access/pattern/ConverterTest.java  |    2 +-
 .../ch/qos/logback/access/pattern/PackageTest.java |    2 +-
 .../ch/qos/logback/access/servlet/PackageTest.java |    2 +-
 .../qos/logback/access/servlet/TeeFilterTest.java  |    2 +-
 .../ch/qos/logback/access/sift/PackageTest.java    |    2 +-
 .../logback/access/sift/SiftingAppenderTest.java   |   34 +-
 .../access/spi/AccessEventSerializationTest.java   |    2 +-
 .../ch/qos/logback/access/spi/PackageTest.java     |    2 +-
 .../access/testUtil/NotifyingListAppender.java     |    2 +-
 logback-classic/integration.xml                    |    4 +
 logback-classic/pom.xml                            |  105 +-
 .../logback/classic/gaffer/AppenderDelegate.groovy |    5 +-
 .../classic/gaffer/AsyncAppenderDelegate.groovy    |   30 -
 .../classic/gaffer/ComponentDelegate.groovy        |    4 +-
 .../classic/gaffer/ConfigurationDelegate.groovy    |  129 +-
 .../classic/gaffer/GafferConfigurator.groovy       |   59 +-
 .../logback/classic/sift/GSiftingAppender.groovy   |  156 +++
 .../logback/classic/sift/ZSiftingDelegate.groovy   |   39 +
 .../java/ch/qos/logback/classic/AsyncAppender.java |    2 +-
 .../ch/qos/logback/classic/BasicConfigurator.java  |    2 +-
 .../ch/qos/logback/classic/ClassicConstants.java   |    5 +-
 .../main/java/ch/qos/logback/classic/Level.java    |    4 +-
 .../main/java/ch/qos/logback/classic/Logger.java   |   64 +-
 .../java/ch/qos/logback/classic/LoggerContext.java |   95 +-
 .../java/ch/qos/logback/classic/PatternLayout.java |   52 +-
 .../logback/classic/ViewStatusMessagesServlet.java |    2 +-
 .../logback/classic/boolex/GEventEvaluator.java    |    5 +-
 .../ch/qos/logback/classic/boolex/IEvaluator.java  |    2 +-
 .../classic/boolex/JaninoEventEvaluator.java       |    2 +-
 .../logback/classic/boolex/OnErrorEvaluator.java   |    2 +-
 .../logback/classic/boolex/OnMarkerEvaluator.java  |    2 +-
 .../java/ch/qos/logback/classic/db/DBAppender.java |  115 +-
 .../java/ch/qos/logback/classic/db/DBHelper.java   |    6 +-
 .../java/ch/qos/logback/classic/db/SQLBuilder.java |    2 +-
 .../qos/logback/classic/db/names/ColumnName.java   |    2 +-
 .../logback/classic/db/names/DBNameResolver.java   |    2 +-
 .../classic/db/names/DefaultDBNameResolver.java    |    2 +-
 .../classic/db/names/SimpleDBNameResolver.java     |    2 +-
 .../ch/qos/logback/classic/db/names/TableName.java |    2 +-
 .../classic/encoder/PatternLayoutEncoder.java      |    2 +-
 .../ch/qos/logback/classic/filter/LevelFilter.java |    2 +-
 .../logback/classic/filter/ThresholdFilter.java    |    2 +-
 .../ch/qos/logback/classic/gaffer/GafferUtil.java  |    2 +-
 .../classic/helpers/MDCInsertingServletFilter.java |    2 +-
 .../logback/classic/html/DefaultCssBuilder.java    |    2 +-
 .../classic/html/DefaultThrowableRenderer.java     |    4 +-
 .../ch/qos/logback/classic/html/HTMLLayout.java    |    2 +-
 .../ch/qos/logback/classic/html/UrlCssBuilder.java |    2 +-
 .../qos/logback/classic/jmx/JMXConfigurator.java   |    2 +-
 .../logback/classic/jmx/JMXConfiguratorMBean.java  |    2 +-
 .../java/ch/qos/logback/classic/jmx/MBeanUtil.java |   20 +-
 .../logback/classic/joran/JoranConfigurator.java   |   52 +-
 .../classic/joran/action/ConfigurationAction.java  |   42 +-
 .../classic/joran/action/ConsolePluginAction.java  |    2 +-
 .../classic/joran/action/ContextNameAction.java    |    2 +-
 .../classic/joran/action/EvaluatorAction.java      |    2 +-
 .../classic/joran/action/InsertFromJNDIAction.java |   22 +-
 .../joran/action/JMXConfiguratorAction.java        |    2 +-
 .../logback/classic/joran/action/LevelAction.java  |    2 +-
 .../logback/classic/joran/action/LoggerAction.java |    2 +-
 .../joran/action/LoggerContextListenerAction.java  |    2 +-
 .../classic/joran/action/ReceiverAction.java       |   81 --
 .../classic/joran/action/RootLoggerAction.java     |    2 +-
 .../java/ch/qos/logback/classic/jul/JULHelper.java |    5 +-
 .../logback/classic/jul/LevelChangePropagator.java |    2 +-
 .../ch/qos/logback/classic/log4j/XMLLayout.java    |    2 +-
 .../qos/logback/classic/net/JMSQueueAppender.java  |    2 +-
 .../ch/qos/logback/classic/net/JMSQueueSink.java   |    2 +-
 .../qos/logback/classic/net/JMSTopicAppender.java  |    2 +-
 .../ch/qos/logback/classic/net/JMSTopicSink.java   |    2 +-
 .../LoggingEventPreSerializationTransformer.java   |    2 +-
 .../ch/qos/logback/classic/net/ReceiverBase.java   |   87 --
 .../ch/qos/logback/classic/net/SMTPAppender.java   |   19 +-
 .../qos/logback/classic/net/SSLSocketAppender.java |   55 -
 .../qos/logback/classic/net/SSLSocketReceiver.java |   84 --
 .../logback/classic/net/SimpleSSLSocketServer.java |  101 --
 .../logback/classic/net/SimpleSocketServer.java    |   90 +-
 .../ch/qos/logback/classic/net/SocketAcceptor.java |    2 +-
 .../ch/qos/logback/classic/net/SocketAppender.java |   30 +-
 .../ch/qos/logback/classic/net/SocketNode.java     |   18 +-
 .../ch/qos/logback/classic/net/SocketReceiver.java |  225 ----
 .../ch/qos/logback/classic/net/SyslogAppender.java |   44 +-
 .../classic/net/server/RemoteAppenderClient.java   |   41 -
 .../net/server/RemoteAppenderServerListener.java   |   49 -
 .../net/server/RemoteAppenderServerRunner.java     |   53 -
 .../net/server/RemoteAppenderStreamClient.java     |  142 ---
 .../net/server/SSLServerSocketAppender.java        |   54 -
 .../net/server/SSLServerSocketReceiver.java        |   70 --
 .../classic/net/server/ServerSocketAppender.java   |   56 -
 .../classic/net/server/ServerSocketReceiver.java   |  178 ---
 .../ch/qos/logback/classic/net/server/package.html |   14 -
 .../qos/logback/classic/pattern/Abbreviator.java   |    2 +-
 .../classic/pattern/CallerDataConverter.java       |    2 +-
 .../classic/pattern/ClassNameOnlyAbbreviator.java  |    2 +-
 .../classic/pattern/ClassOfCallerConverter.java    |    2 +-
 .../logback/classic/pattern/ClassicConverter.java  |    2 +-
 .../classic/pattern/ContextNameConverter.java      |    2 +-
 .../qos/logback/classic/pattern/DateConverter.java |    2 +-
 .../classic/pattern/EnsureExceptionHandling.java   |    2 +-
 .../pattern/ExtendedThrowableProxyConverter.java   |    6 +-
 .../classic/pattern/FileOfCallerConverter.java     |    2 +-
 .../logback/classic/pattern/LevelConverter.java    |    2 +-
 .../classic/pattern/LineOfCallerConverter.java     |    2 +-
 .../classic/pattern/LineSeparatorConverter.java    |    2 +-
 .../pattern/LocalSequenceNumberConverter.java      |   36 -
 .../logback/classic/pattern/LoggerConverter.java   |    2 +-
 .../qos/logback/classic/pattern/MDCConverter.java  |   23 +-
 .../logback/classic/pattern/MarkerConverter.java   |    2 +-
 .../logback/classic/pattern/MessageConverter.java  |    2 +-
 .../classic/pattern/MethodOfCallerConverter.java   |    2 +-
 .../logback/classic/pattern/NamedConverter.java    |    2 +-
 .../pattern/NopThrowableInformationConverter.java  |    2 +-
 .../logback/classic/pattern/PropertyConverter.java |    2 +-
 .../classic/pattern/RelativeTimeConverter.java     |    2 +-
 .../RootCauseFirstThrowableProxyConverter.java     |   51 +-
 .../classic/pattern/SyslogStartConverter.java      |   23 +-
 .../TargetLengthBasedClassNameAbbreviator.java     |    2 +-
 .../logback/classic/pattern/ThreadConverter.java   |    2 +-
 .../pattern/ThrowableHandlingConverter.java        |    2 +-
 .../classic/pattern/ThrowableProxyConverter.java   |   60 +-
 .../java/ch/qos/logback/classic/pattern/Util.java  |    2 +-
 .../color/HighlightingCompositeConverter.java      |   39 -
 .../classic/selector/ContextJNDISelector.java      |   33 +-
 .../logback/classic/selector/ContextSelector.java  |    2 +-
 .../classic/selector/DefaultContextSelector.java   |   16 +-
 .../selector/servlet/ContextDetachingSCL.java      |    9 +-
 .../selector/servlet/LoggerContextFilter.java      |    2 +-
 ...FactoryUsingJoran.java => AppenderFactory.java} |   20 +-
 .../classic/sift/ContextBasedDiscriminator.java    |   21 +-
 .../sift/JNDIBasedContextDiscriminator.java        |   21 +-
 .../classic/sift/MDCBasedDiscriminator.java        |   18 +-
 .../ch/qos/logback/classic/sift/SiftAction.java    |   18 +-
 .../qos/logback/classic/sift/SiftingAppender.java  |   11 +-
 .../classic/sift/SiftingJoranConfigurator.java     |   22 +-
 .../ch/qos/logback/classic/spi/CallerData.java     |   55 +-
 .../logback/classic/spi/ClassPackagingData.java    |    2 +-
 .../ch/qos/logback/classic/spi/EventArgUtil.java   |   54 -
 .../ch/qos/logback/classic/spi/ILoggingEvent.java  |    2 +-
 .../qos/logback/classic/spi/IThrowableProxy.java   |    2 +-
 .../qos/logback/classic/spi/LoggerComparator.java  |    2 +-
 .../logback/classic/spi/LoggerContextAware.java    |    2 +-
 .../classic/spi/LoggerContextAwareBase.java        |    2 +-
 .../logback/classic/spi/LoggerContextListener.java |    2 +-
 .../qos/logback/classic/spi/LoggerContextVO.java   |   34 +-
 .../qos/logback/classic/spi/LoggerRemoteView.java  |    2 +-
 .../ch/qos/logback/classic/spi/LoggingEvent.java   |   96 +-
 .../ch/qos/logback/classic/spi/LoggingEventVO.java |    2 +-
 .../classic/spi/PackagingDataCalculator.java       |   23 +-
 .../ch/qos/logback/classic/spi/PlatformInfo.java   |    2 +-
 .../java/ch/qos/logback/classic/spi/STEUtil.java   |    2 +-
 .../classic/spi/StackTraceElementProxy.java        |    2 +-
 .../ch/qos/logback/classic/spi/ThrowableProxy.java |    2 +-
 .../logback/classic/spi/ThrowableProxyUtil.java    |   44 +-
 .../qos/logback/classic/spi/ThrowableProxyVO.java  |    2 +-
 .../qos/logback/classic/spi/TurboFilterList.java   |    2 +-
 .../classic/turbo/DuplicateMessageFilter.java      |    2 +-
 .../classic/turbo/DynamicThresholdFilter.java      |    2 +-
 .../qos/logback/classic/turbo/LRUMessageCache.java |    2 +-
 .../ch/qos/logback/classic/turbo/MDCFilter.java    |    2 +-
 .../logback/classic/turbo/MDCValueLevelPair.java   |    2 +-
 .../ch/qos/logback/classic/turbo/MarkerFilter.java |    2 +-
 .../qos/logback/classic/turbo/MatchingFilter.java  |    2 +-
 .../classic/turbo/ReconfigureOnChangeFilter.java   |   16 +-
 .../ch/qos/logback/classic/turbo/TurboFilter.java  |    4 +-
 .../logback/classic/util/ContextInitializer.java   |   10 +-
 .../classic/util/ContextSelectorStaticBinder.java  |    2 +-
 .../classic/util/CopyOnInheritThreadLocal.java     |    2 +-
 .../classic/util/DefaultNestedComponentRules.java  |    4 +-
 .../java/ch/qos/logback/classic/util/EnvUtil.java  |    6 +-
 .../java/ch/qos/logback/classic/util/JNDIUtil.java |    7 +-
 .../classic/util/LevelToSyslogSeverity.java        |    2 +-
 .../logback/classic/util/LogbackMDCAdapter.java    |    2 +-
 .../qos/logback/classic/util/LoggerNameUtil.java   |   65 -
 .../classic/util/StatusListenerConfigHelper.java   |   33 +-
 .../java/org/slf4j/impl/StaticLoggerBinder.java    |   10 +-
 .../main/java/org/slf4j/impl/StaticMDCBinder.java  |    2 +-
 .../java/org/slf4j/impl/StaticMarkerBinder.java    |    2 +-
 .../gaffer/ConfigurationDelegateTest.groovy        |   60 -
 .../classic/gaffer/GafferConfiguratorTest.groovy   |  261 ++--
 .../logback/classic/gaffer/PropertyUtilTest.groovy |   13 -
 .../classic/sift/GSiftingAppenderTest.groovy       |  111 ++
 .../groovy/issues/logback811/LineNumTest.groovy    |   30 -
 .../test/groovy/issues/logback811/logback._groovy  |   12 -
 .../src/test/input/gaffer/asyncAppender.groovy     |   31 -
 .../src/test/input/issue/logback292.xml            |    3 -
 .../input/joran/jul/levelChangePropagator0.xml     |    2 +-
 .../input/joran/jul/levelChangePropagator1.xml     |    3 +-
 .../test/input/joran/sift/compositeProperty.xml    |   27 -
 .../test/input/joran/sift/defaultLayoutRule.xml    |    5 +-
 .../src/test/input/joran/sift/hoard0.xml           |    9 +-
 .../src/test/input/joran/sift/lbclassic203.xml     |    2 +-
 .../src/test/input/joran/sift/lingering.xml        |   22 -
 .../src/test/input/joran/sift/maxAppenderCount.xml |   22 -
 .../src/test/input/joran/sift/multipleNesting.xml  |   10 +-
 .../joran/sift/propertyDefinedInSiftElement.xml    |   24 -
 .../test/input/joran/sift/propertyPropagation.xml  |   25 -
 .../src/test/input/joran/sift/smoke.xml            |    4 +-
 .../src/test/input/joran/sift/timeout.xml          |   23 -
 .../input/joran/sift/unsetDefaultValueProperty.xml |    2 +-
 .../src/test/input/joran/sift/zeroNesting.xml      |    4 +-
 .../src/test/input/joran/smtp/customBufferSize.xml |    4 +-
 .../src/test/input/joran/smtp/customEvaluator.xml  |    2 +-
 .../src/test/input/joran/timestamp-context.xml     |    4 -
 .../src/test/input/joran/timestamp-local.xml       |    7 -
 logback-classic/src/test/input/joran/timestamp.xml |    4 +
 .../test/input/serialization/logger_v1.0.11.ser    |  Bin 1181 -> 0 bytes
 .../test/input/serialization/logger_v1.0.12.ser    |  Bin 82 -> 0 bytes
 ...{scan_logback_474.xml => scan_lbclassic154.xml} |    2 +-
 .../ch/qos/logback/classic/AllClassicTest.java     |    2 +-
 .../ch/qos/logback/classic/AsyncAppenderTest.java  |   20 +-
 .../qos/logback/classic/ClassicTestConstants.java  |    2 +-
 .../src/test/java/ch/qos/logback/classic/Foo.java  |    2 +-
 .../test/java/ch/qos/logback/classic/HLogger.java  |    2 +-
 .../ch/qos/logback/classic/HLoggerContext.java     |    2 +-
 .../logback/classic/LoggerContextDeadlockTest.java |    2 +-
 .../qos/logback/classic/LoggerContextPerfTest.java |   91 --
 .../ch/qos/logback/classic/LoggerContextTest.java  |   41 +-
 .../ch/qos/logback/classic/LoggerPerfTest.java     |    9 +-
 .../logback/classic/LoggerSerializationTest.java   |  108 +-
 .../java/ch/qos/logback/classic/LoggerTest.java    |    2 +-
 .../ch/qos/logback/classic/LoggerTestHelper.java   |    2 +-
 .../test/java/ch/qos/logback/classic/MDCTest.java  |    2 +-
 .../java/ch/qos/logback/classic/MDCTestThread.java |    2 +-
 ...mattingTest.java => MessageFormattingTest.java} |    6 +-
 .../java/ch/qos/logback/classic/PackageTest.java   |    4 +-
 .../ch/qos/logback/classic/PatternLayoutTest.java  |   50 +-
 .../classic/ScenarioBasedLoggerContextTest.java    |    2 +-
 .../classic/TurboFilteringInLoggerTest.java        |    2 +-
 .../classic/boolex/ConditionalWithoutJanino.java   |    6 +-
 .../classic/boolex/GEventEvaluatorTest.java        |   12 +-
 .../classic/boolex/JaninoEventEvaluatorTest.java   |    4 +-
 .../classic/boolex/OnMarkerEvaluatorTest.java      |    2 +-
 .../ch/qos/logback/classic/boolex/PackageTest.java |    2 +-
 .../ch/qos/logback/classic/control/CLCTest.java    |    2 +-
 .../qos/logback/classic/control/ControlLogger.java |    2 +-
 .../classic/control/ControlLoggerContext.java      |    2 +-
 .../qos/logback/classic/control/CreateLogger.java  |    2 +-
 .../qos/logback/classic/control/PackageTest.java   |    2 +-
 .../ch/qos/logback/classic/control/Scenario.java   |    2 +-
 .../logback/classic/control/ScenarioAction.java    |    2 +-
 .../qos/logback/classic/control/ScenarioMaker.java |    2 +-
 .../classic/control/ScenarioRandomUtil.java        |    6 +-
 .../ch/qos/logback/classic/control/SetLevel.java   |    2 +-
 .../java/ch/qos/logback/classic/corpus/Corpus.java |    2 +-
 .../ch/qos/logback/classic/corpus/CorpusModel.java |    2 +-
 .../logback/classic/corpus/ExceptionBuilder.java   |    2 +-
 .../qos/logback/classic/corpus/LogStatement.java   |    6 +-
 .../classic/corpus/MessageArgumentTuple.java       |    2 +-
 .../ch/qos/logback/classic/corpus/RandomUtil.java  |    2 +-
 .../qos/logback/classic/corpus/TextFileUtil.java   |    2 +-
 .../logback/classic/corpusTest/RandomUtilTest.java |    2 +-
 .../classic/corpusTest/TextFileUtilTest.java       |    2 +-
 .../qos/logback/classic/db/DBAppenderH2Test.java   |   44 +-
 .../classic/db/DBAppenderH2TestFixture.java        |   14 +-
 .../qos/logback/classic/db/DBAppenderHSQLTest.java |   77 +-
 .../classic/db/DBAppenderHSQLTestFixture.java      |   14 +-
 .../classic/db/DBAppenderIntegrationTest.java      |   39 +-
 .../ch/qos/logback/classic/db/PackageTest.java     |    2 +-
 .../ch/qos/logback/classic/db/SQLBuilderTest.java  |    2 +-
 .../db/names/DefaultDBNameResolverTest.java        |    2 +-
 .../qos/logback/classic/db/names/PackageTest.java  |    2 +-
 .../classic/db/names/SimpleDBNameResolverTest.java |    2 +-
 .../encoder/LayoutInsteadOfEncoderTest.java        |   10 +-
 .../qos/logback/classic/encoder/PackageTest.java   |    2 +-
 .../classic/encoder/PatternLayoutEncoderTest.java  |    2 +-
 .../qos/logback/classic/html/HTMLLayoutTest.java   |    2 +-
 .../ch/qos/logback/classic/html/PackageTest.java   |    2 +-
 .../logback/classic/html/XHTMLEntityResolver.java  |    2 +-
 .../logback/classic/issue/DarioCampagna/Main.java  |   44 -
 .../classic/issue/DarioCampagna/logback-marker.xml |   19 -
 .../ch/qos/logback/classic/issue/LBCORE63.java     |    2 +-
 .../ch/qos/logback/classic/issue/PackageTest.java  |    2 +-
 .../issue/lbclassic135/LoggingRunnable.java        |    2 +-
 ...Throughput.java => LoggingToFileThrouhput.java} |    6 +-
 .../issue/lbclassic135/lbclassic139/Accessor.java  |    2 +-
 .../lbclassic139/LB139_DeadlockTest.java           |    2 +-
 .../lbclassic135/lbclassic139/PackageTest.java     |    2 +-
 .../issue/lbclassic135/lbclassic139/Worker.java    |    5 +-
 .../LoggingAppender.java                           |    4 +-
 .../lbclassic180/HtmlEscapedMessageConverter.java  |   13 -
 .../logback/classic/issue/lbclassic180/Main.java   |   13 -
 .../issue/lbclassic203/ConcurrentSiftingTest.java  |   11 +-
 .../lbclassic203/InstanceCountingAppender.java     |    2 +-
 .../classic/issue/lbclassic203/PackageTest.java    |    2 +-
 .../classic/issue/lbclassic323/Barebones.java      |   13 -
 .../logback/classic/issue/lbclassic323/Simple.java |   13 -
 .../logback/classic/issue/lbclassic330/Main.java   |   13 -
 .../lbclassic36/DateFormatOriginal_tzest.java      |    2 +-
 .../issue/lbclassic36/DateFormatPerf_Tapp.java     |    2 +-
 ...DateFormattingThreadedThroughputCalculator.java |    2 +-
 .../SelectiveDateFormattingRunnable.java           |    2 +-
 .../logback/classic/issue/lbcore211/Lbcore211.java |   13 -
 .../logback/classic/issue/lbcore224/Reduce.java    |   13 -
 .../logback/classic/issue/lbcore243/Common.java    |   13 -
 .../lbcore243/PerformanceComparatorLog4j.java      |   13 -
 .../lbcore243/PerformanceComparatorLogback.java    |   13 -
 .../qos/logback/classic/issue/lbcore26/Main.java   |    2 +-
 .../qos/logback/classic/issue/lbcore_155/Main.java |    2 +-
 .../logback/classic/issue/lbcore_155/OThread.java  |    2 +-
 .../logback/classic/jmx/JMXConfiguratorTest.java   |    4 +-
 .../ch/qos/logback/classic/jmx/PackageTest.java    |    2 +-
 .../logback/classic/joran/EvaluatorJoranTest.java  |    2 +-
 .../classic/joran/JoranConfiguratorTest.java       |   79 +-
 .../ch/qos/logback/classic/joran/PackageTest.java  |    2 +-
 .../classic/joran/conditional/ConditionalTest.java |   14 +-
 .../classic/joran/conditional/PackageTest.java     |    2 +-
 .../classic/jul/LevelChangePropagatorTest.java     |   30 +-
 .../ch/qos/logback/classic/jul/PackageTest.java    |    2 +-
 .../ch/qos/logback/classic/multiJVM/Checker.java   |    2 +-
 .../logback/classic/multiJVM/FileAppenderPerf.java |    2 +-
 .../logback/classic/multiJVM/LoggingThread.java    |    2 +-
 .../classic/multiJVM/SafeModeFileAppender.java     |    2 +-
 .../multiJVM/SafeModeRollingFileAppender.java      |    2 +-
 .../logback/classic/net/CounterBasedEvaluator.java |    2 +-
 .../classic/net/DilutedSMTPAppenderTest.java       |    6 +-
 .../classic/net/ExternalMockSocketServer.java      |    2 +-
 .../logback/classic/net/JMSQueueAppenderTest.java  |    2 +-
 .../classic/net/JMSQueueAppenderTestApp.java       |    2 +-
 .../logback/classic/net/JMSTopicAppenderTest.java  |    2 +-
 .../classic/net/JMSTopicAppenderTestApp.java       |    2 +-
 .../qos/logback/classic/net/NOPOutputStream.java   |    2 +-
 .../ch/qos/logback/classic/net/PackageTest.java    |    7 +-
 .../classic/net/SMTPAppender_GreenTest.java        |  301 ++---
 .../classic/net/SMTPAppender_SubethaSMTPTest.java  |  142 +--
 .../logback/classic/net/SSLSocketReceiverTest.java |   51 -
 .../logback/classic/net/SerializationPerfTest.java |    2 +-
 .../classic/net/SocketAppenderMessageLossTest.java |  116 --
 .../logback/classic/net/SocketAppenderTest.java    |  286 +++++
 .../java/ch/qos/logback/classic/net/SocketMin.java |    6 +-
 .../logback/classic/net/SocketReceiverTest.java    |  289 -----
 .../logback/classic/net/SyslogAppenderTest.java    |   86 +-
 .../qos/logback/classic/net/mock/MockAppender.java |   58 -
 .../classic/net/mock/MockObjectMessage.java        |    2 +-
 .../ch/qos/logback/classic/net/mock/MockQueue.java |    2 +-
 .../classic/net/mock/MockQueueConnection.java      |    2 +-
 .../net/mock/MockQueueConnectionFactory.java       |    2 +-
 .../logback/classic/net/mock/MockQueueSender.java  |    2 +-
 .../logback/classic/net/mock/MockQueueSession.java |    2 +-
 .../logback/classic/net/mock/MockSyslogServer.java |    4 +-
 .../ch/qos/logback/classic/net/mock/MockTopic.java |    2 +-
 .../classic/net/mock/MockTopicConnection.java      |    2 +-
 .../net/mock/MockTopicConnectionFactory.java       |    2 +-
 .../classic/net/mock/MockTopicPublisher.java       |    2 +-
 .../logback/classic/net/mock/MockTopicSession.java |    2 +-
 .../server/InstrumentedServerSocketReceiver.java   |   96 --
 .../classic/net/server/MockSSLConfiguration.java   |   50 -
 .../net/server/MockSSLParametersConfiguration.java |   39 -
 .../net/server/RemoteAppenderStreamClientTest.java |   92 --
 .../net/server/SSLServerSocketReceiverTest.java    |   57 -
 .../server/ServerSocketReceiverFunctionalTest.java |  114 --
 .../net/server/ServerSocketReceiverTest.java       |  105 --
 .../classic/net/testObjectBuilders/Builder.java    |    2 +-
 .../LoggingEventBuilderInContext.java              |    3 +-
 .../LoggingEventWithParametersBuilder.java         |    8 +-
 .../net/testObjectBuilders/MinimalSerBuilder.java  |    2 +-
 .../TrivialLoggingEventBuilder.java                |    9 +-
 .../TrivialLoggingEventVOBuilder.java              |    2 +-
 .../qos/logback/classic/pattern/ConverterTest.java |    2 +-
 .../ExtendedThrowableProxyConverterTest.java       |    4 +-
 .../logback/classic/pattern/MDCConverterTest.java  |   27 +-
 .../classic/pattern/MarkerConverterTest.java       |    2 +-
 .../qos/logback/classic/pattern/PackageTest.java   |    2 +-
 .../RootCauseFirstThrowableProxyConverterTest.java |   16 +-
 .../classic/pattern/SyslogStartConverterTest.java  |  135 --
 .../TargetLengthBasedClassNameAbbreviatorTest.java |    2 +-
 .../pattern/ThrowableProxyConverterTest.java       |  106 +-
 .../qos/logback/classic/rolling/PackageTest.java   |    2 +-
 .../TimeBasedRollingWithConfigFileTest.java        |   10 +-
 .../logback/classic/rolling/UniqueFileTest.java    |    9 +-
 .../classic/selector/ContextDetachingSCLTest.java  |    2 +-
 .../classic/selector/ContextJNDISelectorTest.java  |    2 +-
 .../qos/logback/classic/selector/PackageTest.java  |    2 +-
 .../classic/sift/MDCBasedDiscriminatorTest.java    |    6 +-
 .../ch/qos/logback/classic/sift/PackageTest.java   |    2 +-
 .../logback/classic/sift/SiftingAppenderTest.java  |  208 +---
 .../logback/classic/spi/BasicContextListener.java  |    2 +-
 .../qos/logback/classic/spi/BogusClassLoader.java  |    2 +-
 .../ch/qos/logback/classic/spi/CPDCSpecial.java    |    2 +-
 .../ch/qos/logback/classic/spi/CallerDataTest.java |    6 +-
 .../logback/classic/spi/ContextListenerTest.java   |    2 +-
 .../logback/classic/spi/DummyThrowableProxy.java   |    2 +-
 .../logback/classic/spi/LocalFirstClassLoader.java |    2 +-
 .../logback/classic/spi/LoggerComparatorTest.java  |    2 +-
 .../spi/LoggingEventSerializationPerfTest.java     |    8 +-
 .../classic/spi/LoggingEventSerializationTest.java |    4 +-
 .../qos/logback/classic/spi/LoggingEventTest.java  |   65 -
 .../ch/qos/logback/classic/spi/LuckyCharms.java    |    2 +-
 .../ch/qos/logback/classic/spi/PackageTest.java    |    4 +-
 .../classic/spi/PackagingDataCalculatorTest.java   |    4 +-
 .../qos/logback/classic/spi/PubLoggingEventVO.java |    2 +-
 .../logback/classic/spi/ThrowableProxyTest.java    |   45 +-
 .../classic/spi/special/CPDCSpecialImpl.java       |    2 +-
 .../logback/classic/testUtil/SampleConverter.java  |    2 +-
 .../classic/turbo/DebugUsersTurboFilter.java       |    2 +-
 .../classic/turbo/DuplicateMessageFilterTest.java  |    2 +-
 .../logback/classic/turbo/LRUMessageCacheTest.java |    2 +-
 .../logback/classic/turbo/MarkerFilterTest.java    |    2 +-
 .../qos/logback/classic/turbo/NOPTurboFilter.java  |    2 +-
 .../ch/qos/logback/classic/turbo/PackageTest.java  |    2 +-
 .../classic/turbo/ReconfigureOnChangeTest.java     |  228 ++--
 .../qos/logback/classic/turbo/ReconfigurePerf.java |    6 +-
 .../ch/qos/logback/classic/turbo/lru/Event.java    |    2 +-
 .../ch/qos/logback/classic/turbo/lru/LRUCache.java |    2 +-
 .../logback/classic/turbo/lru/LRUCacheTest.java    |    2 +-
 .../qos/logback/classic/turbo/lru/Simulator.java   |    2 +-
 .../ch/qos/logback/classic/turbo/lru/T_Entry.java  |    2 +-
 .../qos/logback/classic/turbo/lru/T_LRUCache.java  |    2 +-
 .../qos/logback/classic/turbo/lru/X_LRUCache.java  |    2 +-
 .../util/ContextInitializerAutoConfigTest.java     |   58 -
 .../classic/util/ContextInitializerTest.java       |   88 +-
 .../util/InitializationIntegrationTest.java        |    9 +-
 .../classic/util/LevelToSyslogSeverityTest.java    |    2 +-
 .../classic/util/LogbackMDCAdapterTest.java        |    2 +-
 .../logback/classic/util/LoggerNameUtilTest.java   |  102 --
 .../logback/classic/util/MockInitialContext.java   |    2 +-
 .../classic/util/MockInitialContextFactory.java    |    2 +-
 .../ch/qos/logback/classic/util/PackageTest.java   |    5 +-
 .../ch/qos/logback/classic/util/TeztHelper.java    |   28 +-
 .../src/test/java/integrator/Activator.java        |    2 +-
 .../src/test/java/org/dummy/DummyLBAppender.java   |    2 +-
 .../src/test/java/org/dummy/Log4jInvocation.java   |    2 +-
 .../test/java/org/slf4j/LoggerFactoryFriend.java   |    2 +-
 .../org/slf4j/impl/InitializationOutputTest.java   |   71 --
 .../src/test/java/org/slf4j/impl/PackageTest.java  |    4 +-
 .../slf4j/impl/RecursiveInitializationTest.java    |    2 +-
 .../java/org/slf4j/impl/RecursiveLBAppender.java   |    2 +-
 .../org/slf4j/impl/StaticLoggerBinderFriend.java   |    2 +-
 .../test/java/org/slf4j/test_osgi/BundleTest.java  |    2 +-
 .../slf4j/test_osgi/CheckingBundleListener.java    |    2 +-
 .../test/java/org/slf4j/test_osgi/FelixHost.java   |    2 +-
 .../slf4j/test_osgi/FrameworkErrorListener.java    |    2 +-
 logback-classic/src/test/resources/test.groovy     |   15 -
 logback-core/pom.xml                               |   67 +-
 .../main/java/ch/qos/logback/core/Appender.java    |    2 +-
 .../java/ch/qos/logback/core/AppenderBase.java     |    2 +-
 .../ch/qos/logback/core/AsyncAppenderBase.java     |    7 +-
 .../ch/qos/logback/core/BasicStatusManager.java    |    2 +-
 .../java/ch/qos/logback/core/ConsoleAppender.java  |   59 +-
 .../src/main/java/ch/qos/logback/core/Context.java |   14 +-
 .../main/java/ch/qos/logback/core/ContextBase.java |   87 +-
 .../java/ch/qos/logback/core/CoreConstants.java    |   41 +-
 .../java/ch/qos/logback/core/FileAppender.java     |    7 +-
 .../src/main/java/ch/qos/logback/core/Layout.java  |    2 +-
 .../main/java/ch/qos/logback/core/LayoutBase.java  |    2 +-
 .../java/ch/qos/logback/core/LifeCycleManager.java |   56 -
 .../java/ch/qos/logback/core/LogbackException.java |    2 +-
 .../ch/qos/logback/core/OutputStreamAppender.java  |   21 +-
 .../ch/qos/logback/core/PropertyDefinerBase.java   |   10 +-
 .../logback/core/UnsynchronizedAppenderBase.java   |    2 +-
 .../logback/core/boolex/EvaluationException.java   |    2 +-
 .../ch/qos/logback/core/boolex/EventEvaluator.java |    2 +-
 .../logback/core/boolex/EventEvaluatorBase.java    |    2 +-
 .../core/boolex/JaninoEventEvaluatorBase.java      |   10 +-
 .../java/ch/qos/logback/core/boolex/Matcher.java   |    2 +-
 .../core/db/BindDataSourceToJNDIAction.java        |    2 +-
 .../ch/qos/logback/core/db/ConnectionSource.java   |    2 +-
 .../qos/logback/core/db/ConnectionSourceBase.java  |   11 +-
 .../ch/qos/logback/core/db/DBAppenderBase.java     |   81 +-
 .../main/java/ch/qos/logback/core/db/DBHelper.java |    2 +-
 .../core/db/DataSourceConnectionSource.java        |   13 +-
 .../core/db/DriverManagerConnectionSource.java     |    4 +-
 .../qos/logback/core/db/JNDIConnectionSource.java  |   26 +-
 .../ch/qos/logback/core/db/dialect/DBUtil.java     |    2 +-
 .../ch/qos/logback/core/db/dialect/H2Dialect.java  |    2 +-
 .../qos/logback/core/db/dialect/HSQLDBDialect.java |    2 +-
 .../qos/logback/core/db/dialect/MsSQLDialect.java  |    2 +-
 .../qos/logback/core/db/dialect/MySQLDialect.java  |    2 +-
 .../qos/logback/core/db/dialect/OracleDialect.java |    2 +-
 .../logback/core/db/dialect/PostgreSQLDialect.java |    2 +-
 .../ch/qos/logback/core/db/dialect/SQLDialect.java |    2 +-
 .../logback/core/db/dialect/SQLDialectCode.java    |    2 +-
 .../qos/logback/core/db/dialect/SQLiteDialect.java |    3 +-
 .../core/db/dialect/SybaseSqlAnywhereDialect.java  |    2 +-
 .../ch/qos/logback/core/encoder/ByteArrayUtil.java |    4 +-
 .../ch/qos/logback/core/encoder/EchoEncoder.java   |    2 +-
 .../java/ch/qos/logback/core/encoder/Encoder.java  |    2 +-
 .../ch/qos/logback/core/encoder/EncoderBase.java   |    2 +-
 .../core/encoder/EventObjectInputStream.java       |    2 +-
 .../core/encoder/LayoutWrappingEncoder.java        |    2 +-
 .../core/encoder/NonClosableInputStream.java       |    2 +-
 .../logback/core/encoder/ObjectStreamEncoder.java  |    8 +-
 .../logback/core/filter/AbstractMatcherFilter.java |    2 +-
 .../qos/logback/core/filter/EvaluatorFilter.java   |    2 +-
 .../java/ch/qos/logback/core/filter/Filter.java    |    2 +-
 .../ch/qos/logback/core/helpers/CyclicBuffer.java  |    2 +-
 .../ch/qos/logback/core/helpers/NOPAppender.java   |    2 +-
 .../core/helpers/ThrowableToStringArray.java       |    2 +-
 .../ch/qos/logback/core/helpers/Transform.java     |    2 +-
 .../java/ch/qos/logback/core/html/CssBuilder.java  |    2 +-
 .../ch/qos/logback/core/html/HTMLLayoutBase.java   |    4 +-
 .../qos/logback/core/html/IThrowableRenderer.java  |    2 +-
 .../logback/core/html/NOPThrowableRenderer.java    |    2 +-
 .../logback/core/joran/GenericConfigurator.java    |   60 +-
 .../logback/core/joran/JoranConfiguratorBase.java  |   30 +-
 .../joran/action/AbstractEventEvaluatorAction.java |    8 +-
 .../ch/qos/logback/core/joran/action/Action.java   |    4 +-
 .../qos/logback/core/joran/action/ActionConst.java |    2 +-
 .../qos/logback/core/joran/action/ActionUtil.java  |   74 --
 .../logback/core/joran/action/AppenderAction.java  |    6 +-
 .../core/joran/action/AppenderRefAction.java       |   10 +-
 .../core/joran/action/ContextPropertyAction.java   |    2 +-
 .../core/joran/action/ConversionRuleAction.java    |    2 +-
 .../core/joran/action/DefinePropertyAction.java    |   18 +-
 .../core/joran/action/IADataForBasicProperty.java  |    2 +-
 .../joran/action/IADataForComplexProperty.java     |    2 +-
 .../logback/core/joran/action/ImplicitAction.java  |    8 +-
 .../logback/core/joran/action/IncludeAction.java   |   25 +-
 .../qos/logback/core/joran/action/NOPAction.java   |    2 +-
 .../core/joran/action/NestedBasicPropertyIA.java   |    9 +-
 .../core/joran/action/NestedComplexPropertyIA.java |   10 +-
 .../logback/core/joran/action/NewRuleAction.java   |    6 +-
 .../qos/logback/core/joran/action/ParamAction.java |    2 +-
 .../logback/core/joran/action/PropertyAction.java  |   64 +-
 .../core/joran/action/StatusListenerAction.java    |    2 +-
 .../logback/core/joran/action/TimestampAction.java |   10 +-
 .../logback/core/joran/conditional/Condition.java  |    2 +-
 .../logback/core/joran/conditional/ElseAction.java |    2 +-
 .../logback/core/joran/conditional/IfAction.java   |    7 +-
 .../conditional/PropertyEvalScriptBuilder.java     |   14 +-
 .../conditional/PropertyWrapperForScripts.java     |    2 +-
 .../logback/core/joran/conditional/ThenAction.java |    2 +-
 .../joran/conditional/ThenOrElseActionBase.java    |    2 +-
 .../ch/qos/logback/core/joran/event/BodyEvent.java |    2 +-
 .../ch/qos/logback/core/joran/event/EndEvent.java  |    2 +-
 .../logback/core/joran/event/InPlayListener.java   |    2 +-
 .../ch/qos/logback/core/joran/event/SaxEvent.java  |    2 +-
 .../logback/core/joran/event/SaxEventRecorder.java |   18 +-
 .../qos/logback/core/joran/event/StartEvent.java   |   11 +-
 .../logback/core/joran/event/stax/BodyEvent.java   |   28 -
 .../logback/core/joran/event/stax/EndEvent.java    |   24 -
 .../logback/core/joran/event/stax/StartEvent.java  |   54 -
 .../logback/core/joran/event/stax/StaxEvent.java   |   25 -
 .../core/joran/event/stax/StaxEventRecorder.java   |  103 --
 .../qos/logback/core/joran/node/ComponentNode.java |    8 -
 .../logback/core/joran/spi/ActionException.java    |    2 +-
 .../core/joran/spi/ConfigurationWatchList.java     |    2 +-
 .../qos/logback/core/joran/spi/ConsoleTarget.java  |    6 +-
 .../qos/logback/core/joran/spi/DefaultClass.java   |    2 +-
 .../joran/spi/DefaultNestedComponentRegistry.java  |   12 +-
 .../ch/qos/logback/core/joran/spi/ElementPath.java |  122 --
 .../ch/qos/logback/core/joran/spi/EventPlayer.java |    2 +-
 .../core/joran/spi/HostClassAndPropertyDouble.java |    8 +-
 .../core/joran/spi/InterpretationContext.java      |   15 +-
 .../ch/qos/logback/core/joran/spi/Interpreter.java |   67 +-
 .../qos/logback/core/joran/spi/JoranException.java |    2 +-
 .../ch/qos/logback/core/joran/spi/NoAutoStart.java |    2 +-
 .../logback/core/joran/spi/NoAutoStartUtil.java    |    2 +-
 .../spi/{ElementSelector.java => Pattern.java}     |  143 ++-
 .../ch/qos/logback/core/joran/spi/RuleStore.java   |   32 +-
 .../logback/core/joran/spi/SimpleRuleStore.java    |  122 +-
 .../ch/qos/logback/core/joran/spi/XMLUtil.java     |    2 +-
 .../joran/util/ConfigurationWatchListUtil.java     |    2 +-
 .../logback/core/joran/util/PropertySetter.java    |   30 +-
 .../core/joran/util/StringToObjectConverter.java   |    4 +-
 .../ch/qos/logback/core/layout/EchoLayout.java     |    2 +-
 .../core/net/AbstractSSLSocketAppender.java        |   90 --
 .../logback/core/net/AbstractSocketAppender.java   |  451 -------
 .../logback/core/net/DefaultSocketConnector.java   |  125 --
 .../ch/qos/logback/core/net/JMSAppenderBase.java   |    2 +-
 .../qos/logback/core/net/LoginAuthenticator.java   |    5 +-
 .../ch/qos/logback/core/net/SMTPAppenderBase.java  |  139 +--
 .../qos/logback/core/net/SocketAppenderBase.java   |  308 +++++
 .../ch/qos/logback/core/net/SocketConnector.java   |   65 -
 .../qos/logback/core/net/SyslogAppenderBase.java   |   53 +-
 .../ch/qos/logback/core/net/SyslogConstants.java   |    2 +-
 .../qos/logback/core/net/SyslogOutputStream.java   |    5 +-
 .../net/server/AbstractServerSocketAppender.java   |  218 ----
 .../ch/qos/logback/core/net/server/Client.java     |   57 -
 .../qos/logback/core/net/server/ClientVisitor.java |   25 -
 .../core/net/server/ConcurrentServerRunner.java    |  231 ----
 .../core/net/server/RemoteReceiverClient.java      |   46 -
 .../net/server/RemoteReceiverServerListener.java   |   47 -
 .../net/server/RemoteReceiverServerRunner.java     |   57 -
 .../net/server/RemoteReceiverStreamClient.java     |  145 ---
 .../net/server/SSLServerSocketAppenderBase.java    |   80 --
 .../logback/core/net/server/ServerListener.java    |   67 -
 .../qos/logback/core/net/server/ServerRunner.java  |   53 -
 .../core/net/server/ServerSocketListener.java      |   89 --
 .../ch/qos/logback/core/net/server/package.html    |   10 -
 .../ssl/ConfigurableSSLServerSocketFactory.java    |   89 --
 .../core/net/ssl/ConfigurableSSLSocketFactory.java |  100 --
 .../core/net/ssl/KeyManagerFactoryFactoryBean.java |   91 --
 .../logback/core/net/ssl/KeyStoreFactoryBean.java  |  186 ---
 .../main/java/ch/qos/logback/core/net/ssl/SSL.java |   36 -
 .../ch/qos/logback/core/net/ssl/SSLComponent.java  |   27 -
 .../qos/logback/core/net/ssl/SSLConfigurable.java  |   85 --
 .../core/net/ssl/SSLConfigurableServerSocket.java  |   63 -
 .../core/net/ssl/SSLConfigurableSocket.java        |   63 -
 .../qos/logback/core/net/ssl/SSLConfiguration.java |   48 -
 .../core/net/ssl/SSLContextFactoryBean.java        |  341 ------
 .../net/ssl/SSLNestedComponentRegistryRules.java   |   43 -
 .../core/net/ssl/SSLParametersConfiguration.java   |  256 ----
 .../core/net/ssl/SecureRandomFactoryBean.java      |  101 --
 .../net/ssl/TrustManagerFactoryFactoryBean.java    |   91 --
 .../java/ch/qos/logback/core/net/ssl/package.html  |   16 -
 .../logback/core/pattern/CompositeConverter.java   |   18 +-
 .../ch/qos/logback/core/pattern/Converter.java     |    2 +-
 .../ch/qos/logback/core/pattern/ConverterUtil.java |   25 +-
 .../qos/logback/core/pattern/DynamicConverter.java |    4 +-
 .../ch/qos/logback/core/pattern/FormatInfo.java    |   11 +-
 .../logback/core/pattern/FormattingConverter.java  |    2 +-
 .../core/pattern/IdentityCompositeConverter.java   |    4 +-
 .../qos/logback/core/pattern/LiteralConverter.java |    2 +-
 .../logback/core/pattern/PatternLayoutBase.java    |   29 +-
 .../core/pattern/PatternLayoutEncoderBase.java     |    2 +-
 .../logback/core/pattern/PostCompileProcessor.java |    2 +-
 .../core/pattern/ReplacingCompositeConverter.java  |    4 +-
 .../ch/qos/logback/core/pattern/SpacePadder.java   |    2 +-
 .../logback/core/pattern/color/ANSIConstants.java  |   33 -
 .../pattern/color/BlackCompositeConverter.java     |   28 -
 .../core/pattern/color/BlueCompositeConverter.java |   28 -
 .../pattern/color/BoldBlueCompositeConverter.java  |   32 -
 .../pattern/color/BoldCyanCompositeConverter.java  |   32 -
 .../pattern/color/BoldGreenCompositeConverter.java |   32 -
 .../color/BoldMagentaCompositeConverter.java       |   32 -
 .../pattern/color/BoldRedCompositeConverter.java   |   30 -
 .../pattern/color/BoldWhiteCompositeConverter.java |   32 -
 .../color/BoldYellowCompositeConverter.java        |   32 -
 .../core/pattern/color/CyanCompositeConverter.java |   28 -
 .../color/ForegroundCompositeConverterBase.java    |   45 -
 .../core/pattern/color/GrayCompositeConverter.java |   32 -
 .../pattern/color/GreenCompositeConverter.java     |   28 -
 .../pattern/color/MagentaCompositeConverter.java   |   28 -
 .../core/pattern/color/RedCompositeConverter.java  |   28 -
 .../pattern/color/WhiteCompositeConverter.java     |   28 -
 .../pattern/color/YellowCompositeConverter.java    |   28 -
 .../qos/logback/core/pattern/parser/Compiler.java  |    2 +-
 .../logback/core/pattern/parser/CompositeNode.java |   14 +-
 .../core/pattern/parser/FormattingNode.java        |    9 +-
 .../ch/qos/logback/core/pattern/parser/Node.java   |   13 +-
 .../core/pattern/parser/OptionTokenizer.java       |    3 +-
 .../ch/qos/logback/core/pattern/parser/Parser.java |    3 +-
 .../{spi => pattern/parser}/ScanException.java     |    4 +-
 .../core/pattern/parser/SimpleKeywordNode.java     |   10 +-
 .../ch/qos/logback/core/pattern/parser/Token.java  |    2 +-
 .../logback/core/pattern/parser/TokenStream.java   |    3 +-
 .../core/pattern/util/AlmostAsIsEscapeUtil.java    |    2 +-
 .../logback/core/pattern/util/AsIsEscapeUtil.java  |    2 +-
 .../qos/logback/core/pattern/util/IEscapeUtil.java |    2 +-
 .../core/pattern/util/RegularEscapeUtil.java       |    4 +-
 .../core/pattern/util/RestrictedEscapeUtil.java    |    2 +-
 .../core/property/FileExistsPropertyDefiner.java   |   45 +-
 .../property/ResourceExistsPropertyDefiner.java    |   53 -
 .../logback/core/read/CyclicBufferAppender.java    |    8 +-
 .../ch/qos/logback/core/read/ListAppender.java     |    2 +-
 .../logback/core/recovery/RecoveryCoordinator.java |    6 +-
 .../core/recovery/ResilientFileOutputStream.java   |    7 +-
 .../core/recovery/ResilientOutputStreamBase.java   |    2 +-
 .../core/recovery/ResilientSyslogOutputStream.java |    2 +-
 ...aultTimeBasedFileNamingAndTriggeringPolicy.java |    2 +-
 .../core/rolling/FixedWindowRollingPolicy.java     |   22 +-
 .../logback/core/rolling/RollingFileAppender.java  |   92 +-
 .../ch/qos/logback/core/rolling/RollingPolicy.java |    2 +-
 .../logback/core/rolling/RollingPolicyBase.java    |    5 +-
 .../qos/logback/core/rolling/RolloverFailure.java  |   10 +-
 .../core/rolling/SizeAndTimeBasedFNATP.java        |   11 +-
 .../core/rolling/SizeBasedTriggeringPolicy.java    |    2 +-
 .../TimeBasedFileNamingAndTriggeringPolicy.java    |    2 +-
 ...TimeBasedFileNamingAndTriggeringPolicyBase.java |    2 +-
 .../core/rolling/TimeBasedRollingPolicy.java       |   32 +-
 .../qos/logback/core/rolling/TriggeringPolicy.java |    2 +-
 .../logback/core/rolling/TriggeringPolicyBase.java |    2 +-
 .../core/rolling/helper/ArchiveRemover.java        |    2 +-
 .../rolling/helper/AsynchronousCompressor.java     |    2 +-
 .../core/rolling/helper/CompressionMode.java       |    2 +-
 .../core/rolling/helper/CompressionRunnable.java   |    2 +-
 .../logback/core/rolling/helper/Compressor.java    |    2 +-
 .../core/rolling/helper/DateTokenConverter.java    |    2 +-
 .../core/rolling/helper/DefaultArchiveRemover.java |    2 +-
 .../core/rolling/helper/FileFilterUtil.java        |    2 +-
 .../core/rolling/helper/FileNamePattern.java       |    9 +-
 .../logback/core/rolling/helper/FileStoreUtil.java |   75 --
 .../core/rolling/helper/IntegerTokenConverter.java |    2 +-
 .../core/rolling/helper/MonoTypedConverter.java    |    2 +-
 .../core/rolling/helper/PeriodicityType.java       |    2 +-
 .../logback/core/rolling/helper/RenameUtil.java    |  118 +-
 .../core/rolling/helper/RollingCalendar.java       |    2 +-
 .../helper/SizeAndTimeBasedArchiveRemover.java     |    4 +-
 .../rolling/helper/TimeBasedArchiveRemover.java    |    2 +-
 .../core/rolling/helper/TokenConverter.java        |    2 +-
 .../logback/core/sift/AbstractDiscriminator.java   |   26 -
 .../ch/qos/logback/core/sift/AppenderFactory.java  |   16 -
 ...oryUsingJoran.java => AppenderFactoryBase.java} |   30 +-
 .../ch/qos/logback/core/sift/AppenderTracker.java  |   77 +-
 .../qos/logback/core/sift/AppenderTrackerImpl.java |  239 ++++
 .../logback/core/sift/DefaultDiscriminator.java    |   18 +-
 .../ch/qos/logback/core/sift/Discriminator.java    |    2 +-
 .../qos/logback/core/sift/SiftingAppenderBase.java |   99 +-
 .../core/sift/SiftingJoranConfiguratorBase.java    |   38 +-
 .../logback/core/spi/AbstractComponentTracker.java |  310 -----
 .../qos/logback/core/spi/AppenderAttachable.java   |    4 +-
 .../logback/core/spi/AppenderAttachableImpl.java   |    4 +-
 .../ch/qos/logback/core/spi/ComponentTracker.java  |  110 --
 .../java/ch/qos/logback/core/spi/ContextAware.java |    2 +-
 .../ch/qos/logback/core/spi/ContextAwareBase.java  |    4 +-
 .../ch/qos/logback/core/spi/ContextAwareImpl.java  |    6 +-
 .../qos/logback/core/spi/CyclicBufferTracker.java  |  103 +-
 .../logback/core/spi/CyclicBufferTrackerImpl.java  |  229 ++++
 .../logback/core/spi/DeferredProcessingAware.java  |    2 +-
 .../ch/qos/logback/core/spi/FilterAttachable.java  |    2 +-
 .../qos/logback/core/spi/FilterAttachableImpl.java |    2 +-
 .../java/ch/qos/logback/core/spi/FilterReply.java  |    2 +-
 .../java/ch/qos/logback/core/spi/LifeCycle.java    |    2 +-
 .../java/ch/qos/logback/core/spi/LogbackLock.java  |    2 +-
 .../core/spi/PreSerializationTransformer.java      |    2 +-
 .../ch/qos/logback/core/spi/PropertyContainer.java |    6 +-
 .../ch/qos/logback/core/spi/PropertyDefiner.java   |    2 +-
 .../ch/qos/logback/core/status/ErrorStatus.java    |    2 +-
 .../ch/qos/logback/core/status/InfoStatus.java     |    2 +-
 .../qos/logback/core/status/NopStatusListener.java |   27 -
 .../core/status/OnConsoleStatusListener.java       |   72 +-
 .../core/status/OnErrorConsoleStatusListener.java  |   30 -
 .../status/OnPrintStreamStatusListenerBase.java    |   93 --
 .../java/ch/qos/logback/core/status/Status.java    |    2 +-
 .../ch/qos/logback/core/status/StatusBase.java     |    4 +-
 .../status/{StatusUtil.java => StatusChecker.java} |   82 +-
 .../ch/qos/logback/core/status/StatusListener.java |    2 +-
 .../logback/core/status/StatusListenerAsList.java  |    2 +-
 .../ch/qos/logback/core/status/StatusManager.java  |    2 +-
 .../ch/qos/logback/core/status/StatusUtil.java     |  159 +--
 .../core/status/ViewStatusMessagesServletBase.java |    2 +-
 .../ch/qos/logback/core/status/WarnStatus.java     |    2 +-
 .../main/java/ch/qos/logback/core/subst/Node.java  |  124 --
 .../core/subst/NodeToStringTransformer.java        |  183 ---
 .../java/ch/qos/logback/core/subst/Parser.java     |  163 ---
 .../main/java/ch/qos/logback/core/subst/Token.java |   63 -
 .../java/ch/qos/logback/core/subst/Tokenizer.java  |  128 --
 .../ch/qos/logback/core/util/AggregationType.java  |    2 +-
 .../logback/core/util/CachingDateFormatter.java    |    2 +-
 .../qos/logback/core/util/CharSequenceState.java   |    2 +-
 .../core/util/CharSequenceToRegexMapper.java       |    2 +-
 .../java/ch/qos/logback/core/util/CloseUtil.java   |   71 --
 .../ch/qos/logback/core/util/ContentTypeUtil.java  |    2 +-
 .../java/ch/qos/logback/core/util/ContextUtil.java |   69 +-
 .../logback/core/util/DatePatternToRegexUtil.java  |    2 +-
 .../ch/qos/logback/core/util/DelayStrategy.java    |   28 -
 .../java/ch/qos/logback/core/util/Duration.java    |   21 +-
 .../core/util/DynamicClassLoadingException.java    |    2 +-
 .../java/ch/qos/logback/core/util/EnvUtil.java     |   50 +-
 .../qos/logback/core/util/ExecutorServiceUtil.java |   51 -
 .../java/ch/qos/logback/core/util/FileSize.java    |    2 +-
 .../java/ch/qos/logback/core/util/FileUtil.java    |   67 +-
 .../java/ch/qos/logback/core/util/FixedDelay.java  |   59 -
 .../core/util/IncompatibleClassException.java      |   10 +-
 .../ch/qos/logback/core/util/InvocationGate.java   |   13 -
 .../main/java/ch/qos/logback/core/util/Loader.java |   19 +-
 .../ch/qos/logback/core/util/LocationUtil.java     |   75 --
 .../ch/qos/logback/core/util/OptionHelper.java     |  160 ++-
 .../logback/core/util/PropertySetterException.java |    2 +-
 .../ch/qos/logback/core/util/StatusPrinter.java    |   15 +-
 .../logback/core/util/StringCollectionUtil.java    |  112 --
 .../java/ch/qos/logback/core/util/SystemInfo.java  |    2 +-
 .../java/ch/qos/logback/core/util/TimeUtil.java    |    2 +-
 .../src/test/input/joran/inclusion/topOptional.xml |    9 -
 .../input/joran/inclusion/topOptionalResource.xml  |    9 -
 .../test/java/ch/qos/logback/core/AllCoreTest.java |   27 +-
 .../ch/qos/logback/core/AsyncAppenderBaseTest.java |    8 +-
 .../qos/logback/core/BasicStatusManagerTest.java   |    2 +-
 .../java/ch/qos/logback/core/ContextBaseTest.java  |   59 +-
 .../logback/core/FileAppenderResilienceTest.java   |    9 +-
 .../core/FileAppenderResilience_AS_ROOT_Test.java  |    6 +-
 .../ch/qos/logback/core/LifeCycleManagerTest.java  |   40 -
 .../qos/logback/core/MockLifeCycleComponent.java   |   21 -
 .../qos/logback/core/OutputStreamAppenderTest.java |    2 +-
 .../test/java/ch/qos/logback/core/PackageTest.java |    2 +-
 .../core/appender/AbstractAppenderTest.java        |    4 +-
 .../logback/core/appender/ConsoleAppenderTest.java |   30 +-
 .../logback/core/appender/DummyAppenderTest.java   |    2 +-
 .../logback/core/appender/DummyWriterAppender.java |    2 +-
 .../logback/core/appender/FileAppenderTest.java    |   12 +-
 .../ch/qos/logback/core/appender/PackageTest.java  |   10 +-
 .../logback/core/appender/XTeeOutputStream.java    |    2 +-
 .../ch/qos/logback/core/boolex/MatcherTest.java    |    2 +-
 .../contention/AbstractMultiThreadedHarness.java   |   13 -
 .../core/contention/MultiThreadedHarness.java      |    4 +-
 .../contention/RunnableWithCounterAndDone.java     |    2 +-
 .../contention/ThreadedThroughputCalculator.java   |    2 +-
 .../WaitOnExecutionMultiThreadedHarness.java       |   17 +-
 .../logback/core/encoder/ByteArrayUtilTest.java    |    2 +-
 .../ch/qos/logback/core/encoder/DummyEncoder.java  |    2 +-
 .../ch/qos/logback/core/encoder/NopEncoder.java    |    2 +-
 .../core/encoder/ObjectEncodeDecodeTest.java       |    2 +-
 .../ch/qos/logback/core/encoder/PackageTest.java   |    2 +-
 .../qos/logback/core/helpers/CyclicBufferTest.java |   13 -
 .../logback/core/helpers/FileFilterUtilTest.java   |    4 +-
 .../ch/qos/logback/core/helpers/PackageTest.java   |    2 +-
 .../core/helpers/ThrowableToStringArrayTest.java   |    2 +-
 .../java/ch/qos/logback/core/issue/LBCORE97.java   |    2 +-
 .../qos/logback/core/issue/LOGBACK_849/Basic.java  |   62 -
 .../ch/qos/logback/core/issue/LockThroughput.java  |    2 +-
 .../ch/qos/logback/core/issue/LockingInJava.java   |    2 +-
 .../qos/logback/core/issue/NoLockThroughput.java   |    2 +-
 .../ch/qos/logback/core/issue/NoLockingInJava.java |    2 +-
 .../logback/core/issue/SelectiveLockRunnable.java  |    2 +-
 .../core/issue/lbcore258/FileLockSimulator.java    |    2 +-
 .../ch/qos/logback/core/joran/PackageTest.java     |    2 +-
 .../qos/logback/core/joran/SimpleConfigurator.java |   19 +-
 .../core/joran/SkippingInInterpreterTest.java      |   32 +-
 .../logback/core/joran/TrivialConfigurator.java    |   14 +-
 .../core/joran/TrivialConfiguratorTest.java        |   16 +-
 .../joran/action/AsLowerCasePropertyDefiner.java   |    2 +-
 .../joran/action/DefinePropertyActionTest.java     |   36 +-
 .../logback/core/joran/action/DummyAttributes.java |    2 +-
 .../core/joran/action/IncludeActionTest.java       |   31 +-
 .../qos/logback/core/joran/action/PackageTest.java |    2 +-
 .../core/joran/action/PropertyActionTest.java      |    6 +-
 .../core/joran/action/ext/BadBeginAction.java      |    2 +-
 .../core/joran/action/ext/BadEndAction.java        |    2 +-
 .../logback/core/joran/action/ext/HelloAction.java |    2 +-
 .../logback/core/joran/action/ext/IncAction.java   |    2 +-
 .../logback/core/joran/action/ext/StackAction.java |    2 +-
 .../logback/core/joran/action/ext/TouchAction.java |    2 +-
 .../IfThenElseAndIncludeCompositionTest.java       |   22 +-
 .../core/joran/conditional/IfThenElseTest.java     |   22 +-
 .../core/joran/conditional/PackageTest.java        |    2 +-
 .../conditional/PropertyEvalScriptBuilderTest.java |    2 +-
 .../logback/core/joran/event/InPlayFireTest.java   |   15 +-
 .../qos/logback/core/joran/event/ListenAction.java |    2 +-
 .../qos/logback/core/joran/event/PackageTest.java  |    2 +-
 .../core/joran/event/SaxEventRecorderTest.java     |    7 +-
 .../joran/event/stax/StaxEventRecorderTest.java    |   84 --
 .../logback/core/joran/implicitAction/Cake.java    |    2 +-
 .../logback/core/joran/implicitAction/Fruit.java   |    2 +-
 .../core/joran/implicitAction/FruitContext.java    |    2 +-
 .../joran/implicitAction/FruitContextAction.java   |    2 +-
 .../joran/implicitAction/ImplicitActionTest.java   |   10 +-
 .../core/joran/implicitAction/PackageTest.java     |    2 +-
 .../ch/qos/logback/core/joran/replay/Fruit.java    |    2 +-
 .../core/joran/replay/FruitConfigurationTest.java  |   14 +-
 .../core/joran/replay/FruitConfigurator.java       |    6 +-
 .../logback/core/joran/replay/FruitContext.java    |    2 +-
 .../logback/core/joran/replay/FruitFactory.java    |    2 +-
 .../core/joran/replay/FruitFactoryAction.java      |    2 +-
 .../qos/logback/core/joran/replay/FruitShell.java  |    2 +-
 .../core/joran/replay/FruitShellAction.java        |    2 +-
 .../qos/logback/core/joran/replay/PackageTest.java |    2 +-
 .../logback/core/joran/replay/WeightytFruit.java   |    2 +-
 .../qos/logback/core/joran/spi/CaseCombinator.java |    2 +-
 .../logback/core/joran/spi/CaseCombinatorTest.java |    2 +-
 .../core/joran/spi/ConfigurationWatchListTest.java |    2 +-
 .../spi/DefaultNestedComponentRegistryTest.java    |    6 +-
 .../qos/logback/core/joran/spi/DoNotAutoStart.java |    2 +-
 .../core/joran/spi/ElementSelectorTest.java        |  179 ---
 .../core/joran/spi/NoAutoStartUtilTest.java        |    2 +-
 .../ch/qos/logback/core/joran/spi/PackageTest.java |    4 +-
 .../ch/qos/logback/core/joran/spi/PatternTest.java |  179 +++
 .../core/joran/spi/SimpleRuleStoreTest.java        |   69 +-
 .../java/ch/qos/logback/core/joran/util/House.java |    2 +-
 .../qos/logback/core/joran/util/PackageTest.java   |    2 +-
 .../core/joran/util/PropertySetterTest.java        |   14 +-
 .../ch/qos/logback/core/layout/DummyLayout.java    |    2 +-
 .../java/ch/qos/logback/core/layout/NopLayout.java |    2 +-
 .../core/net/AbstractSSLSocketAppenderTest.java    |   64 -
 .../core/net/AbstractSocketAppenderTest.java       |  255 ----
 .../core/net/DefaultSocketConnectorTest.java       |  172 ---
 .../java/ch/qos/logback/core/net/PackageTest.java  |   28 -
 .../logback/core/net/SyslogAppenderBaseTest.java   |   50 -
 .../ch/qos/logback/core/net/mock/MockContext.java  |   90 --
 .../logback/core/net/mock/MockExecutorService.java |   61 -
 .../server/AbstractServerSocketAppenderTest.java   |  103 --
 .../net/server/ConcurrentServerRunnerTest.java     |  173 ---
 .../InstrumentedServerSocketAppenderBase.java      |  105 --
 .../ch/qos/logback/core/net/server/MockClient.java |   63 -
 .../logback/core/net/server/MockClientVisitor.java |   36 -
 .../logback/core/net/server/MockEventQueue.java    |   36 -
 .../core/net/server/MockServerListener.java        |   81 --
 .../logback/core/net/server/MockServerRunner.java  |   70 --
 .../qos/logback/core/net/server/PackageTest.java   |   27 -
 .../net/server/RemoteReceiverStreamClientTest.java |   88 --
 .../server/SSLServerSocketAppenderBaseTest.java    |   66 -
 .../ServerSocketAppenderBaseFunctionalTest.java    |   83 --
 .../core/net/server/ServerSocketListenerTest.java  |  155 ---
 .../logback/core/net/server/ServerSocketUtil.java  |   69 --
 .../net/ssl/KeyManagerFactoryFactoryBeanTest.java  |   54 -
 .../core/net/ssl/KeyStoreFactoryBeanTest.java      |   70 --
 .../ch/qos/logback/core/net/ssl/PackageTest.java   |   32 -
 .../logback/core/net/ssl/SSLConfigurationTest.java |   34 -
 .../core/net/ssl/SSLContextFactoryBeanTest.java    |  113 --
 .../net/ssl/SSLParametersConfigurationTest.java    |  145 ---
 .../qos/logback/core/net/ssl/SSLTestConstants.java |   33 -
 .../core/net/ssl/SecureRandomFactoryBeanTest.java  |   76 --
 .../ssl/TrustManagerFactoryFactoryBeanTest.java    |   54 -
 .../core/net/ssl/mock/MockContextAware.java        |   68 -
 .../ssl/mock/MockKeyManagerFactoryFactoryBean.java |   44 -
 .../core/net/ssl/mock/MockKeyStoreFactoryBean.java |   43 -
 .../core/net/ssl/mock/MockSSLConfigurable.java     |   95 --
 .../net/ssl/mock/MockSecureRandomFactoryBean.java  |   42 -
 .../mock/MockTrustManagerFactoryFactoryBean.java   |   45 -
 .../ch/qos/logback/core/pattern/Converter123.java  |    2 +-
 .../qos/logback/core/pattern/ConverterHello.java   |    2 +-
 .../logback/core/pattern/ExceptionalConverter.java |    2 +-
 .../ch/qos/logback/core/pattern/PackageTest.java   |    2 +-
 .../qos/logback/core/pattern/SpacePadderTest.java  |    2 +-
 .../parser/AbstractPatternLayoutBaseTest.java      |   10 +-
 .../logback/core/pattern/parser/CompilerTest.java  |   33 +-
 .../core/pattern/parser/FormatInfoTest.java        |    2 +-
 .../core/pattern/parser/OptionTokenizerTest.java   |    2 +-
 .../logback/core/pattern/parser/PackageTest.java   |    2 +-
 .../logback/core/pattern/parser/ParserTest.java    |    7 +-
 .../core/pattern/parser/SamplePatternLayout.java   |    2 +-
 .../pattern/parser/SamplePatternLayoutTest.java    |    2 +-
 .../core/pattern/parser/TokenStreamTest.java       |    3 +-
 .../core/read/CyclicBufferAppenderTest.java        |   49 -
 .../ch/qos/logback/core/recovery/PackageTest.java  |    4 +-
 .../core/recovery/RecoveryCoordinatorTest.java     |   68 +-
 .../core/recovery/ResilientOutputStreamTest.java   |   65 -
 .../core/rolling/DefaultRolloverChecker.java       |   55 -
 .../logback/core/rolling/FileMatchFunction.java    |   28 -
 .../ch/qos/logback/core/rolling/FileOpener.java    |    2 +-
 .../core/rolling/MultiThreadedRollingTest.java     |    8 +-
 .../ch/qos/logback/core/rolling/PackageTest.java   |    8 +-
 .../qos/logback/core/rolling/RenameUtilTest.java   |   64 +-
 .../core/rolling/RollingFileAppenderTest.java      |   40 +-
 .../qos/logback/core/rolling/RolloverChecker.java  |   23 -
 .../core/rolling/ScaffoldingForRollingTests.java   |  136 +-
 .../core/rolling/SizeAndTimeBasedFNATP_Test.java   |  196 ---
 .../logback/core/rolling/SizeBasedRollingTest.java |  118 --
 .../rolling/SizeBasedTriggeringPolicyTest.java     |    2 +-
 ...BasedFileNamingAndTriggeringPolicyBaseTest.java |   13 -
 .../logback/core/rolling/TimeBasedRollingDest.java |  412 +++++++
 .../logback/core/rolling/TimeBasedRollingTest.java |  285 -----
 .../TimeBasedRollingWithArchiveRemoval_Test.java   |  401 ------
 .../qos/logback/core/rolling/ZRolloverChecker.java |   39 -
 .../logback/core/rolling/helper/CompressTest.java  |   26 +-
 .../core/rolling/helper/FileNamePatternTest.java   |    7 +-
 .../core/rolling/helper/FileStoreUtilTest.java     |   61 -
 .../logback/core/rolling/helper/PackageTest.java   |    2 +-
 .../core/rolling/helper/RollingCalendarTest.java   |    2 +-
 .../qos/logback/core/sift/AppenderTrackerTest.java |  165 +--
 .../java/ch/qos/logback/core/sift/PackageTest.java |    4 +-
 .../sift/ScenarioBasedAppenderTrackerTest.java     |   75 ++
 .../java/ch/qos/logback/core/sift/Simulator.java   |  132 ++
 .../core/sift/tracker/AppenderTrackerTImpl.java    |  114 ++
 .../logback/core/sift/tracker/SimulationEvent.java |   36 +
 .../ch/qos/logback/core/sift/tracker/TEntry.java   |   34 +-
 .../core/spi/AppenderAttachableImplLockTest.java   |   49 +-
 .../core/spi/AppenderAttachableImplTest.java       |    2 +-
 ...rTest.java => CyclicBufferTrackerImplTest.java} |   37 +-
 .../core/spi/CyclicBufferTrackerSimulator.java     |   61 +-
 .../qos/logback/core/spi/CyclicBufferTrackerT.java |  246 ----
 .../core/spi/CyclicBufferTracker_TImpl.java        |  189 +++
 .../java/ch/qos/logback/core/spi/PackageTest.java  |    4 +-
 .../spi/ScenarioBasedCyclicBufferTrackerTest.java  |   37 +-
 .../ch/qos/logback/core/status/PackageTest.java    |   24 -
 .../ch/qos/logback/core/status/StatusBaseTest.java |    2 +-
 .../ch/qos/logback/core/status/StatusChecker.java  |   51 -
 ...{StatusUtilTest.java => StatusCheckerTest.java} |   25 +-
 .../logback/core/status/TrivialStatusListener.java |   21 +-
 .../core/subst/NodeToStringTransformerTest.java    |  136 --
 .../ch/qos/logback/core/subst/PackageTest.java     |   24 -
 .../java/ch/qos/logback/core/subst/ParserTest.java |  199 ---
 .../ch/qos/logback/core/subst/TokenizerTest.java   |  148 ---
 .../core/testUtil/DelayingListAppender.java        |    5 +-
 .../testUtil/{EnvUtilForTests.java => Env.java}    |   26 +-
 .../ch/qos/logback/core/testUtil/FileTestUtil.java |   13 -
 .../logback/core/testUtil/FileToBufferUtil.java    |    2 +-
 .../ch/qos/logback/core/testUtil/NPEAppender.java  |    2 +-
 .../ch/qos/logback/core/testUtil/RandomUtil.java   |    2 +-
 .../logback/core/testUtil/StringListAppender.java  |    2 +-
 .../java/ch/qos/logback/core/util/Compare.java     |    2 +-
 .../qos/logback/core/util/ContentTypeUtilTest.java |    2 +-
 .../qos/logback/core/util/CoreTestConstants.java   |   14 +-
 .../logback/core/util/DatePatternToRegexTest.java  |    2 +-
 .../ch/qos/logback/core/util/DurationTest.java     |    2 +-
 .../ch/qos/logback/core/util/FileSizeTest.java     |    2 +-
 .../ch/qos/logback/core/util/FileUtilTest.java     |   36 +-
 .../ch/qos/logback/core/util/LocationUtilTest.java |  100 --
 .../ch/qos/logback/core/util/OptionHelperTest.java |  143 +--
 .../java/ch/qos/logback/core/util/PackageTest.java |    2 +-
 .../ch/qos/logback/core/util/ResilienceUtil.java   |    2 +-
 .../qos/logback/core/util/StatusPrinterTest.java   |    2 +-
 .../core/util/StringCollectionUtilTest.java        |   82 --
 .../ch/qos/logback/core/util/TeeOutputStream.java  |    6 +-
 .../ch/qos/logback/core/util/TimeUtilTest.java     |    2 +-
 logback-core/src/test/resources/net/ssl/README     |   11 -
 logback-core/src/test/resources/net/ssl/cert.pem   |   19 -
 logback-core/src/test/resources/net/ssl/key.pem    |   27 -
 .../src/test/resources/net/ssl/keystore.jks        |  Bin 2168 -> 0 bytes
 .../src/test/resources/net/ssl/keystore.p12        |  Bin 2534 -> 0 bytes
 logback-core/src/test/resources/util/README        |    2 -
 .../src/test/resources/util/testResource.txt       |    1 -
 .../core/rolling/TimeBasedRolling_STest.scala      |    8 +-
 logback-examples/pom.xml                           |    8 +-
 logback-examples/setClasspath.sh                   |    8 +-
 .../chapters/appenders/ConfigurationTester.java    |    2 +-
 .../appenders/CountingConsoleAppender.java         |   10 +-
 .../src/main/java/chapters/appenders/IO.java       |    6 +-
 .../java/chapters/appenders/IOPerformance.java     |    6 +-
 .../appenders/db/append-and-share-with-jndi.xml    |   55 +-
 .../append-toMySQL-with-datasource-and-pooling.xml |   28 +-
 .../java/chapters/appenders/db/append-via-jndi.xml |   11 -
 .../chapters/appenders/db/append-with-c3p0.xml     |    8 +
 .../appenders/db/append-with-drivermanager.xml     |   23 +-
 .../appenders/db/append-with-pooled-datasource.xml |    6 +-
 .../appenders/mail/CounterBasedEvaluator.java      |    2 +-
 .../main/java/chapters/appenders/mail/EMail.java   |    2 +-
 .../java/chapters/appenders/mail/Marked_EMail.java |    2 +-
 .../chapters/appenders/mail/customBufferSize.xml   |    2 +-
 .../java/chapters/appenders/sift/SiftExample.java  |    2 +-
 .../appenders/socket/ConsolePluginClient.java      |  123 --
 .../chapters/appenders/socket/SocketClient1.java   |    5 +-
 .../chapters/appenders/socket/SocketClient2.java   |    2 +-
 .../java/chapters/appenders/socket/client2.xml     |   28 -
 .../java/chapters/appenders/socket/ssl/client.xml  |   28 -
 .../chapters/appenders/socket/ssl/keystore.jks     |  Bin 2168 -> 0 bytes
 .../java/chapters/appenders/socket/ssl/server.xml  |   22 -
 .../chapters/appenders/socket/ssl/truststore.jks   |  Bin 861 -> 0 bytes
 .../java/chapters/appenders/sub/sample/Bar.java    |    2 +-
 .../src/main/java/chapters/architecture/Bar.java   |    2 +-
 .../chapters/architecture/MyAppWithConfigFile.java |    2 +-
 .../java/chapters/architecture/SelectionRule.java  |    2 +-
 .../configuration/AddStatusListenerApp.java        |    2 +-
 .../src/main/java/chapters/configuration/Foo.java  |    2 +-
 .../main/java/chapters/configuration/MyApp1.java   |    2 +-
 .../main/java/chapters/configuration/MyApp2.java   |    2 +-
 .../main/java/chapters/configuration/MyApp3.java   |    2 +-
 .../configuration/contextScopedVariable.xml        |   15 -
 .../main/java/chapters/filters/FilterEvents.java   |    2 +-
 .../src/main/java/chapters/filters/GoMDC.java      |    2 +-
 .../main/java/chapters/filters/SampleFilter.java   |    2 +-
 .../java/chapters/filters/SampleTurboFilter.java   |    2 +-
 .../java/chapters/introduction/HelloWorld1.java    |    2 +-
 .../java/chapters/introduction/HelloWorld2.java    |    2 +-
 .../chapters/layouts/CallerEvaluatorExample.java   |    2 +-
 .../layouts/ExceptionEvaluatorExample.java         |    2 +-
 .../java/chapters/layouts/MySampleConverter.java   |   29 +-
 .../main/java/chapters/layouts/MySampleLayout.java |    4 +-
 .../java/chapters/layouts/MySampleLayout2.java     |    4 +-
 .../main/java/chapters/layouts/PatternSample.java  |    2 +-
 .../main/java/chapters/layouts/SampleLogging.java  |    2 +-
 .../main/java/chapters/layouts/TestException.java  |    2 +-
 .../main/java/chapters/layouts/TrivialMain.java    |    4 +-
 .../src/main/java/chapters/layouts/highlighted.xml |   16 -
 .../chapters/layouts/mySampleConverterConfig.xml   |    4 +-
 .../src/main/java/chapters/mdc/NumberCruncher.java |    2 +-
 .../java/chapters/mdc/NumberCruncherClient.java    |    2 +-
 .../java/chapters/mdc/NumberCruncherServer.java    |    2 +-
 .../src/main/java/chapters/mdc/SimpleMDC.java      |    2 +-
 .../main/java/chapters/mdc/UserServletFilter.java  |    2 +-
 .../chapters/migrationFromLog4j/Log4jMain.java     |    2 +-
 .../chapters/migrationFromLog4j/LogbackMain.java   |    2 +-
 .../migrationFromLog4j/TrivialLog4jAppender.java   |    2 +-
 .../migrationFromLog4j/TrivialLog4jLayout.java     |    2 +-
 .../migrationFromLog4j/TrivialLogbackAppender.java |    2 +-
 .../migrationFromLog4j/TrivialLogbackLayout.java   |    2 +-
 .../java/chapters/onJoran/SimpleConfigurator.java  |   18 +-
 .../chapters/onJoran/calculator/AddAction.java     |    2 +-
 .../chapters/onJoran/calculator/Calculator1.java   |   14 +-
 .../chapters/onJoran/calculator/Calculator2.java   |   14 +-
 .../onJoran/calculator/ComputationAction1.java     |    4 +-
 .../onJoran/calculator/ComputationAction2.java     |    4 +-
 .../chapters/onJoran/calculator/LiteralAction.java |    4 +-
 .../onJoran/calculator/MultiplyAction.java         |    2 +-
 .../chapters/onJoran/helloWorld/HelloWorld.java    |    8 +-
 .../onJoran/helloWorld/HelloWorldAction.java       |    2 +-
 .../java/chapters/onJoran/implicit/NOPAction.java  |    2 +-
 .../java/chapters/onJoran/implicit/PrintMe.java    |    8 +-
 .../onJoran/implicit/PrintMeImplicitAction.java    |    6 +-
 .../onJoran/newRule/NewRuleCalculator.java         |   10 +-
 .../onJoran/newRule/{newRule.xml => new-rule.xml}  |    0
 .../chapters/receivers/socket/AppenderExample.java |   76 --
 .../chapters/receivers/socket/ReceiverExample.java |   55 -
 .../java/chapters/receivers/socket/appender1.xml   |   22 -
 .../java/chapters/receivers/socket/appender2.xml   |   28 -
 .../java/chapters/receivers/socket/appender3.xml   |   21 -
 .../java/chapters/receivers/socket/appender4.xml   |   27 -
 .../java/chapters/receivers/socket/receiver1.xml   |   26 -
 .../java/chapters/receivers/socket/receiver2.xml   |   32 -
 .../java/chapters/receivers/socket/receiver3.xml   |   28 -
 .../java/chapters/receivers/socket/receiver4.xml   |   34 -
 logback-site/pom.xml                               |    2 +-
 .../src/site/images.src/serverSocketReceiver.odg   |  Bin 11152 -> 0 bytes
 .../src/site/images.src/socketReceiver.odg         |  Bin 11118 -> 0 bytes
 logback-site/src/site/pages/.htaccess              |    5 +-
 logback-site/src/site/pages/access.html            |    4 +-
 logback-site/src/site/pages/beagle/index.html      |  193 ---
 logback-site/src/site/pages/codes.html             |  337 ++---
 logback-site/src/site/pages/consolePlugin.html     |  330 +++++
 logback-site/src/site/pages/css/common.css         |   29 +-
 logback-site/src/site/pages/css/screen.css         |   76 +-
 logback-site/src/site/pages/demo.html              |   34 +-
 logback-site/src/site/pages/dependencies.html      |   54 +-
 logback-site/src/site/pages/documentation.html     |   34 +-
 logback-site/src/site/pages/download.html          |   44 +-
 logback-site/src/site/pages/faq.html               |    2 +-
 logback-site/src/site/pages/index.html             |   43 +-
 logback-site/src/site/pages/job.html               |   67 +-
 logback-site/src/site/pages/js/decorator.js        |  100 --
 logback-site/src/site/pages/mailinglist.html       |   46 +-
 logback-site/src/site/pages/manual/.htaccess       |    4 +-
 logback-site/src/site/pages/manual/appenders.html  | 1130 +++++------------
 .../src/site/pages/manual/architecture.html        |  116 +-
 .../src/site/pages/manual/configuration.html       |  548 ++++-----
 logback-site/src/site/pages/manual/encoders.html   |   26 +-
 logback-site/src/site/pages/manual/filters.html    |   56 +-
 logback-site/src/site/pages/manual/groovy.html     |  183 ++-
 logback-site/src/site/pages/manual/index.html      |    8 -
 .../src/site/pages/manual/introduction.html        |   35 +-
 logback-site/src/site/pages/manual/jmxConfig.html  |   27 +-
 logback-site/src/site/pages/manual/layouts.html    |  636 +++++-----
 .../src/site/pages/manual/loggingSeparation.html   |   39 +-
 logback-site/src/site/pages/manual/mdc.html        |   20 +-
 logback-site/src/site/pages/manual/menu.js         |   26 +-
 .../src/site/pages/manual/migrationFromLog4j.html  |   12 +-
 logback-site/src/site/pages/manual/onJoran.html    |   82 +-
 logback-site/src/site/pages/manual/receivers.html  |  541 --------
 logback-site/src/site/pages/manual/usingSSL.html   | 1294 --------------------
 logback-site/src/site/pages/news.html              |  665 +---------
 logback-site/src/site/pages/reasonsToSwitch.html   |   91 +-
 .../site/pages/recipes/emailPerTransaction.html    |    4 +-
 logback-site/src/site/pages/setup.html             |  230 ++--
 logback-site/src/site/pages/templates/creative.js  |    2 +-
 logback-site/src/site/pages/templates/footer.js    |   10 +-
 logback-site/src/site/pages/templates/left.js      |    5 -
 logback-site/src/site/pages/volunteer.html         |  109 +-
 .../site/resources/beagle/images/beagleFeature.png |  Bin 16874 -> 0 bytes
 .../site/resources/beagle/images/beagleSample.png  |  Bin 37986 -> 0 bytes
 .../site/resources/beagle/images/beagleView0.png   |  Bin 2093 -> 0 bytes
 .../resources/beagle/images/callerData-jump.png    |  Bin 15024 -> 0 bytes
 .../site/resources/beagle/images/callerData.png    |  Bin 10848 -> 0 bytes
 .../src/site/resources/beagle/images/font.png      |  Bin 57302 -> 0 bytes
 .../src/site/resources/beagle/images/menu.png      |  Bin 6263 -> 0 bytes
 .../site/resources/beagle/images/nebulaFeature.png |  Bin 44392 -> 0 bytes
 .../src/site/resources/beagle/images/play_doc.gif  |  Bin 598 -> 0 bytes
 .../site/resources/beagle/images/preferences.png   |  Bin 38884 -> 0 bytes
 .../beagle/images/sailing-ship-128x128.png         |  Bin 18587 -> 0 bytes
 .../resources/beagle/images/sailing-ship-16x16.png |  Bin 498 -> 0 bytes
 .../resources/beagle/images/sailing-ship-32x32.png |  Bin 2276 -> 0 bytes
 .../resources/beagle/images/sailing-ship-48x48.png |  Bin 4073 -> 0 bytes
 logback-site/src/site/resources/css/anchor12.png   |  Bin 624 -> 0 bytes
 logback-site/src/site/resources/css/anchor16.png   |  Bin 945 -> 0 bytes
 logback-site/src/site/resources/css/anchor20.png   |  Bin 1212 -> 0 bytes
 logback-site/src/site/resources/css/anchor24.png   |  Bin 1630 -> 0 bytes
 .../src/site/resources/images/logos/lblogo-150.jpg |  Bin 16605 -> 0 bytes
 .../src/site/resources/images/logos/lblogo-200.jpg |  Bin 20874 -> 0 bytes
 .../src/site/resources/images/logos/lblogo-40.jpg  |  Bin 8716 -> 0 bytes
 .../chapters/receivers/serverSocketReceiver.png    |  Bin 13715 -> 0 bytes
 .../images/chapters/receivers/socketReceiver.png   |  Bin 14043 -> 0 bytes
 pom.xml                                            |  112 +-
 src/main/clas/signed-clas.txt                      |   67 -
 src/main/javadocHeaders.xml                        |    3 +-
 src/main/licenseHeader.txt                         |    2 +-
 1317 files changed, 10858 insertions(+), 33896 deletions(-)

diff --git a/README.txt b/README.txt
index c9c4f3a..362dcb6 100644
--- a/README.txt
+++ b/README.txt
@@ -1,3 +1,4 @@
+
 Thank you for downloading logback, the reliable, generic, fast and
 flexible logging library for Java.
 
@@ -8,7 +9,7 @@ Building logback
 
 Building logback is documented at:
 
-  http://logback.qos.ch/setup.html#ide
+  http://logback.qos.ch/manual/introduction.html#BuildingLogback
 
 In case of problems
 ===================
@@ -18,4 +19,4 @@ on the logback-user at qos.ch mailing list.  However, please do not
 directly e-mail logback developers. The answer to your question might
 be useful to other users. Moreover, there are many knowledgeable users
 on the logback-user mailing lists who can quickly answer your
-questions. 
+questions. 
\ No newline at end of file
diff --git a/docs/.htaccess b/docs/.htaccess
index 5280beb..3e59922 100644
--- a/docs/.htaccess
+++ b/docs/.htaccess
@@ -1,3 +1,2 @@
-Redirect permanent /jmxConfig.html http://logback.qos.ch/manual/jmxConfig.html
-Redirect permanent /joran.html http://logback.qos.ch/manual/onJoran.html
-Redirect permanent /consolePlugin.html http://logback.qos.ch/beagle/
\ No newline at end of file
+Redirect jmxConfig.html http://logback.qos.ch/manual/jmxConfig.html
+Redirect joran.html http://logback.qos.ch/manual/onJoran.html
\ No newline at end of file
diff --git a/docs/access.html b/docs/access.html
index 50e5a90..01fd154 100644
--- a/docs/access.html
+++ b/docs/access.html
@@ -58,8 +58,8 @@
 
 		<p>To use logback-access with Tomcat, after downloading the
 		logback distribution, place the files
-		<em>logback-core-1.1.2.jar</em> and
-		<em>logback-access-1.1.2.jar</em> under
+		<em>logback-core-1.0.4.jar</em> and
+		<em>logback-access-1.0.4.jar</em> under
 		$TOMCAT_HOME/lib/ directory, where $TOMCAT_HOME is the folder
 		where you have installed Tomcat.
     </p>
@@ -317,13 +317,13 @@
 <pattern>clf</pattern></pre>
 
   <p>The so called "combined" format is also widely recognized. It is
-  defined as the '%h %l %u [%t] "%r" %s %b "%i{Referer}"
+  defined as the '%h %l %u %t "%r" %s %b "%i{Referer}"
   "%i{User-Agent}"' pattern. As a facilitator, you can use the
   "combined" as a shorthand. Thus, the following directive
   </p>
 
   <pre class="prettyprint source"><encoder>
-  <pattern>%h %l %u [%t] "%r" %s %b "%i{Referer}" "%i{User-Agent}"</pattern>
+  <pattern>%h %l %u %t "%r" %s %b "%i{Referer}" "%i{User-Agent}"</pattern>
 </encoder></pre>
 
   <p>is equivalent to:</p>
diff --git a/docs/beagle/images/beagleFeature.png b/docs/beagle/images/beagleFeature.png
deleted file mode 100644
index faf6ab9..0000000
Binary files a/docs/beagle/images/beagleFeature.png and /dev/null differ
diff --git a/docs/beagle/images/beagleSample.png b/docs/beagle/images/beagleSample.png
deleted file mode 100644
index 2d24175..0000000
Binary files a/docs/beagle/images/beagleSample.png and /dev/null differ
diff --git a/docs/beagle/images/beagleView0.png b/docs/beagle/images/beagleView0.png
deleted file mode 100644
index 344e0a0..0000000
Binary files a/docs/beagle/images/beagleView0.png and /dev/null differ
diff --git a/docs/beagle/images/callerData-jump.png b/docs/beagle/images/callerData-jump.png
deleted file mode 100644
index f9f5ee7..0000000
Binary files a/docs/beagle/images/callerData-jump.png and /dev/null differ
diff --git a/docs/beagle/images/callerData.png b/docs/beagle/images/callerData.png
deleted file mode 100644
index aa4ee7f..0000000
Binary files a/docs/beagle/images/callerData.png and /dev/null differ
diff --git a/docs/beagle/images/font.png b/docs/beagle/images/font.png
deleted file mode 100644
index 2a0629d..0000000
Binary files a/docs/beagle/images/font.png and /dev/null differ
diff --git a/docs/beagle/images/menu.png b/docs/beagle/images/menu.png
deleted file mode 100644
index dd05f50..0000000
Binary files a/docs/beagle/images/menu.png and /dev/null differ
diff --git a/docs/beagle/images/nebulaFeature.png b/docs/beagle/images/nebulaFeature.png
deleted file mode 100644
index 5af6295..0000000
Binary files a/docs/beagle/images/nebulaFeature.png and /dev/null differ
diff --git a/docs/beagle/images/play_doc.gif b/docs/beagle/images/play_doc.gif
deleted file mode 100644
index 4d7e77a..0000000
Binary files a/docs/beagle/images/play_doc.gif and /dev/null differ
diff --git a/docs/beagle/images/preferences.png b/docs/beagle/images/preferences.png
deleted file mode 100644
index 5d8e1cd..0000000
Binary files a/docs/beagle/images/preferences.png and /dev/null differ
diff --git a/docs/beagle/images/sailing-ship-128x128.png b/docs/beagle/images/sailing-ship-128x128.png
deleted file mode 100644
index 59aec6a..0000000
Binary files a/docs/beagle/images/sailing-ship-128x128.png and /dev/null differ
diff --git a/docs/beagle/images/sailing-ship-16x16.png b/docs/beagle/images/sailing-ship-16x16.png
deleted file mode 100644
index 44e9663..0000000
Binary files a/docs/beagle/images/sailing-ship-16x16.png and /dev/null differ
diff --git a/docs/beagle/images/sailing-ship-32x32.png b/docs/beagle/images/sailing-ship-32x32.png
deleted file mode 100644
index 1b40e46..0000000
Binary files a/docs/beagle/images/sailing-ship-32x32.png and /dev/null differ
diff --git a/docs/beagle/images/sailing-ship-48x48.png b/docs/beagle/images/sailing-ship-48x48.png
deleted file mode 100644
index f7b9527..0000000
Binary files a/docs/beagle/images/sailing-ship-48x48.png and /dev/null differ
diff --git a/docs/beagle/index.html b/docs/beagle/index.html
deleted file mode 100644
index e88e254..0000000
--- a/docs/beagle/index.html
+++ /dev/null
@@ -1,193 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
-    <title>Logback-beagle</title>
-    <link rel="stylesheet" type="text/css" href="../css/common.css" />
-    <link rel="stylesheet" type="text/css" href="../css/screen.css" media="screen" />
-    <link rel="stylesheet" type="text/css" href="../css/_print.css" media="print" />
-    <link rel="stylesheet" type="text/css" href="../css/prettify.css" media="screen" />
-    
-  </head>
-  <body onload="prettyPrint(); decorate();">
-    <script type="text/javascript">prefix='../';</script>
-    <script type="text/javascript" src="../js/prettify.js"></script>
-    <script type="text/javascript" src="../templates/header.js"></script>
-    <script type="text/javascript" src="../js/dsl.js"></script>
-    <script type="text/javascript" src="../js/jquery-min.js"></script>
-    <script type="text/javascript" src="../js/decorator.js"></script>
-
-    <div id="left">
-      <noscript>Please turn on Javascript to view this menu</noscript>
-      <script src="../templates/left.js" type="text/javascript"></script>
-    </div>
-
-    <div id="content">
-
-    <img style="float:left; margin-right: 1em;" src="images/sailing-ship-128x128.png" alt=""/>             
-      <h1>Logback-beagle</h1>
-	
-
-      <script src="../templates/creative.js" type="text/javascript"></script>
-
-
-
-
-
-		<h2 class="doAnchor">Logback-beagle: an Eclipse plug-in for
-		viewing logs</h2>
-
-
-    <p>During the development process, it is common for developers to
-    print logging events on the console. Typically, the developer will
-    also customize the format of the log output by setting an
-    appropriate layout pattern.  Logback-beagle is intended as a
-    replacement for viewing logs via the console. It offers several
-    advantages over the plain-old console:
-    </p>
-    
-    <ul>
-
-      <li>Events of level WARN and ERROR are marked by an orange flag
-      and respectively a red flag.</li>
-
-      <li>Quickly jump to the class and line where a given logging
-      request originated
-      </li>
-
-      <li>Easly view and jump to the callers of any log statement upto
-      eight levels deep</li>
-  
-      <li>Change the output format on-the-fly</li>
-
-      <li>quickly filter-out events by setting the level of existing
-      loggers</li>
-
-      <li>Measure the time elapsed between any two lines of log</li>
-    </ul>
-
-
-    <h2 class="doAnchor">Plug-in Installation</h2>
-
-    <p>The logback-beagle plug-in requires the Nebula Grid plug-in
-    which must be installed first.</p>
-
-    <dl>
-      <dt>Step 1: Nebula Grid</dt>
-      
-      <dd>
-      <p>The Nebula Grid plug-in which can be installed from
-      <b>http://download.eclipse.org/technology/nebula/snapshot/</b>. Only
-      the "Nebula Grid Feature" needs to be installed.</p>
-      
-      <p><img src="images/nebulaFeature.png" alt=""/></p>
-      
-      </dd>
-
-      <dt>Step 2: Logbak-beagle</dt>
-      
-      <dd><p>The logback-beagle plug-in can be installed from
-      <b>http://logback.qos.ch/p2/</b>. You need to select "Logback",
-      "Logback Beagle" and "SLF4J" bundles for installation as shown
-      below.</p>
-
-      <p><img src="images/beagleFeature.png" alt=""/></p>
-      </dd>
-    </dl>
-        
-    
-    <p>Restarting Eclipse should load the plugin. To access the Beagle
-    View, either type A"lt-Shift-Q, Q" or select: <em>Window > Show
-    view > Other... </em>. You should see the <em>Beagle</em> view
-    nested in the <em>Logback</em> category. Selecting this view will
-    add it to your workspace. It shouls looks as follows:</p>
-
-    <p><img src="images/beagleView0.png" alt=""/></p>
-
-    <h3>Configuring the client (logback.xml)</h3>
-    
-    <p>A single additional configuration line in <em>logback.xml</em>
-    is sufficient to send log events from your application to
-    logback-beagle.
-    </p>
-    
-    <pre class="prettyprint source"><configuration debug="true">
-  <!-- sends logs to logback-beagle -->
-  <b><consolePlugin /></b>
-</configuration></pre>
-  
-	
-   <p>Under the hood, <code><consolePlugin></code> element creates
-   a <code>SocketAppender</code> which will send logging events to a
-   TCP socket on <code>localhost</code> port
-   <em>4321</em>. Logback-beagle launches the corresponding server
-   listening on this port on localhost.
-   </p>
-
-
-   <h2 class="doAnchor" name="using">Using logback-beagle</h2>
-
-   <p>Logback-beagle displays the events it receives in a table
-   according to the layout format chosen by the user. Here is a screen
-   shot of the Beagle View containing logging events.
-   </p>
-
-   <img src="images/beagleSample.png" alt=""/>
-
-   <p>Clicking on any log line will scroll-lock (freeze) the
-   view. Double clicking on that same line will release the scroll
-   lock (unfreeze) the view. You can also release the scroll lock by
-   clicking on <img src="images/play_doc.gif" alt="" style="display:
-   inline;"/>. This icon becomes active (clickable) when the view is
-   frozen.
-   </p>
-
-   <h3 class="doAnchor" name="using">Jump to caller/Expand caller data</h3>
-   
-   <p>Right-clicking on any line will reveal the following menu:</p>
-   
-   <p><img src="images/menu.png" alt=""/></p>
-
-   <p>Selecting "Jump to caller" will move the edit cursor to the file
-   and line number whence the logging statement issued.</p>
-
-   <p>Selecting "Expand caller data" will reveal the stack trace of
-   method calls upto eight levels deep. Here is a sample
-   screen-shot:</p>
-
-    <p><img src="images/callerData.png" alt=""/></p>
-
-    <p>Not only are the callers of the log statement revealed, it
-    becomes possible to jump to any of the listed callers. Right-click
-    on a caller line. A menu will appear. Select "Jump to caller" in
-    the menu to jump to the caller of your choice.
-    </p>
-
-    <p><img src="images/callerData-jump.png" alt=""/></p>
-
-    <p>Caller data can be collapsed by selecting "Collapse caller
-    data" from the said menu.</p>
-
-    <h2 class="doAnchor">Preferences</h2>
-    
-    <p>Logback-beagle preferences can be found under the "Beagle"
-    label nested under "Run/Debug" category. You can customize the
-    output pattern to best suit your preferences. Changes take effect
-    immediately.
-    </p>
-
-    <p><img src="images/preferences.png" alt=""/></p>
-
-
-    <p>You may also change the font type and size used for displaying
-    the log events via the Eclipse's preferences dialog as shown
-    below:</p>
-
-     <p><img src="images/font.png" alt=""/></p>
-    
-    <script src="templates/footer.js" type="text/javascript"></script>
-    </div>
-  </body>
-</html>
diff --git a/docs/codes.html b/docs/codes.html
index 36d0468..7aeabb4 100644
--- a/docs/codes.html
+++ b/docs/codes.html
@@ -10,23 +10,12 @@
     <link rel="stylesheet" type="text/css" href="css/screen.css" media="screen" />
     <link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
     <link rel="stylesheet" type="text/css" href="css/prettify.css" />
-    <style type="text/css">
-      h3.doAnchor {
-        border-top: 2px solid #888888;
-        /*color: #333;*/
-        padding-bottom: 1ex;
-        padding-top: 1ex;
-      }
-    </style>
   </head>
   
-  <body  onload="prettyPrint(); decorate();">
+  <body  onload="prettyPrint()">
     <script type="text/javascript" src="js/prettify.js"></script>
     <script type="text/javascript">prefix='';</script>
-    <script type="text/javascript" src="templates/header.js"></script>
-    <script type="text/javascript" src="js/jquery-min.js"></script>
-    <script type="text/javascript" src="js/decorator.js"></script>
-    
+    <script src="templates/header.js" type="text/javascript"></script>
 
   <div id="left">
     <script src="templates/left.js" type="text/javascript"></script>
@@ -36,9 +25,10 @@
   <h2><a name="top">Logback error messages and their meanings</a></h2>
   
 
-  <h3 class="doAnchor" name="null_CS">The contextSelector cannot be
-  null in <code>StaticLoggerBinder</code>.  
-  </h3>
+  <p><a name="null_CS" href="#null_CS"> The contextSelector cannot be
+  null in <code>StaticLoggerBinder</code>.
+  </a>
+  </p>
 
   <p>An <code>IllegalStateException</code> is thrown when no
   ContextSelector could be set for logback's
@@ -50,12 +40,14 @@
   <p>It should not happen when you are using the default or JNDI
   context selectors.
   </p>
-  
+  <hr/>
 
   <!-- =========================================================== -->
-  <h3 class="doAnchor" name="layoutInsteadOfEncoder">This appender no
-  longer admits a layout as a sub-component, set an encoder instead.
-  </h3>
+  <p>
+    <a name="layoutInsteadOfEncoder"
+    href="#layoutInsteadOfEncoder">This appender no longer admits a
+    layout as a sub-component, set an encoder instead.</a>
+  </p>
 
   <p>As of logback version 0.9.19, the <code>WriterAppender</code>
   class has been renamed as <code>OutputStreamAppender</code>, with
@@ -148,15 +140,16 @@
   layout instead of encoder) will continue to work unmodified.</b>
   </p>
 
-  
+  <hr/>
   
 
   <!-- =========================================================== -->
 
-  <h3 class="doAnchor" name="socket_no_host">No remote host or address
-  is set for <code>SocketAppender</code>
-    
-  </h3>
+  <p>
+    <a name="socket_no_host" href="#socket_no_host">No remote host or
+    address is set for <code>SocketAppender</code>
+    </a>
+  </p>
 
   <p>A remote host or address is mandatory for SocketAppender. </p>
   <p>You can specify the remote host in the configuration file
@@ -171,13 +164,13 @@
 </appender></pre>
 
 
-  
+  <hr />
 
-  <!-- ============================================================= -->
-
-  <h3 class="doAnchor" name="socket_no_port">No remote port is set for
-  <code>SocketAppender</code>    
-  </h3>
+  <p>
+    <a name="socket_no_port" href="#socket_no_port">No remote port is set for
+    <code>SocketAppender</code> 
+    </a>
+  </p>
     
   <p>A remote port is mandatory for SocketAppender.</p>
       
@@ -192,14 +185,13 @@
 </appender></pre>
 				
 
+  <hr />
 
   
-
-  <!-- ============================================================= -->
-
-  <h3 class="doAnchor" name="smtp_no_layout">No <code>Layout</code> is
-  set for SMTPAppender
-  </h3>
+  <p>
+    <a name="smtp_no_layout" href="#smtp_no_layout">
+      No <code>Layout</code> is set for SMTPAppender</a>
+  </p>
 
   <p>A <code>Layout</code> is mandatory for
   <code>SMTPAppender</code>. It allows SMTPAppender to format logging
@@ -225,13 +217,13 @@
   </p>
 
 
-  
+  <hr />
       
-  <!-- ============================================================= -->
-
-  <h3 class="doAnchor" name="sbtp_size_format">Specified number is not
-  in proper int form, or not expected format.    
-  </h3>
+  <p>
+    <a name="sbtp_size_format" href="#sbtp_size_format">Specified number is not in proper
+    int form, or not expected format.  
+    </a>
+  </p>
     
   <p>When you specify the MaxFileSize to be used by the
   SizeBasedRollingPolicy, logback expects a rather precise
@@ -246,15 +238,14 @@
       
   <p>Here are some correct values: 500KB, 15MB, 2GB.</p>
   
-  
+  <hr />
       
-  <!-- ============================================================= -->
-
-  <h3 class="doAnchor" name="rfa_no_tp">No
-  <code>TriggeringPolicy</code> was set for the
-  <code>RollingFileAppender</code>.
-    
-  </h3>
+  <p>
+    <a name="rfa_no_tp" href="#rfa_no_tp">No
+    <code>TriggeringPolicy</code> was set for the
+    <code>RollingFileAppender</code>.
+    </a>
+  </p>
     
   <p>The <code>RollingFileAppender</code> must be set up with a
   <code>TriggeringPolicy</code>. It permits the Appender to know when
@@ -283,13 +274,14 @@
   <code>RollingPolicy</code> at the same time.
   </p>
       
-  
+  <hr />
       
-  <!-- ============================================================= -->
 
-  <h3 class="doAnchor" name="rfa_no_rp">No <code>RollingPolicy</code>
-  was set for the <code>RollingFileAppender</code>.    
-  </h3>
+  <p>
+    <a name="rfa_no_rp" href="#rfa_no_rp">No <code>RollingPolicy</code> was set
+    for the <code>RollingFileAppender</code>.
+    </a>
+  </p>
   
   <p>The <code>RollingFileAppender</code> must be set up with
   a <code>RollingPolicy</code>. It permits the Appender to
@@ -319,14 +311,15 @@
   </p>
   
   
+  <hr/>
   
-
-  <!-- ============================================================= -->
-  <h3 class="doAnchor" name="tbr_fnp_not_set">The <span
-  class="option">FileNamePattern</span> property is mandatory for both
-  <code>TimeBasedRollingPolicy</code> and
-  <code>FixedWindowRollingPolicy</code>.    
-  </h3>
+  <p>
+    <a name="tbr_fnp_not_set" href="#tbr_fnp_not_set">
+      The <span class="option">FileNamePattern</span> property is mandatory for both
+      <code>TimeBasedRollingPolicy</code> and
+      <code>FixedWindowRollingPolicy</code>.
+    </a>
+  </p>
 
   
   <p>The <span class="option">FileNamePattern</span> property for both
@@ -342,14 +335,14 @@
   </p>
 
 
-  
+  <hr/>
 
-  <!-- ============================================================= -->
-  <h3 class="doAnchor" name="rfa_file_after">The <span
-  class="option">File</span> property must be set before any rolling
-  policy or triggering policy.
-    
-  </h3>
+  <p>
+    <a name="rfa_file_after" href="#rfa_file_after">
+      The <span class="option">File</span> property must be set before
+      any rolling policy or triggering policy.
+    </a>
+  </p>
 
   <p>The <span class="option">File</span> property, if present, must
   be placed before any rolling policy or triggering policy. Thus, in a
@@ -358,46 +351,23 @@
   triggering policy declarations.
   </p>
 
-  <!-- ============================================================= -->  
-
-  <h3 class="doAnchor" name="rfa_collision"><span
-  class="option">File</span> property collides with <span
-  class="option">fileNamePattern</span>. Aborting.
-  </h3>
+  <hr/>
 
-  <p>When the <span class="option">file</span> property matches the
-  regular expression defined by <span
-  class="option">fileNamePattern</span>, there is a risk of
-  collision. A collision occurs when the active log file as defined by
-  the <span class="option">file</span> property has the same path as
-  an existing log archive. Such a collision will result in the log
-  archive being overwritten.
+  <p><a name="renamingError" href="#renamingError">Failed to rename file [x] to [y].</a>
   </p>
 
-  <p>As such, in case <span class="option">file</span> property
-  matches the regular expression defined by <span
-  class="option">fileNamePattern</span>, in order to avoid data loss,
-  <code>RollingFileAppender</code> will emit an error message and
-  refuse to start.</p>
-
-  <!-- ============================================================= -->
-  <h3 class="doAnchor" name="renamingError">Failed to rename file [x]
-  as [y].</h3>
-
-  <b>On Windows</b>
-
-  <p>On the Windows platform a log file cannot be renamed if there are
-  handles referencing it. For example, when the file is read by
-  another process such as <code>less</code>, <code>tail</code>,
-  etc. During application hot-redeployment, the old instance of the
-  application will have open references to log files until the old
-  instance is completely shutdown or until the <code>stop()</code>
-  method on its <a
+  <p>A log file cannot be renamed if there are handles referencing
+  that file. For example, when the file is read by another process
+  such as <code>less</code>, <code>tail</code>, etc. During
+  application hot-redeployment, the old instance of the application
+  will have open references to log files until the old instance is
+  completely shutdown or until the <code>stop()</code> method on its
+  <a
   href="apidocs/ch/qos/logback/classic/LoggerContext.html"><code>LoggerContext</code></a>
   is invoked.
   </p>
 
-  <p><a
+  <p>On the Windows platform, <a
   href="http://technet.microsoft.com/en-us/sysinternals/bb896653">Process
   Explorer</a> can help you locate the processes which reference a
   given file (Find -> Find Handle or DLL). On Linux, you can use
@@ -405,23 +375,20 @@
   <em>pathToFile</em></code> command to find which process has the
   file given by <em>pathToFile</em> open. </p>
 
-  <p>Rolling might also fail due to incorrect file permission
-  settings. On windows, renaming a file requires the "modify"
-  permission which is different than the permission to "write" to the
-  file.</p>
-
-
-  <p>In practice, it can be hard to set the right permissions or to
-  ensure that there are no file handle references to log files. Under
-  such circumstances, it can be easier to avoid file renaming
-  altogether. File renaming can be avoided by omitting the <span
-  class="option">file</span> property in
-  <code>TimeBasedRollingPolicy</code>, as shown in the next
-  configuration snippet.
+  <p>In practice, it can be hard to ensure that there are no file
+  handle references to log files. It can be easier to avoid file
+  renaming altogether. As a first step, let us note that for
+  <code>TimeBasedRollingPolicy</code>, the <span
+  class="option">file</span> option can be omitted. If omitted, no
+  file renaming will be performed during roll over. Thus, in order to
+  avoid file renaming errors just leave blank the <span
+  class="option">file</span> option of
+  <code>RollingFileAppender</code>, as shown in the next configuration
+  snippet.
   </p>
 
   <pre class="prettyprint source"><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
-  <!-- <span class="option">file</span> property left unset/blank -->
+  <!-- <span class="option">file</span> option left unset/blank -->
   <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
     <fileNamePattern>mylog.%d{yyyy-MM-dd}.log</fileNamePattern>
   </rollingPolicy>
@@ -435,32 +402,16 @@
    class="option">file</span> property is mandatory.
    </p>
  
-   <h4 class="doAnchor" name="renamingErrorOnUnix">On Unix-*</h4>
   
-   <p>On the Unix platform, the basic/quick rename method supplied by
-   the JDK does not work if the source and target files are located on
-   different file systems. In order to deal with this contingency,
-   logback will resort to renaming by copying if all following three
-   conditions are met:</p>
-
-   <ol>
-     <li>quick renaming fails, </li>
-     <li>source and destination files for the rename are on different
-     file systems,
-     </li>
-
-     <li>the host JVM platform runs Java 7 or later.</li>
-   </ol>
-
-   <p>The code for determining the file system of a file requires Java
-   7. No rename by copying will be performed on Java 6 or earlier.</p>
-   
+  <hr/>
 
-  <!-- ============================================================= -->
-  <h3 class="doAnchor" name="fwrp_parentFileName_not_set">The <span
-  class="option">File</span> property must be set before
-  <code>FixedWindowRollingPolicy</code>    
-  </h3>
+
+  <p>
+    <a name="fwrp_parentFileName_not_set" href="#fwrp_parentFileName_not_set">
+      The <span class="option">File</span> property must be set before
+      <code>FixedWindowRollingPolicy</code>
+    </a>
+  </p>
 
   <p>The <span class="option">File</span> property is mandatory with
   <code>FixedWindowRollingPolicy</code>. Moreover, the <span
@@ -473,11 +424,12 @@
     FixedWindowRollingPolicy </a> for more information.
   </p>
 			
-  
-  <!-- ============================================================= -->
-  <h3 class="doAnchor" name="tbr_fnp_prudent_unsupported">Prudent mode
-  is not supported with <code>FixedWindowRollingPolicy</code>.
-  </h3>
+  <hr />
+  <p>
+    <a name="tbr_fnp_prudent_unsupported"
+    href="#tbr_fnp_prudent_unsupported">Prudent mode is not supported
+    with <code>FixedWindowRollingPolicy</code>.</a>
+  </p>
 
   <p>Given that <code>FixedWindowRollingPolicy</code> performs
   multiple file rename operations during roll over, and that these
@@ -486,12 +438,12 @@
   <code>FixedWindowRollingPolicy</code>.
   </p>
 
-  
+  <hr />
   
   <!-- ============================================================= -->
-  <h3 class="doAnchor" name="syslog_layout">SyslogAppender does not
-  admit a layout.
-  </h3>
+  <p><a name="syslog_layout" href="#syslog_layout"> SyslogAppender
+  does not admit a layout.</a>
+  </p>
 
 
   <p>Given that the format of a syslog request follows strict rules,
@@ -505,34 +457,24 @@
   href="manual/appenders.html#SyslogAppender">its documentation.</a>
   </p>
 
-  
+  <hr/>
 
   <!-- ============================================================= -->
-  <h3 class="doAnchor" name="1andOnly1">Only and only one appender can
-  be nested the <sift> element in
-  <code>SiftingAppender</code>.</h3>
+  <p><a name="1andOnly1" href="#1andOnly1">Only and only one appender
+  can be nested the <sift> element in
+  <code>SiftingAppender</code>.</a>
+  </p>
   
   <p>SiftingAppender admits one and only one nested appender. 
   </p>
   
+  <hr/>
 
   <!-- ============================================================= -->
-  <h3 class="doAnchor" name="ifJanino">Could not find Janino library
-  on the class path. Skipping conditional processing.
-  </h3>
-  
-  <p><a href="manual/configuration.html#conditional">Conditional
-  processing</a> in configuration files requires the <a
-  href="http://docs.codehaus.org/display/JANINO/Home">Janino
-  library</a>.  See the <a href="setup.html#janino">setup
-  instructions</a> for adding Janino to your class path.
+  <p><a name="block" href="#block">As of logback version 0.9.28,
+  JaninoEventEvaluator expects Java blocks.</a>
   </p>
 
-  <!-- ============================================================= -->
-  <h3 class="doAnchor" name="block">As of logback version 0.9.28,
-  JaninoEventEvaluator expects Java blocks.
-  </h3>
-
   <p>As of logback version 0.9.28, JaninoEvaluator expects Java
   "block", i.e. the body of a method. In previous versions only
   boolean expressions were allowed. For backward compatibility
@@ -576,11 +518,12 @@ return false;</pre>
 
    <p>
    </p>
-   
+   <hr/>
    <!-- ============================================================= -->
-   <h3 class="doAnchor" name="missingRightParenthesis">In a conversion
-   pattern, opened parenthesis must be closed.
-   </h3>
+   <p><a name="missingRightParenthesis"
+   href="#missingRightParenthesis">In a conversion pattern, opened
+   parenthesis must be closed.</a>
+   </p>
    
    <p>In conversion patterns, <a
    href="manual/layouts.html#Parentheses">parentheses are special</a>
@@ -591,10 +534,13 @@ return false;</pre>
    </p>
   
 
+  <p>
+   </p>
+   <hr/>
    <!-- ============================================================= -->
-   <h3 class="doAnchor" name="appender_order">Appenders must be
-   definied before they are referenced.
-   </h3>
+   <p><a name="appender_order" href="#appender_order">Appenders must
+   be definied before they are referenced.</a>
+   </p>
    
    <p>In a configuration file, at the point where an appender is
    referenced by name, it must be defined earlier in the configuration
@@ -643,47 +589,6 @@ return false;</pre>
 </configuration>
    </pre>
 
-  <!-- =========================================================== -->
-
-  <h3 class="doAnchor" name="remote_no_host">No remote host or address
-  is set for <code>SocketRemote</code>
-    
-  </h3>
-
-  <p>A remote host or address is mandatory for SocketRemote. </p>
-  <p>You can specify the remote host in the configuration file
-  as follows.
-  </p>
-  
-  <pre class="prettyprint source"><remote class="ch.qos.logback.classic.net.SocketRemote">
-  ...
-  <host>127.0.0.1</host>
-  ...
-</remote></pre>
-
-
-  
-
-  <!-- ============================================================= -->
-
-  <h3 class="doAnchor" name="socket_no_port">No remote port is set for
-  <code>SocketRemote</code>    
-  </h3>
-    
-  <p>A remote port is mandatory for SocketRemote.</p>
-      
-  <p>You can specify the remote port in the configuration file
-  like this:
-  </p>
-      
-  <pre class="prettyprint source"><remote class="ch.qos.logback.classic.net.SocketRemote">
-  ...
-  <port>4560</port>
-  ...
-</remote></pre>
-        
-
-
   <script src="templates/footer.js" type="text/javascript"></script>
   </div>
 </body>
diff --git a/docs/consolePlugin.html b/docs/consolePlugin.html
new file mode 100644
index 0000000..f49c2bb
--- /dev/null
+++ b/docs/consolePlugin.html
@@ -0,0 +1,330 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+    <title>Logback Console Plugin for Eclipse</title>
+    <link rel="stylesheet" type="text/css" href="css/common.css" />
+    <link rel="stylesheet" type="text/css" href="css/screen.css" media="screen" />
+    <link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
+
+    
+  </head>
+  <body>
+    <script type="text/javascript">prefix='';</script>
+
+    <script src="templates/header.js" type="text/javascript"></script>
+    <div id="left">
+      <script src="templates/left.js" type="text/javascript"></script>
+    </div>
+    <div id="content">
+	
+    <h2>Logback Console Plugin for Eclipse</h2>
+    
+    <p>During the development process, it is common for developers to
+    print log output on the console. Typically, the developer will
+    also customize the format of the log output by setting properties
+    of a <code>PatternLayout</code> instance.  The Logback Console
+    Plugin for Eclipse serves the same purpose as the regular console,
+    but offers several advantages over the plain-old console. Below is
+    a list of key advantages of our plugin:
+    </p>
+    
+    <ul>
+
+      <li>Event of level WARN and ERROR are colored in orange and
+      respectively in red.</li>
+
+      <li>Go to the java class and line where any given logging request was
+      issued by double-clicking on its output line.
+      </li>
+
+      <li>Filter events with logback's powerful filtering mechanism
+      without changing your logging configuration.
+      </li>
+    
+      <li>Change the output format dynamically whenever you chose to do so.</li>
+
+
+      <li>Easy configuration (only one line in your <em>logback.xml</em> file).
+      </li>
+     
+    </ul>
+    
+    <h3>Installation</h3>
+    
+    <p>
+     Installing the plugin requires a few steps. First get the plugin from
+     our <a href="download.html">download page</a>.
+    </p>
+    
+    <p>
+     Once the transfer is complete, unzip the file called
+     <code>ch.qos.logback.eclipse_<em>VERSION</em>.zip</code>. Place the folder
+     found inside the archive in the following directory: <em>ECLIPSE_INSTALL/plugins/</em>
+     where <em>ECLIPSE_INSTALL</em> is the directory where you've installed Eclipse.
+    </p>
+    
+    <p>
+     Relaunching Eclipse should load the plugin. To access the logback plugin, open
+     the following menu: <em>Window > Show view > Other... </em>. You should see
+     the <em>Logback View</em> nested in the <em>Logback</em> category. Selecting the
+     view will add it to your workspace.
+    </p>
+    
+    <h3>Logging to the logback plugin</h3>
+    
+    <p>
+     Logging to the logback plugin takes a single line of configuration
+     in your <em>logback.xml</em> configuration file, as you can see below.
+    </p>
+    
+    <div class="source"><pre><?xml version="1.0" encoding="UTF-8"?>
+
+<configuration>
+
+  <consolePlugin />
+  
+</configuration></pre></div>
+  
+   <p>
+    This element will trigger the creation of a <code>SocketAppender</code> that will send
+    events to the localhost, on port <em>4321</em> by default. That's all it takes to run your
+    software and log to the logback plugin. By default, logging events are not filtered, but please
+    keep in mind that context-wide filtering in your logging configuration may affect the events
+    that are received by the logback plugin.
+   </p>
+    
+   <p>If you already have
+    a server running on the default port, you can specify the port that will be used
+    by adding a simple attribute to the xml element:
+   </p>
+    
+    <div class="source"><pre><?xml version="1.0" encoding="UTF-8"?>
+
+<configuration>
+
+  <consolePlugin port="4567" />
+  
+</configuration></pre></div>    
+    
+   <p>
+    In that case, however, you will need to specify in the plugin preferences on which
+    port to listen for events. The plugin preferences will be covered in a following section
+    of this document.
+   </p>
+   
+   <h3>Using the logback plugin</h3>
+   
+   <p>
+    Once the <em>Logback View</em> is shown on your workspace, you might want to
+    configure it to fit your needs. Look at the right side of the plugin view.
+    You should see two buttons, along with the usual three Eclipse icons:
+   </p>
+   
+   <img src="images/plugin/buttons.gif" alt="buttons.gif"/>
+   
+   <p>
+    The first button on the left clears the console. The second button toggles
+    the auto-scroll functionality. When enabled, you will always see the latest
+    logs that have been received by the plugin. If you disable the auto scrolling,
+    the view will display the current logs, and add the new ones at the bottom of
+    the list.
+   </p>
+   
+   <p>
+    The third button opens a sub-menu that lets you configure the logback plugin. This
+    will be covered in a short moment.
+   </p>
+   
+   <p>
+    When your software logs events, they are displayed in the logback view as shown
+    below:
+   </p>
+   
+   <img src="images/plugin/sampleLogs.gif" alt="sampleLogs.gif"/>
+   
+   <p>
+    All events with the <em>WARN</em> level are displayed in orange. <em>ERROR</em>
+    level events are displayed in red.
+   </p>
+   
+   <p>
+    Double-clicking on a log entry will open a Java editor and show you the line
+    where the entry was requested. It is an easy way to directly access
+    the class and method that logged the selected entry.
+   </p>
+   
+   <p>
+    When an icon is shown on the left of the logging event, it means that the
+    logging event contains a stacktrace. Right-clicking on the line reveals
+    a sub-menu that lets you open Eclipse's StackTrace Console and display the
+    stacktrace. You can click on the underlined parts of the stacktrace to open
+    an editor revealing the selected class.
+   </p>
+   
+   <img src="images/plugin/stackTrace.gif" alt="stackTrace.gif"/>
+   
+   <h3>Configuring the logback plugin</h3>
+   
+   <p>
+    On the right of the view, right next to the auto-scroll toggle is
+    a button that opens a sub menu.
+   </p>
+   
+   <h4>Preferences</h4>
+   
+   <p>
+    The first item in this menu opens the plugin's preference window.
+   </p>
+   
+   <img src="images/plugin/prefs.gif" alt="prefs.gif" />
+   
+   <p>
+    In this window, you can configure the pattern that will be used by the plugin
+    to display the logs. By default, it is configured to show the following informations:
+   </p>
+
+   <ul>
+    <li>
+     Relative time since launch
+    </li>
+    <li>
+     Level of the request
+    </li>
+    <li>
+     The thread name
+    </li>
+    <li>
+     Name of the logger. The name is automatically shortened when longer than
+     25 characters
+    </li>
+    <li>
+     The message of the request
+    </li>
+   </ul>
+   
+   <p>An important point about this pattern is that, if it is
+   modified, the changes are immediately reflected on the
+   <strong>current content</strong> of the logback view.  That means
+   that if you would like to display an <code>MDC</code> value, or any
+   other information that the <code>PatternLayout</code> provides, you
+   can change it even <em>after</em> the logs have been requested.
+   </p>
+   
+   <p>
+    Along with the pattern, you can specify the port on which the plugin will listen
+    for logging events. You can also choose the font type and size that will be used
+    to display the logs in the logback view.
+   </p>
+   
+   <p>
+    Finally, you can choose how many logging events should be displayed in the
+    view before the list is trimmed. By default, the logback plugin will display
+    20'000 events. Once this number is reached, the plugin automatically drops
+    the 30% oldest logs. Please note that changing this value to a too much higher
+    value might lead to memory issues, or even crash Eclipse.
+   </p>
+   
+   
+   <h4>Filters</h4>
+   
+   <p>
+    The logback plugin lets you filter logging events when they are
+    received. It uses the powerful <code>EvaluatorFilter</code> objects
+    that are available in logback. For detailed information about these filters, you might want
+    to check the <a href="manual/filters.html">corresponding documentation</a> 
+    in the logback manual. In this document, we will only
+    cover some basic points, enough to get you started using the filtering
+    functionality of the logback plugin.
+   </p>
+   
+   <p>
+    The second item of the sub-menu on the right of the logback view
+    opens the filter configuration window:
+   </p>
+
+   <img src="images/plugin/filterWindow.gif" alt="filterWindow.gif"/>
+   
+   <p>
+    The upper part of the window lists the filters that are currently
+    used by the logback plugin. The lower part lets you create, edit
+    or delete a filter.
+   </p>
+   
+   <p>
+    A filter is composed of three pieces of information. First, a Java expression,
+    that will be evaluated for each logging event that is received by
+    the logback plugin. This expression can use a set of common variables
+    such as <code>level</code>, <code>logger</code>, <code>message</code>, 
+    and several others. For a complete list of available variables, please
+    refer to the <a href="manual/filters#EventEvaluator.html">chapter 
+    about filters</a> in the logback manual.
+   </p>
+   
+   <p>
+    The second and third pieces of information that compose a filter are the
+    actions that will be taken depending on the result of the evaluation, for
+    a filter match and a filter mismatch.
+    Three actions are possible: <em>ACCEPT</em>, <em>DENY</em>
+    or <em>NEUTRAL</em>. Setting a filter's reply to <em>ACCEPT</em>
+    or <em>DENY</em> will prevent the plugin from evaluating any
+    other filter and return a definitive result on the logging event.
+   </p>
+   
+   <p>
+    Let us create a filter that will drop any request that has a level
+    lower than <em>INFO</em>. A click on the <em>New</em> button creates
+    a new filter. Enter the following informations in the corresponding
+    fields:
+   </p>
+   
+   <ul>
+    <li>
+     Expression: <code>level >= INFO</code>
+    </li>
+    <li>
+     Action on filter match: <code>NEUTRAL</code>
+    </li>
+    <li>
+     Action on filter mismatch: <code>DENY</code>
+    </li>
+   </ul>
+   
+   <p>
+    Here is what the window should look like, once you've
+    saved the filter.
+   </p>
+ 
+   <img src="images/plugin/createFilter.gif" alt="createFilter.gif" />
+   
+   <p>
+    We've just created a filter that will drop any requests whose
+    level is lower than <em>INFO</em>. Note the use of the <em>NEUTRAL</em>
+    value as the action to be taken when the filter is matched. Since
+    we do not know what other filters might want to do, there is no reason
+    to stop evaluating when the level is higher or equal to <em>INFO</em>.
+   </p>
+   
+   <p>
+    You may have noticed the two buttons on the left side of the filter windows
+    labelled <em>Up</em> and <em>Down</em>. An important concept ruling the filters
+    in logback is that filters are called in a chain. As we've seen above, 
+    a filter returning <em>ACCEPT</em> or <em>DENY</em> will stop the chain
+    and have a direct impact on the logging event. It is sometimes important
+    to manage the order in which filters are called to achieve a specific
+    filtering policy.
+   </p>
+   
+   <p>
+    You should now be ready to experience the logback plugin and use its functionality.
+    If you have any question about its use, feel free to use the logback
+    <a href="mailinglist.html">mailing lists</a>.
+   </p>
+   
+   
+   <script src="templates/footer.js" type="text/javascript"></script>
+</div>
+</body>
+</html>
diff --git a/docs/css/anchor12.png b/docs/css/anchor12.png
deleted file mode 100644
index 2cd97ac..0000000
Binary files a/docs/css/anchor12.png and /dev/null differ
diff --git a/docs/css/anchor16.png b/docs/css/anchor16.png
deleted file mode 100644
index c0676f4..0000000
Binary files a/docs/css/anchor16.png and /dev/null differ
diff --git a/docs/css/anchor20.png b/docs/css/anchor20.png
deleted file mode 100644
index 65c26c1..0000000
Binary files a/docs/css/anchor20.png and /dev/null differ
diff --git a/docs/css/anchor24.png b/docs/css/anchor24.png
deleted file mode 100644
index ad1a8c6..0000000
Binary files a/docs/css/anchor24.png and /dev/null differ
diff --git a/docs/css/common.css b/docs/css/common.css
index 752c812..b129d92 100644
--- a/docs/css/common.css
+++ b/docs/css/common.css
@@ -24,13 +24,6 @@ div.source {
  margin-top: 1em;
 }
 
-div.breaking {
-   border: 1px solid #F44; 
-   background-color: #FED; 
-   padding-left: 1ex; 
-   padding-right: 1ex;
-}
-
 .longline {
   overflow: scroll;
 }
@@ -72,7 +65,7 @@ pre {
 
 
 h1, h2, h3, h4 {
-  color: #505050;
+  color: #333;
   padding-top: 0ex; 
   background-color: transparent;
 }
@@ -153,9 +146,17 @@ table[class="bodyTable properties"] tr {
 	vertical-align: top;
 }
 
-/* table.bodyTable tr.a { 	background-color: #ddd; } */
-/* table.bodyTable tr.b {	background-color: #eee; } */
-/* table.bodyTable tr.alt {	background-color: #eee;} */
+table.bodyTable tr.a {
+	background-color: #ddd;
+}
+
+table.bodyTable tr.b {
+	background-color: #eee;
+}
+
+table.bodyTable tr.alt {
+	background-color: #eee;
+}
 
 /* we don't want the first p under td to appear indented */
 table.bodyTable tr td p:first-child {
@@ -163,6 +164,7 @@ table.bodyTable tr td p:first-child {
   margin-top: 0px;
 }
 
+
 .striped tr:nth-child(odd) td {
   background-color: #f9f9f9;
 }
@@ -173,10 +175,6 @@ table.bodyTable tr td p:first-child {
   border-bottom: 1px solid #ddd;
 }
 
-td.word {
-  text-align: right;
-}
-
 /* EOF =============== bodyTable =============== */
 
 .author {
@@ -214,6 +212,7 @@ td.word {
 	background-color: #EEE;
 }
 
+
 .blue {
 	color: blue;	
 }
diff --git a/docs/css/screen.css b/docs/css/screen.css
index 3b996d5..6eceacc 100644
--- a/docs/css/screen.css
+++ b/docs/css/screen.css
@@ -21,6 +21,7 @@ body {
 	font-size: smaller;
 }
 
+
 #job img {
    border:1px solid #DDDDDD;
 }
@@ -38,7 +39,7 @@ p.menu {
 }
 
 
-#leftOld {
+#left {
   position: absolute;
   font-size: 80%;
   left: 0px;
@@ -53,26 +54,6 @@ p.menu {
   border-radius: 3px;
 }
 
-#left {
-  position: absolute;
-  left: 0px;
-  width: 15em;
-  margin: 4px 0px 0px 4px; 
-  padding: 0px;
-  font-size: 80%;
-  background-color: #ffffff;
-}
-
-.menuGroup {
-  border: 1px solid #cccccc;  
-  background-color: #fff8e8;
-  color: #564b47;
-  border: 1px solid #cccccc;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-
 #left a, #right a {
   display: block; 
   width: 95.5%; 
@@ -101,33 +82,10 @@ p.menu_header {
   border-radius: 3px;
 }
 
-#left div.jobadd {
-  font-size: 140%;
-  color: #fff;
-  margin: 0px;
-  padding: 0px;
-
-  text-align: center;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-
-  background-image: -ms-linear-gradient(bottom right, #FFBB55 0%, #FF8822 100%);
-  background-image: -moz-linear-gradient(bottom right, #FFBB55 0%, #FF8822 100%);
-  background-image: -o-linear-gradient(bottom right, #FFBB55 0%, #FF8822 100%);
-  background-image: -webkit-gradient(linear, right bottom, left top, color-stop(0, #FFBB55), color-stop(1, #FF8822));
-  background-image: -webkit-linear-gradient(bottom right, #FFBB55 0%, #FF8822 100%);
-  background-image: linear-gradient(to top left, #FFBB55 0%, #FF8822 100%);
-}
-
-#left div.jobadd a, div.jobadd a:hover {
-  background-color: transparent;
-  color: #fff;
-  border-width: 0px;	
+#left a:hover.x {
+  background-color: #fff; 
 }
 
-/* ------------------------------------------- */
-
 #right {
   position: absolute;
   right: 0px;        
@@ -192,29 +150,3 @@ span.asGroovy:hover {
    cursor: pointer;
 }
 
-/* ------------------------------------ */
-
-.anchor { display:none; }
-
-h1 .anchor:before {content:url(anchor24.png);}
-h2 .anchor:before {content:url(anchor20.png);}
-h3 .anchor:before {content:url(anchor16.png);}
-h4 .anchor:before {content:url(anchor12.png);}
-td .anchor:before {content:url(anchor12.png);}
-
-h1:hover .anchor { margin-left: -24px; }
-h2:hover .anchor { margin-left: -20px; }
-h3:hover .anchor { margin-left: -16px; }
-h4:hover .anchor { margin-left: -12px; }
-td:hover .anchor { margin-left: -12px; }
-
-h1:hover .anchor, 
-h2:hover .anchor,  
-h3:hover .anchor, 
-h4:hover .anchor,
-td:hover .anchor {
-  display: inline-block;
-  text-decoration: none;
-}
-
-
diff --git a/docs/demo.html b/docs/demo.html
index 8f88992..ff1baee 100644
--- a/docs/demo.html
+++ b/docs/demo.html
@@ -32,15 +32,15 @@
     client and issue the following command on a console:
     </p>
   
-    <p class="source">git clone git://github.com/qos-ch/logback-demo.git logback-demo</p>
+    <p class="source">git clone http://git.qos.ch/logback-demo/ logback-demo</p>
 
     <p>This will retrieve a copy of the logback demonstration
     web-application to a directory called <em>logback-demo</em>. The
     logback demo can be packaged as a <em>war</em> file and deployed
     to an application server. We strongly recommend the use of <a
-    href="http://maven.apache.org/">Maven</a> to accomplish this task,
-    since it takes a single command in order to compile, package and
-    run this demo.
+    href="http://maven.apache.org/">Maven2</a> to accomplish this
+    task, since it takes a single command in order to compile, package
+    and run this demo.
     </p>
 
     <p>	Using Maven, let's package the files and run the demo for the first
@@ -51,7 +51,7 @@
     <div class="source"><pre>mvn package jetty:run</pre></div>
     
     <p>Then, visit <a
-    href="http://localhost:8080/">http://localhost:8080/</a>
+    href="http://localhost:8080/logback-demo/">http://localhost:8080/logback-demo/</a>
     to view the main page of the logback demo.
     </p>
 
@@ -354,18 +354,18 @@
 
 <p>Here is a sample output for this appender.</p>
 
-<div class="source"><pre>127.0.0.1 - - 22/Jan/2007:14:35:40 +0100 GET /logback-demo/ViewStatii.do HTTP/1.1 200 3660
-127.0.0.1 - - 22/Jan/2007:14:35:41 +0100 GET /logback-demo/index.jsp HTTP/1.1 200 2389
-127.0.0.1 - - 22/Jan/2007:14:35:42 +0100 GET /logback-demo/lastLog/ HTTP/1.1 200 948
-127.0.0.1 - - 22/Jan/2007:14:35:42 +0100 GET /logback-demo/index.jsp HTTP/1.1 200 2389
-127.0.0.1 - - 22/Jan/2007:14:35:43 +0100 GET /logback-demo/prime.jsp HTTP/1.1 200 1296
-127.0.0.1 - - 22/Jan/2007:14:35:44 +0100 GET /logback-demo/index.jsp HTTP/1.1 200 2389
-127.0.0.1 - - 22/Jan/2007:14:35:45 +0100 GET /logback-demo/lottery.jsp HTTP/1.1 200 1209
-127.0.0.1 - - 22/Jan/2007:14:35:46 +0100 GET /logback-demo/index.jsp HTTP/1.1 200 2389
-127.0.0.1 - - 22/Jan/2007:14:35:48 +0100 GET /logback-demo/reload.jsp HTTP/1.1 200 1335
-127.0.0.1 - - 22/Jan/2007:14:35:49 +0100 GET /logback-demo/index.jsp HTTP/1.1 200 2389
-127.0.0.1 - - 22/Jan/2007:14:35:54 +0100 GET /logback-demo/login.jsp HTTP/1.1 200 1214
-127.0.0.1 - - 22/Jan/2007:14:35:55 +0100 GET /logback-demo/Logout.do HTTP/1.1 200 1000</pre></div>
+<div class="source"><pre>127.0.0.1 - - 22/01/2007:14:35:40 +0100 GET /logback-demo/ViewStatii.do HTTP/1.1 200 3660
+127.0.0.1 - - 22/01/2007:14:35:41 +0100 GET /logback-demo/index.jsp HTTP/1.1 200 2389
+127.0.0.1 - - 22/01/2007:14:35:42 +0100 GET /logback-demo/lastLog/ HTTP/1.1 200 948
+127.0.0.1 - - 22/01/2007:14:35:42 +0100 GET /logback-demo/index.jsp HTTP/1.1 200 2389
+127.0.0.1 - - 22/01/2007:14:35:43 +0100 GET /logback-demo/prime.jsp HTTP/1.1 200 1296
+127.0.0.1 - - 22/01/2007:14:35:44 +0100 GET /logback-demo/index.jsp HTTP/1.1 200 2389
+127.0.0.1 - - 22/01/2007:14:35:45 +0100 GET /logback-demo/lottery.jsp HTTP/1.1 200 1209
+127.0.0.1 - - 22/01/2007:14:35:46 +0100 GET /logback-demo/index.jsp HTTP/1.1 200 2389
+127.0.0.1 - - 22/01/2007:14:35:48 +0100 GET /logback-demo/reload.jsp HTTP/1.1 200 1335
+127.0.0.1 - - 22/01/2007:14:35:49 +0100 GET /logback-demo/index.jsp HTTP/1.1 200 2389
+127.0.0.1 - - 22/01/2007:14:35:54 +0100 GET /logback-demo/login.jsp HTTP/1.1 200 1214
+127.0.0.1 - - 22/01/2007:14:35:55 +0100 GET /logback-demo/Logout.do HTTP/1.1 200 1000</pre></div>
 
   <h4>Filtering</h4>
 
diff --git a/docs/dependencies.html b/docs/dependencies.html
index 5559c83..908ce03 100644
--- a/docs/dependencies.html
+++ b/docs/dependencies.html
@@ -22,41 +22,37 @@
 	
 		<h1>Dependencies per module</h1>
 
-    <p>As of version 1.0.12, logback requires JDK 1.6 to build,
-    however, it is inteded to run under JDK 1.5 (with the exception of
-    SSL related functionality).</p>
-
     <p>Each logback module has a different set of dependencies. These
     are listed below in a separate table per module.</p>
 
     <h2>logback-core</h2>
 
-    <table class="bodyTable striped">
+    <table class="bodyTable">
       <tr>
         <th>Component</th>
         <th>dependencies</th>       
       </tr>
 
-      <tr>
+      <tr class="a">
         <td>Overall</td>
-        <td><ul><li>JDK 1.5</li></ul></td>       
-      </tr>
-
-      <tr>
-        <td>ch.qos.logback.core.net.ssl.*</td>
-        <td><ul><li>JDK 1.6</li></ul></td>       
+        <td>
+          <ul>
+            <li>JDK 1.5
+            </li>
+          </ul>
+        </td>       
       </tr>
 
-      <tr>
+      <tr class="b">
         <td><code>JaninoEventEvaluatorBase</code> and derived classes</td>
         <td>
           <ul>
-            <li><a href="http://janino.net">Janino</a> version 2.6.1</li>
+            <li><a href="http://janino.net">Janino</a> version 2.4.3</li>
           </ul>
         </td>
       </tr>
 
-      <tr>
+      <tr class="a">
         <td><code>SMTPAppenderBase</code> and derived classes</td>
         <td>
           <ul>         
@@ -76,13 +72,13 @@
     
     <h2>logback-classic</h2>
 
-    <table class="bodyTable striped">
+    <table class="bodyTable">
       <tr>
         <th>Component</th>
         <th>dependencies</th>       
       </tr>
 
-      <tr>
+      <tr class="a">
         <td>Overall</td>
         <td>
           <ul>
@@ -92,7 +88,7 @@
         </td>       
       </tr>
 
-      <tr>
+      <tr class="b">
         <td>Overall</td>
         <td>
           <ul>
@@ -108,13 +104,13 @@
         <td>
           <ul>
             <li><a href="http://www.slf4j.org">slf4j-api</a> version
-            1.7.6
+            1.6.4
             </li>
           </ul>
         </td>       
       </tr>
       
-      <tr>
+      <tr class="b">
         <td>ch.qos.logback.classic.selector.*</td>
         <td>
           <ul>
@@ -124,7 +120,7 @@
         </td>       
       </tr>
 
-      <tr>
+      <tr class="b">
         <td>c.q.l.c.boolex.JaninoEventEvaluator</td>
         <td>
           <ul>
@@ -153,13 +149,13 @@
 
   <h2>logback-access</h2>
 
-    <table class="bodyTable striped">
+    <table class="bodyTable">
       <tr>
         <th>Component</th>
         <th>dependencies</th>       
       </tr>
 
-      <tr>
+      <tr class="a">
         <td>Overall</td>
         <td>
           <ul>
@@ -169,7 +165,7 @@
         </td>       
       </tr>
 
-      <tr>
+      <tr class="b">
         <td>Overall</td>
         <td>
           <ul>
@@ -180,7 +176,7 @@
         </td>       
       </tr>
 
-      <tr>
+      <tr class="a">
         <td>Overall</td>
         <td>
           <ul>
@@ -191,17 +187,17 @@
       </tr>
 
 
-      <tr>
+      <tr class="b">
         <td>ch.qos.logback.access.jetty.*</td>
         <td>
           <ul>
-            <li><a href="http://jetty.mortbay.org">Jetty</a> version 7.5.1.v20110908
+            <li><a href="http://jetty.mortbay.org">Jetty</a> version 7.5.1
             </li>
           </ul>
         </td>       
       </tr>
 
-      <tr>
+      <tr class="a">
         <td>ch.qos.logback.access.tomcat.*</td>
         <td>
           <ul>
diff --git a/docs/documentation.html b/docs/documentation.html
index fbc7857..bb29e3e 100644
--- a/docs/documentation.html
+++ b/docs/documentation.html
@@ -54,7 +54,7 @@
         <a href="demo.html">Walk-through logback-demo web app</a>
       </li>    
       <li>
-        <a href="beagle/index.html">Logback-beagle: eclipse plug-in for viewing logs</a>
+        <a href="consolePlugin.html">User guide of the logback plugin for Eclipse</a>
       </li>    
 		</ul>
 		
@@ -76,30 +76,6 @@
 
     <!-- ordered by val -->
     <ul>
-      <li><a
-      href="https://wiki.base22.com/display/btg/How+to+setup+SLF4J+and+LOGBack+in+a+web+app+-+fast">How
-      to setup SLF4J and logback in a web app - fast</a> by Cody Burleson
-      </li>
-     
-      <li>
-        <a
-        href="http://wiki.eclipse.org/Jetty/Tutorial/Sifting_Logs_with_Logback">Jetty/Tutorial/Sifting
-        Logs with Logback</a> by Shirly Dekker Boulay
-      </li>
-      <li>
-        <a
-        href="http://gordondickens.com/wordpress/2012/07/03/enterprise-spring-best-practices-part-1-project-config/">
-          Enterprise Spring Best Practices - Part 1 - Project Config
-        </a> by Gordon Dickens
-      </li>
-
-      <li>
-        <a
-        href="http://nurkiewicz.blogspot.ch/2013/04/siftingappender-logging-different.html">SiftingAppender:
-        logging different threads to different log files</a> by Tomasz
-        Nurkiewicz
-      </li>
-
       <li>
         <a
         href="http://maciejwalkowiak.pl/blog/2012/04/03/application-errors-notification-with-logback/">Application
@@ -113,15 +89,15 @@
       <li><a
       href="http://www.nullin.com/2010/07/28/logging-tests-to-separate-files/">Logging
       tests to separate files</a> by Nalin Makar</li>
-
-   
+     
       <li><a href="logback.ppt">Logback project</a>, by Ceki
       Gülcü and Sébastien Pennec.
       </li>
 
       <li><a
-      href="http://parleys.com/play/514892260364bc17fc56be83/chapter0/about">Devoxx-2009
-      video presentation</a>, by C. Gülcü </li>
+      href="http://beta.parleys.com/#id=1701&st=5&sl=1"><b>Devoxx-2009
+      video presentation</b></a>, by C. Gülcü
+      </li>
 
       <li><a href="http://www.infoq.com/news/2007/08/logback">Logback:
       Evolving Java Logging</a> by Geoffrey Wiseman
diff --git a/docs/download.html b/docs/download.html
index 3f164a3..b0bb82c 100644
--- a/docs/download.html
+++ b/docs/download.html
@@ -52,31 +52,37 @@
 		</p>
 
 		<ul>
-      <li><a href="dist/logback-1.1.2.zip">logback-1.1.2.zip</a></li>
-      <li><a href="dist/logback-1.1.2.tar.gz">logback-1.1.2.tar.gz</a></li>
+      <li><a href="dist/logback-1.0.4.zip">logback-1.0.4.zip</a></li>
+      <li><a href="dist/logback-1.0.4.tar.gz">logback-1.0.4.tar.gz</a></li>
 		</ul>
 		
 		
     <p>If you wish to download an older version of logback, please
     refer to the <a href="http://logback.qos.ch/dist/">distributions
     directory</a>.</p>
+
    
-   
-    <h3>logback-beagle: an Eclipse plug-in for viewing logs</h3>
-   
-    <p><a href="beagle/index.html"><img style="float:left;
-    margin-right: 1em;" src="beagle/images/sailing-ship-32x32.png"
-    alt=""/></a>We also offer a console plugin for Eclipse called
-    logback-beagle. It allows you to receive logging events in a
-    convenient Eclipse view, and offers various convenient features. A
-    more precise description for this plug-in along with installation
-    instructions can be found in <a
-    href="beagle/index.html">logback-beagle user guide</a>.</p>
+    <p>A console plugin for Eclipse is also available. It allows you
+    to receive logging events in a convenient Eclipse view, and offers
+    integration with logback's filtering framework, among other
+    features. A more precise description can be found in the plugin's
+    <a href="consolePlugin.html">user guide</a>. <b>Unfortunately, the
+    console plugin is very much outdated. It expects logback version
+    0.9.9.  It will be upgraded during the second semester of
+    2011.</b></p>
 
+    
+    <ul>
+      <li>
+        <a href="dist/ch.qos.logback.eclipse_1.1.0.zip">logback
+        Console Plugin for Eclipse</a>
+      </li> 
+    </ul>
+    
+	
     <hr/>
 
-    <h2>Third-party tools, extensions or forks (in chronological
-    order)</h2>
+    <h2>Third-party tools, extensions or forks (in chronological order)</h2>
 
     <p>If you are the author of a logback-related project and would
     like us to add your project to the list below please drop a line
@@ -84,7 +90,17 @@
 
 
     <dl>
-     
+      <dt>
+        <a
+        href="http://wizardforge.org/pc?action=displayFlowchartVersionPublic&id=42">Configuration
+        wizard</a> by Dirk Ooms
+      </dt>
+
+      <dd>
+        <p>A nifty web-application to help you configure logback
+      classic.</p>
+      </dd>
+      
       <!-- ============================================================ -->
       <dt>
         <a href="http://lilith.huxhorn.de">Lilith</a> by Joern Huxhorn
diff --git a/docs/faq.html b/docs/faq.html
index 82acc59..d88f5d8 100644
--- a/docs/faq.html
+++ b/docs/faq.html
@@ -302,7 +302,7 @@
         <dt>
           <a name="setup_jetty"  href="#">
             How can Jetty be instructed to use logback-classic as its
-            logging implementation?
+            logging implementataion?
           </a>
         </dt>
         
@@ -313,8 +313,8 @@
           
           <p>Logback jar files must be present on Jetty's class
           path. These files are
-          <em>logback-core-1.1.2.jar</em> and
-          <em>logback-classic-1.1.2.jar</em>. These files
+          <em>logback-core-1.0.4.jar</em> and
+          <em>logback-classic-1.0.4.jar</em>. These files
           should be placed under the <em>$JETTY_HOME/lib</em>
           directory.
           </p>
@@ -322,7 +322,7 @@
           
           <p>Since Jetty uses an older version of SLF4J internally,
           we recommend that the old version be replaced by
-          <em>slf4j-api-1.7.6.jar</em>. This file can be
+          <em>slf4j-api-1.6.4.jar</em>. This file can be
           downloaded from the <a
           href="http://www.slf4j.org/download.html">SLF4J</a> project.
           </p>
diff --git a/docs/images/logos/lblogo-150.jpg b/docs/images/logos/lblogo-150.jpg
deleted file mode 100644
index 38a2606..0000000
Binary files a/docs/images/logos/lblogo-150.jpg and /dev/null differ
diff --git a/docs/images/logos/lblogo-200.jpg b/docs/images/logos/lblogo-200.jpg
deleted file mode 100644
index d0edaf8..0000000
Binary files a/docs/images/logos/lblogo-200.jpg and /dev/null differ
diff --git a/docs/images/logos/lblogo-40.jpg b/docs/images/logos/lblogo-40.jpg
deleted file mode 100644
index 668c08c..0000000
Binary files a/docs/images/logos/lblogo-40.jpg and /dev/null differ
diff --git a/docs/index.html b/docs/index.html
index 5655b81..1fd016f 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -26,9 +26,9 @@
     leaves off</a>.
 		</p>
 
-    <p>Logback's architecture is sufficiently generic so as to apply
-    under different circumstances. At present time, logback is divided
-    into three modules, logback-core, logback-classic and
+    <p>Logback's basic architecture is sufficiently generic so as to
+    apply under different circumstances. At present time, logback is
+    divided into three modules, logback-core, logback-classic and
     logback-access.
 		</p>
 
@@ -65,68 +65,47 @@
       <tr>
         <td valign="top">
           <ul> 
-            <li><a href="http://akka.io/">Akka</a></li>
-            <li><a href="http://incubator.apache.org/airavata/">Apache Airvata</a></li>
-            <li><a href="http://camel.apache.org/">Apache Camel</a></li>
-            <li><a href="http://cocoon.apache.org/3.0/">Apache Cocoon 3</a></li>
+            <li><a href="http://doc.akka.io/logging">Akka</a></li>
             <li><a href="http://jackrabbit.apache.org/">Apache Jackrabbit</a></li>
-            <li><a href="http://openmeetings.apache.org/">Apache OpenMeetings</a></li>
-          </ul>  
-        </td>
-        <td valign="top"> 
-          <ul>
-            <li><a href="http://incubator.apache.org/s4/">Apache S4</a></li>
-            <li><a href="http://syncope.apache.org/">Apache Syncope</a></li>
-            <li><a href="http://myfaces.apache.org/tobago/">Apache Tobago</a></li>
             <li><a href="http://www.jfrog.org/products.php">Artifactory</a></li>
             <li><a href="http://cia.sourceforge.net/">Citizen Intelligence Agency</a></li>
             <li><a href="http://www.dcache.org/">dCache</a></li>
-          </ul>
-        </td>
-        <td valign="top">
-          <ul>            
             <li><a href="http://dropwizard.codahale.com/">Dropwizard</a></li>
             <li><a href="http://www.geomajas.org/">Geomajas</a></li>            
             <li><a href="http://www.gradle.org/">Gradle</a></li>   
             <li><a href="http://grinder.sourceforge.net/">Grinder</a></li>   
-            <li><a href="http://www.eclipse.org/gyrex/">Gyrex</a></li>   
             <li><a href="http://wiki.yoshtec.com/jaob">JAOP</a></li>                 
           </ul>
         </td>
-      </tr>
-      <tr>
         <td valign="top">
-          <ul>
+          <ul>            
             <li><a href="http://jmxmonitor.sourceforge.net/">JMX Monitor</a></li>                 
             <li><a href="http://jwebunit.sourceforge.net/quickstart.html">JWebUnit</a></li>
             <li><a href="http://liftweb.net/">Lift</a></li>
             <li><a href="http://metrics.codahale.com/">Metrics</a></li>
             <li><a href="http://www.opengda.org/">OpenGDA</a></li>   
+            <li><a href="http://code.google.com/p/openmeetings/">OpenMeetings</a></li>
             <li><a href="http://www.openrdf.org/doc/sesame2/2.3.2/users/ch06.html">OpenRDF</a></li>
             <li><a href="http://opentsdb.net/overview.html">OpenTSDB</a></li>
+            <li><a href="http://www.playframework.org/">Play Framework</a></li>
+            <li><a href="http://www.red5.org">Red5</a></li>
           </ul>
         </td>
+
         <td valign="top">
           <ul>
-            <li><a href="http://www.playframework.org/">Play Framework</a></li>
-            <li><a href="http://www.red5.org">Red5</a></li>
             <li><a href="http://scalate.fusesource.org/">Scalate</a></li>
             <li><a href="http://www.scalatra.org/2.0/book/">Scalatra</a></li>
-            <li><a href="http://shibboleth.net/">Shibboleth</a></li>
+            <li><a href="http://shibboleth.internet2.edu/">Shibboleth</a></li>
             <li><a href="http://sonar.codehaus.org/">Sonar</a></li>
-          </ul>
-        </td>
-        <td valign="top">
-          <ul>
             <li><a
             href="http://static.springsource.org/s2-dmserver/2.0.x/user-guide/htmlsingle/user-guide.html">SpringSource
             dm Server</a></li>  
             <li><a href="http://www.streambase.com/developers/docs/latest/index.html">StreamBase</a></li>
             <li><a href="http://www.eclipse.org/virgo/">Virgo Web Server</a></li>
-            <li><a href="http://xtrememp.sourceforge.net/">XtremeMP</a></li>            
+            <li><a href="http://xtrememp.sourceforge.net/">XtremeMP</a></li>
             <li><a href="http://www.xuggle.com/xuggler/">Xuggler</a></li>
             <li><a href="http://www.xwiki.org/">Xwiki</a></li>
-            <li><a href="http://www.zabbix.com/">Zabbix</a></li>
           </ul>
         </td>
 
diff --git a/docs/job.html b/docs/job.html
index 0046aac..e5f90dd 100644
--- a/docs/job.html
+++ b/docs/job.html
@@ -4,7 +4,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
     <meta http-equiv="content-type" content="text/html; charset=utf-8" />
-    <title>Careers at QOS.ch</title>
+    <title>Logback Home</title>
     <link rel="stylesheet" type="text/css" href="css/common.css" />
     <link rel="stylesheet" type="text/css" href="css/screen.css" media="screen" />
     <link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
@@ -34,44 +34,57 @@
     <div id="content">
 		
 
-		<h2>Software developer</h2>
+		<h2>Ingénieur Informatique</h2>
 
-    <p>QOS.ch or Quality Open Software is a software development
-    company based in Lausanne, Switzerland.</p>
+    <p>QoS.ch, ou Quality Open Software, est une société de conception
+    et de développement informatique basée à Lausanne - Suisse.</p>
     
-    <p>We have extensive experience building mission-critical
-    enterprise software in the Java language. We are also founding
-    contributors of several open source projects, namely log4j, slf4j,
-    mistletoe, cal10n and logback.
+    <p>Nous avons une grande expérience dans la réalisation de
+    logiciels d'entreprise en langage Java. Nous sommes également
+    fondateurs ou contributeurs actifs dans plusieurs projets open
+    source, notamment cal10n, logback, log4j, mistletoe et SLF4J.
     </p>
 
-    <p>We are looking for software engineers with superb software
-    development skills.
+    
+    <p>Afin de compléter notre équipe de développeurs pour la
+    réalisation de divers projets, autant open source que pour
+    répondre aux demandes de nos clients, nous recherchons un
+    ingénieur informatique ayant une excellente capacité de
+    développement logiciel. Dans un premier temps vous serez emmené à
+    travailler sur les projets slf4j et logback.
     </p>
 
-    <h3>Required qualifications</h3>
+    <h3>Votre profil:</h3>
 
     <ul>
-      <li>University graduate</li> 
-      
-      <li>Strong analytical skills</li> 
-      
-      <li>Good experience in object-oriented programming, preferably
-      Java</li>
-
+      <li>Formation universitaire ou jugée équivalente</li>
+      <li>Grande capacité d'analyse et d'apprentissage</li>
+      <li>Capacité de rédaction en anglais </li> 
+      <li>Autonome et enthousiaste dans le développement</li>
+      <li>Intérêt marqué pour le développement collaboratif</li>
     </ul>
     
-    <p>We offer excellent working conditions with many opportunities
-    to improve your software development skills.
-    </p>
 
-    <script type="text/javascript">
-AAT = '@';
-DOOTT = '.';
-document.write('<p>Please send your application by email to <b>hr'+ AAT +'qos'+ DOOTT+'ch</b>. If applicable, ');
-document.write('do not forget to include a list of software projects to which you have contributed.</p>') 
-    </script>
+    <h3>Connaissances souhaitables:</h3>
+
+    <ul>
+      <li>Bonne expérience de programmation orienté objet, de préférence Java</li>
+      <li>Connaissances de développement Web avec des outils tels que
+      Struts, Wicket ou Tapestry</li>
+      <li>Affinité pour les méthodologies agiles, en particulier le TDD</li>
+    </ul>
+
+
+    <p>Vous correspondez à ces critères et êtes désireux de mettre à
+    profit vos aptitudes, nous vous proposons un environnement
+    dynamique et évolutif avec des conditions avantageuses.</p>
+
+    <p>Merci de nous adresser votre dossier de candidature par email à
+    l'adresse hr at qos.ch. Si possible joignez une liste des projets
+    auxquels vous avez participé.
+    </p>
 
+    <script src="templates/footer.js" type="text/javascript"></script>	
     </div>
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/js/decorator.js b/docs/js/decorator.js
deleted file mode 100644
index f86375a..0000000
--- a/docs/js/decorator.js
+++ /dev/null
@@ -1,100 +0,0 @@
-
-
-//   <h3><a name="LoggerContext" href="#LoggerContext"><span
-//    class="anchor"/></a>Logger context</h3>
-
-function decorate() {
-  var anchor = findAnchorInURL(document.URL);
-  decoratePropertiesInTables(anchor);
-  decorateDoAnchor(anchor);
-  decorateConversionWordInTables(anchor);
-}
-
-// ----------------------------------------------
-function findAnchorInURL(url) {
-
- if(url == null) return null
-  var index = url.lastIndexOf("#");
-  if(index != -1 && (index+1) < url.length) 
-    return url.substr(index+1);
-  else 
-    return null;
-}
-
-// ----------------------------------------------
-function decoratePropertiesInTables(anchor) {
-
- //if(1==1) return;
- var elems = $('tr td:first-child span.prop');
-
- for(var i = 0; i < elems.length; i++) {
-   var e = elems[i];
-   var p = e.parentNode;
-   if(p == null) continue;
-
-   var tmpHTML = p.innerHTML;
-   var propName = e.innerHTML;
-   var nameAttr = $(e).attr('name')
-    
-   if(nameAttr == null) {
-     var containerAttr = $(e).attr('container')
-     if(containerAttr != null) 
-       nameAttr = containerAttr+capitaliseFirstLetter(propName);
-     else 
-       nameAttr = propName;
-   }
-   
-   p.innerHTML = "<a name='" + nameAttr + "' href='#" + nameAttr +
-                "'><span class='anchor'/></a><b>" +tmpHTML +"</b>";
-   scrollIfMatch(p, nameAttr, anchor);
- } // for 
-}
-
-function decorateConversionWordInTables(anchor) {
- var elems = $('tr td.word');
- for(var i = 0; i < elems.length; i++) {
-   var e = elems[i];
-   var tmpHTML = e.innerHTML;
-   var nameAttr = $(e).attr('name')
-   if(nameAttr == null) 
-     continue;
-   e.innerHTML = "<a name='" + nameAttr + "' href='#" + nameAttr +
-                "'><span class='anchor'/></a>" +tmpHTML;
-   scrollIfMatch(e, nameAttr, anchor);
- }
-}
-
-
-function decorateDoAnchor(anchor) {
-   var elems = $('.doAnchor');
-   for(var i = 0; i < elems.length; i++) {
-     var e = elems[i];
-     var tmpHTML = e.innerHTML;
-     var nameAttr = $(e).attr('name')
-     if(nameAttr == null) {
-       nameAttr = camelCase($.trim(tmpHTML))
-     }
-     e.innerHTML = "<a name='" + nameAttr + "' href='#" + nameAttr +
-                "'><span class='anchor'/></a>" +tmpHTML;
-     scrollIfMatch(e, nameAttr, anchor);
-   }
-} 
-
-function scrollIfMatch(element, nameAttr, anchor) {
-  if(anchor != null && nameAttr.toString() == anchor)
-     element.scrollIntoView(true);
-
-
-}
-
-function capitaliseFirstLetter(str) {
-  return str.charAt(0).toUpperCase() + str.slice(1);
-}
-
-
-function camelCase(str) {  
-  return $.trim(str).replace(/\s\w/g, function(match) {
-    return $.trim(match).toUpperCase();
-  });
-}
-
diff --git a/docs/mailinglist.html b/docs/mailinglist.html
index cb55a46..5f73ef0 100644
--- a/docs/mailinglist.html
+++ b/docs/mailinglist.html
@@ -102,11 +102,14 @@
 						qos.ch
 					</a> |
 					<a
-						href="http://logback.10977.n7.nabble.com/Users-f3.html">
-						Nabble
+						href="http://marc.theaimsgroup.com/?l=logback-user">
+						MARC
 					</a> |
-          <a href="http://markmail.org/search/?q=list%3Ach.qos.logback-user">
-            MarkLogic</a>
+
+					<a
+						href="http://www.nabble.com/Logback-User-f16252.html">
+						Nabble
+					</a>
 				</td>
 			</tr>
 			<tr class="b">
@@ -130,40 +133,15 @@
 						qos.ch
 					</a> |
 					<a
-						href="http://logback.10977.n7.nabble.com/Developer-f3683.html">
-						Nabble
-					</a> |          
+						href="http://marc.theaimsgroup.com/?l=logback-dev">
+						MARC
+					</a> |
 					<a
-						href="http://markmail.org/search/?q=list%3Ach.qos.logback-dev">
-						MarkLogic
+						href="http://www.nabble.com/Logback-Dev-f16253.html">
+						Nabble
 					</a>
-
 				</td>
 			</tr>
-
-      <tr>
-        <td>Logback Notifications List</td>
-        <td>High</td>
-				<td>
-					<a
-						href="http://qos.ch/mailman/listinfo/logback-notification">
-						Subscribe
-					</a>
-				</td>
-        <td>
-          <a
-						href="http://qos.ch/mailman/options/logback-notification">
-						Unsubscribe
-					</a> 
-				</td>
-        <td>
-          <a
-						href="http://www.qos.ch/pipermail/logback-notification/">
-						qos.ch
-					</a>
-        </td>
-      </tr>
-
 		</table>
 
    <p> </p>
diff --git a/docs/manual/.htaccess b/docs/manual/.htaccess
index dcd1ee3..9e2395e 100644
--- a/docs/manual/.htaccess
+++ b/docs/manual/.htaccess
@@ -1,2 +1,2 @@
-Redirect permanent /contextSelector.html http://logback.qos.ch/manual/loggingSeparation.html
-Redirect permanent /joran.html http://logback.qos.ch/manual/configuration.html
+Redirect contextSelector.html http://logback.qos.ch/manual/loggingSeparation.html
+Redirect joran.html http://logback.qos.ch/manual/configuration.html
\ No newline at end of file
diff --git a/docs/manual/appenders.html b/docs/manual/appenders.html
index ff04d78..2150111 100644
--- a/docs/manual/appenders.html
+++ b/docs/manual/appenders.html
@@ -9,13 +9,11 @@
     <link rel="stylesheet" type="text/css" href="../css/_print.css" media="print" />
     <link rel="stylesheet" type="text/css" href="../css/prettify.css" media="screen"/>    
   </head>
-  <body onload="prettyPrint(); decorate();">
+  <body onload="prettyPrint()">
     <script type="text/javascript">prefix='../';</script>
     <script type="text/javascript" src="../js/prettify.js"></script>
-    <script type="text/javascript" src="../templates/header.js"></script>
+    <script src="../templates/header.js" type="text/javascript"></script>
     <script type="text/javascript" src="../js/dsl.js"></script>
-    <script type="text/javascript" src="../js/jquery-min.js"></script>
-    <script type="text/javascript" src="../js/decorator.js"></script>
     <div id="left">      
       <noscript>Please turn on Javascript to view this menu</noscript>
       <script src="../templates/left.js" type="text/javascript"></script>
@@ -42,7 +40,8 @@
     <script src="../templates/creative.js" type="text/javascript"></script>
     <script src="../templates/setup.js" type="text/javascript"></script>
     
-    <h2 class="doAnchor" name="whatIsAnAppender">What is an Appender?</h2>
+    <h2><a name="whatIsAnAppender" href="#whatIsAnAppender">What is an
+    Appender?</a></h2>
     
 		<p>Logback delegates the task of writing a logging event to
 		components called appenders.  Appenders must implement the <a
@@ -98,7 +97,7 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
 	</p>
 	
 	
-	<h2 class="doAnchor" name="AppenderBase">AppenderBase</h2>
+	<h2><a name="AppenderBase" href="#AppenderBase">AppenderBase</a></h2>
 	
 	<p>The <a href="../xref/ch/qos/logback/core/AppenderBase.html">
 	<code>ch.qos.logback.core.AppenderBase</code></a> class is an
@@ -234,8 +233,8 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
 
 
 	
-	<h2 class="doAnchor"
-	name="OutputStreamAppender">OutputStreamAppender
+	<h2>
+    <a name="OutputStreamAppender" href="#OutputStreamAppender">OutputStreamAppender</a>
   </h2>
 	
 	<p><a
@@ -253,18 +252,17 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
 	</p>
 	
   <table class="bodyTable striped">
-    <tr>
+    <tr class="a">
       <th>Property Name</th>
       <th>Type</th>
       <th>Description</th>
     </tr>
     
-    <tr>
-      <td><span class="prop" name="osaEncoder">encoder</span></td>
-
+    <tr class="a">
+      <td><b><span class="prop">encoder</span></b></td>
       <td><a
       href="../xref/ch/qos/logback/core/encoder/Encoder.html"><code>Encoder</code></a></td>
-
+      
       <td>Determines the manner in which an event is written to the
       underlying <code>OutputStreamAppender</code>. Encoders are
       described in a <a href="encoders.html">dedicated chapter</a>.
@@ -283,7 +281,10 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
 	<img src="images/chapters/appenders/appenderClassDiagram.jpg" alt="A UML diagram showing OutputStreamAppender and sub-classes"/>
 	
 
-	<h2 class="doAnchor" name="ConsoleAppender">ConsoleAppender</h2>
+	<h2>	
+    <a name="ConsoleAppender"
+    href="#ConsoleAppender">ConsoleAppender</a>
+  </h2>
 	
   <p>The <a href="../xref/ch/qos/logback/core/ConsoleAppender.html">
   <code>ConsoleAppender</code></a>, as the name indicates, appends on
@@ -298,47 +299,26 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
 	</p>
 	
 	<table class="bodyTable striped">
-			<tr>
+			<tr class="a">
 			<th>Property Name</th>
 			<th>Type</th>
 			<th>Description</th>
 		</tr>
 		<tr>
-			<td><span class="prop" container="conApp">encoder</span></td>
+			<td><b><span class="prop">encoder</span></b></td>
       <td>
         <a href="../xref/ch/qos/logback/core/encoder/Encoder.html"><code>Encoder</code></a>
       </td>
 			<td>See <code>OutputStreamAppender</code> properties.</td>
 		</tr>
-		<tr>
-			<td><span class="prop" container="conApp">target</span></td>
+		<tr class="a">
+			<td><b><span class="prop">target</span></b></td>
 			<td><code>String</code></td>
 			<td>
 				One of the String values <em>System.out</em> or 
 				<em>System.err</em>. The default target is <em>System.out</em>.
 			</td>
 		</tr>
-
-		<tr>
-			<td><span class="prop" container="conApp">withJansi</span></td>
-			<td><code>boolean</code></td>
-			<td>By the default <span class="prop">withJansi</span> property
-			is set to <code>false</code>.  Setting <span
-			class="prop">withJansi</span> to <code>true</code> activates the
-			<a href="http://jansi.fusesource.org/">Jansi</a> library which
-			provides support for ANSI color codes on Windows machines.  On a
-			Windows host, if this property is set to true, then you should
-			put "org.fusesource.jansi:jansi:1.9" on the class
-			path. Note that Unix-based operating systems such as Linux and
-			Mac OS X support ANSI color codes by default.
-
-      <p>Under the Eclipse IDE, you might want to try the <a
-      href="http://www.mihai-nita.net/eclipse/">ANSI in Eclipse
-      Console</a> plugin.
-      </p>
-			</td>
-		</tr>
-
 	</table>
 	
 	<p>Here is a sample configuration that uses
@@ -377,7 +357,9 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
    href="../xref/chapters/appenders/ConfigurationTester.html">chapters.appenders.ConfigurationTester</a> src/main/java/chapters/appenders/conf/logback-Console.xml</p>
 	
 	
-   <h2 class="doAnchor" name="FileAppender">FileAppender</h2>
+   <h2>
+     <a name="FileAppender" href="#FileAppender">FileAppender</a>
+   </h2>
 	
    <p>The <a
    href="../xref/ch/qos/logback/core/FileAppender.html"><code>FileAppender</code></a>,
@@ -395,7 +377,7 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
        <th>Description</th>
      </tr>
      <tr>
-       <td><span class="prop" container="fileApppender">append</span></td>
+       <td><b><span class="prop">append</span></b></td>
        <td><code>boolean</code></td>
        <td>If true, events are appended at the end of an existing
        file.  Otherwise, if <span class="prop">append</span> is false,
@@ -404,7 +386,7 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
        </td>
      </tr>
      <tr >
-       <td><span class="prop" container="fileApppender">encoder</span></td>
+       <td><b><span class="prop">encoder</span></b></td>
        <td>
          <a href="../xref/ch/qos/logback/core/encoder/Encoder.html"><code>Encoder</code></a>
        </td>
@@ -413,8 +395,7 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
     
    
      <tr>
-       <td><span class="prop"
-       container="fileApppender">file</span></td>
+       <td><b><span class="prop">file</span></b></td>
        <td><code>String</code></td>
        <td>The name of the file to write to. If the file does not
        exist, it is created. On the MS Windows platform users
@@ -435,7 +416,8 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
    
 
      <tr>
-       <td><span class="prop" name="prudent">prudent</span></td>
+       <td><b><span class="option bold"><a name="prudent"
+       href="#prudent">prudent</a></span></b></td>
        <td><code>boolean</code></td>
 
        <td>In prudent mode, <code>FileAppender</code> will safely
@@ -453,7 +435,7 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
          true.
          </p>
 
-         <p>Prudent more relies on exclusive file locks. Experiments
+         <p>Produdent more relies on exclusive file locks. Experiments
          show that file locks approximately triple (x3) the cost of
          writing a logging event. On an "average" PC writing to a file
          located on a <b>local</b> hard disk, when prudent mode is
@@ -503,7 +485,7 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
    <p><span class="label notice">Immediate Flush</span> By default,
    each log event is immediately flushed to the underlying output
    stream. This default approach is safer in the sense that logging
-   events are not lost in case your application exits without properly
+   events are not lost in case your applicaiton exits without properly
    closing appenders. However, for significantly increased logging
    throughput, you may want to set the <span
    class="prop">immediateFlush</span> property of the underlying
@@ -546,8 +528,10 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
    src/main/java/chapters/appenders/conf/logback-fileAppender.xml</p>
 	
 	
-   <h3 class="doAnchor" name="uniquelyNamed">Uniquely named files (by
-   timestamp)</h3>
+   <h3>
+     <a name="uniquelyNamed" href="#uniquelyNamed">Uniquely named
+     files (by timestamp)</a>
+   </h3>
    
    <p>During the application development phase or in the case of
    short-lived applications, e.g. batch applications, it is desirable
@@ -624,7 +608,8 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
   ...
 </configuration></pre>
 
-   <h2 class="doAnchor" name="RollingFileAppender">RollingFileAppender
+   <h2>
+     <a name="RollingFileAppender" href="#RollingFileAppender">RollingFileAppender</a>
    </h2>
    
    <p><a
@@ -665,24 +650,24 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
        <th>Description</th>
      </tr>
      <tr>
-       <td><span class="prop" container="rfa">file</span></td>
+       <td><b><span class="prop">file</span></b></td>
        <td><code>String</code></td>
        <td>See <code>FileAppender</code> properties.</td>
      </tr>	
      <tr>
-       <td><span class="prop" container="rfa">append</span></td>
+       <td><b><span class="prop">append</span></b></td>
        <td><code>boolean</code></td>
        <td>See <code>FileAppender</code> properties.</td>
      </tr>	
      <tr>
-       <td><span class="prop" container="rfa">encoder</span></td>
+       <td><b><span class="prop">encoder</span></b></td>
        <td>
          <a href="../xref/ch/qos/logback/core/encoder/Encoder.html"><code>Encoder</code></a>
        </td>
        <td>See <code>OutputStreamAppender</code> properties.</td>
      </tr>
      <tr>
-       <td><span class="prop" container="rfa">rollingPolicy</span></td>
+       <td><b><span class="prop">rollingPolicy</span></b></td>
        <td><code>RollingPolicy</code></td>
        <td>This option is the component that will dictate
        <code>RollingFileAppender</code>'s behavior when rollover
@@ -690,7 +675,7 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
        </td>
      </tr>	
      <tr>
-       <td><span class="prop" container="rfa">triggeringPolicy</span></td>
+       <td><b><span class="prop">triggeringPolicy</span></b></td>
        <td><code>TriggeringPolicy</code></td>
        <td>
          This option is the component that will tell 
@@ -699,7 +684,8 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
        </td>
      </tr>	
      <tr>
-       <td valign="top"><span class="prop" name="prudentWithRolling">prudent</span></td>
+       <td valign="top"><span class="prop"><a name="prudentWithRolling"
+       href="#prudentWithRolling"><b>prudent</b></a></span></td>
 
        <td valign="top"><code>boolean</code></td>
 
@@ -732,8 +718,8 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
      </tr>
    </table>
 	
-   <h3 class="doAnchor" name="onRollingPolicies">Overview of rolling
-   policies</h3>
+   <h3><a name="onRollingPolicies" href="#onRollingPolicies">Overview
+   of rolling policies</a></h3>
 	
    <p><a
    href="../xref/ch/qos/logback/core/rolling/RollingPolicy.html"><code>RollingPolicy</code></a>
@@ -769,8 +755,8 @@ public interface RollingPolicy extends LifeCycle {
         ================= -->
 
 	
-   <h4 class="doAnchor"
-   name="TimeBasedRollingPolicy">TimeBasedRollingPolicy
+   <h4>
+     <a name="TimeBasedRollingPolicy" href="#TimeBasedRollingPolicy">TimeBasedRollingPolicy</a>
    </h4>
 
    <p><a
@@ -797,7 +783,7 @@ public interface RollingPolicy extends LifeCycle {
        <th>Description</th>
      </tr>
      <tr>
-       <td><span class="prop" container="tbrp">fileNamePattern</span></td>
+       <td><b><span class="prop">fileNamePattern</span></b></td>
        <td><code>String</code></td>
        <td>
          The mandatory <span class="prop">fileNamePattern</span>
@@ -845,7 +831,7 @@ public interface RollingPolicy extends LifeCycle {
        </td>
      </tr>
      <tr>
-       <td><span class="prop" container="tbrp">maxHistory</span></td>
+       <td><span class="prop"><b>maxHistory</b></span></td>
        <td>int</td>
        <td>The optional <span class="prop">maxHistory</span>
        property controls the maximum number of archive files to keep,
@@ -859,7 +845,7 @@ public interface RollingPolicy extends LifeCycle {
      </tr>
 
      <tr >
-       <td><span class="prop" container="tbrp">cleanHistoryOnStart</span></td>
+       <td><span class="prop"><b>cleanHistoryOnStart</b></span></td>
        <td>boolean</td>
        <td>
          <p>If set to true, archive removal will be executed on
@@ -985,7 +971,7 @@ public interface RollingPolicy extends LifeCycle {
        <td class="small">
          <em>/foo/%d{yyyy-MM,<b>aux</b>}/%d.log</em>
        </td>
-       <td>Rollover daily. Archives located under a folder containing
+       <td>Rollover daily. Archives located under a folder contaning
        year and month.
        </td>
        <td>In this example, the first %d token is marked as
@@ -1162,7 +1148,10 @@ public interface RollingPolicy extends LifeCycle {
 </configuration></pre>
 
 
-   <h4 class="doAnchor" name="FixedWindowRollingPolicy">FixedWindowRollingPolicy</h4>
+   <h4>	
+     <a name="FixedWindowRollingPolicy" 
+     href="#FixedWindowRollingPolicy">FixedWindowRollingPolicy</a>
+   </h4>
 
    <p>When rolling over, <a
    href="../xref/ch/qos/logback/core/rolling/FixedWindowRollingPolicy.html">
@@ -1181,13 +1170,13 @@ public interface RollingPolicy extends LifeCycle {
    </p>
 	
    <table class="bodyTable striped">
-     <tr>
+     <tr class="a">
        <th>Property Name</th>
        <th>Type</th>
        <th>Description</th>
      </tr>
      <tr>
-       <td><span class="prop" container="fwrp">minIndex</span></td>
+       <td><b><span class="prop">minIndex</span></b></td>
        <td><code>int</code></td>
        <td>
          <p>This option represents the lower bound for the window's
@@ -1196,7 +1185,7 @@ public interface RollingPolicy extends LifeCycle {
        </td>
      </tr>
      <tr>
-       <td><span class="prop" container="fwrp">maxIndex</span></td>
+       <td><b><span class="prop">maxIndex</span></b></td>
        <td><code>int</code></td>
        <td>
          <p>This option represents the upper bound for the window's
@@ -1205,7 +1194,7 @@ public interface RollingPolicy extends LifeCycle {
        </td>
      </tr>
      <tr>
-       <td><span class="prop" container="fwrp">fileNamePattern</span></td>
+       <td><b><span class="prop">fileNamePattern</span></b></td>
        <td><code>String</code></td>
        <td>
          <p>This option represents the pattern that will be followed
@@ -1234,15 +1223,16 @@ public interface RollingPolicy extends LifeCycle {
    renaming operations as the window size, large window sizes are
    strongly discouraged. When large values are specified by the user,
    the current implementation will automatically reduce the window
-   size to 20.
+   size to 12.
    </p>
 
    <p>Let us go over a more concrete example of the fixed window
-   rollover policy. Suppose that <span class="prop">minIndex</span> is
-   set to <em>1</em>, <span class="prop">maxIndex</span> set to
-   <em>3</em>, <span class="prop">fileNamePattern</span> property set
-   to <em>foo%i.log</em>, and that <span class="prop">file</span>
-   property is set to <em>foo.log</em>.
+   rollover policy. Suppose that <span class="prop">minIndex</span>
+   is set to <em>1</em>, <span class="prop">maxIndex</span> set to
+   <em>3</em>, <span class="prop">fileNamePattern</span> property
+   set to <em>foo%i.log</em>, and that <span
+   class="prop">fileNamePattern</span> property is set to
+   <em>foo.log</em>.
    </p>
 	
    <table class="bodyTable striped">
@@ -1339,8 +1329,9 @@ public interface RollingPolicy extends LifeCycle {
 </configuration></pre>
 
 
-    <h3 class="doAnchor" name="SizeAndTimeBasedFNATP">Size <b>and</b>
-    time based archiving
+    <h3>
+      <a name="SizeAndTimeBasedFNATP"
+      href="#SizeAndTimeBasedFNATP">Size <b>and</b> time based archiving</a>
     </h3>
 
     <p>Sometimes you may wish to archive files essentially by date but
@@ -1504,8 +1495,8 @@ public interface TriggeringPolicy<E> extends LifeCycle {
 
     </p>
 
-		<h3 class="doAnchor" name="SocketAppender">SocketAppender and
-		SSLSocketAppender
+		<h3> 
+      <a name="SocketAppender" href="#SocketAppender">SocketAppender</a>
     </h3>
 		
 		<p>The appenders covered thus far are only able to log to local
@@ -1513,14 +1504,7 @@ public interface TriggeringPolicy<E> extends LifeCycle {
 		href="../xref/ch/qos/logback/classic/net/SocketAppender.html">
 		<code>SocketAppender</code></a> is designed to log to a remote
 		entity by transmitting serialized <code>ILoggingEvent</code>
-		instances over the wire.  When using <code>SocketAppender</code>
-		logging events on the wire are sent in the clear.  However, when
-		using  <a href="../xref/ch/qos/logback/classic/net/SSLSocketAppender.html">
-		<code>SSLSocketAppender</code></a>, logging events are delivered over
-		a secure channel.</p>
-
-    <p>
-		The actual type of the serialized event
+		instances over the wire.  The actual type of the serialized event
 		is <a
 		href="../xref/ch/qos/logback/classic/spi/LoggingEventVO.html"><code>LoggingEventVO</code></a>
 		which implements the <code>ILoggingEvent</code>
@@ -1580,9 +1564,7 @@ public interface TriggeringPolicy<E> extends LifeCycle {
 		class="prop">remoteHost</span> and <span
 		class="prop">port</span> properties.
 		<code>SocketAppender</code> properties are listed in the following
-		table.  <code>SSLSocketAppender</code> supports many additional
-		configuration properties, which are detailed in the section 
-		entitled <a href="usingSSL.html">Using SSL</a>.
+		table.
 		</p>
 
     <table class="bodyTable striped">
@@ -1592,18 +1574,18 @@ public interface TriggeringPolicy<E> extends LifeCycle {
 			<th>Description</th>
       </tr>
       <tr>
-        <td><span class="prop" container="socket">includeCallerData</span></td>
+        <td><b><span class="prop">includeCallerData</span></b></td>
         <td><code>boolean</code></td>
         <td>
           <p>
-            The <span class="prop" container="socket">includeCallerData</span> option takes a boolean value. 
+            The <span class="prop">includeCallerData</span> option takes a boolean value. 
             If true, the caller data will be available to the remote host. 
             By default no caller data is sent to the server.
           </p>
         </td>
       </tr>
       <tr>
-        <td><span class="prop" container="socket">port</span></td>
+        <td><b><span class="prop">port</span></b></td>
         <td><code>int</code></td>
         <td>
           <p>
@@ -1612,101 +1594,37 @@ public interface TriggeringPolicy<E> extends LifeCycle {
         </td>
       </tr>	
       <tr>
-        <td><span class="prop"
-        container="socket">reconnectionDelay</span></td>
-        <td><code><a
-        href="../apidocs/ch/qos/logback/core/util/Duration.html">Duration</a></code></td>
-        <td>
-          The <span class="prop">reconnectionDelay</span> option takes
-          a duration string, such "10 seconds" representing the time
-          to wait between each failed connection attempt to the
-          server.  The default value of this option is 30 seconds.
-          Setting this option to zero turns off reconnection
-          capability.  Note that in case of successful connection to
-          the server, there will be no connector thread present.
-        </td>
-      </tr>
-      <tr>
-        <td><span class="prop" container="socket">queueSize</span></td>
+        <td><b><span class="prop">reconnectionDelay</span></b></td>
         <td><code>int</code></td>
         <td>
-          <p>The <span class="prop">queueSize</span> property takes a
-          non-negative integer representing the number of logging
-          events to retain for delivery to the remote receiver.  When
-          the queue size is zero, event delivery to the remote
-          receiver is synchronous.  When the queue size is greater
-          than zero, new events are enqueued, assuming that there is
-          space available in the queue.  Using a non-zero queue length
-          can improve performance by eliminating delays caused by
-          transient network delays.
-          </p>
-
-          <p>See also the <span class="prop">eventDelayLimit</span>
-          property.</p>
-
-        </td>
-      </tr>	
-
-      <tr>
-        <td><span class="prop" container="socket">eventDelayLimit</span></td>
-        <td><code><a
-        href="../apidocs/ch/qos/logback/core/util/Duration.html">Duration</a></code></td>
-        <td>
-          The <span class="prop">eventDelayLimit</span> option takes a
-          duration string, such "10 seconds". It represents the time
-          to wait before dropping events in case the local queue is
-          full, i.e. already contains <span
-          class="prop">queueSize</span> events.  This may occur if the
-          remote host is persistently slow accepting events. The
-          default value of this option is 100 milliseconds.
+          The <span class="prop">reconnectionDelay</span> option takes a 
+          positive integer representing the number of milliseconds to wait between 
+          each failed connection attempt to the server. 
+          The default value of this option is 30'000 which corresponds to 30 seconds. 
+          Setting this option to zero turns off reconnection capability. 
+          Note that in case of successful connection to the server, there will be no 
+          connector thread present.
         </td>
       </tr>
       <tr>
-        <td><span class="prop" container="socket">remoteHost</span></td>
+        <td><b><span class="prop">remoteHost</span></b></td>
         <td><code>String</code></td>
         <td>
           The host name of the server.
         </td>
       </tr>		
-      <tr>
-        <td><span class="prop" container="socket">ssl</span></td>
-        <td><code>SSLConfiguration</code></td>
-        <td>Supported only for <code>SSLSocketAppender</code>, this
-            property provides the SSL configuration that will be used by
-            the appender, as described in <a href="usingSSL.html">Using SSL</a>.
-        </td>
-      </tr>
     </table>
     
-    <h4>Logging Server Options</h4>
-    <p>The standard Logback Classic distribution includes two options
-    for servers that can be used to receive logging events from
-    <code>SocketAppender</code> or <code>SSLSocketAppender</code>.</p>
-    <ul>
-      <li><code>ServerSocketReceiver</code> and its SSL-enabled 
-      counterpart <code>SSLServerSocketReceiver</code> are receiver
-      components which can be configured in the <em>logback.xml</em> 
-      configuration file of an application in order receive events
-      from a remote socket appender.  See <a href="receivers.html">
-      Receivers</a> for configuration details and usage examples.
-      </li>
-      <li><code>SimpleSocketServer</code> and its SSL-enabled counterpart
-      <code>SimpleSSLSocketServer</code> both offer an 
-      easy-to-use standalone Java application that is designed to
-      be configured and run from your shell's command line interface.
-      These applications simply wait for logging events from 
-      <code>SocketAppender</code> or <code>SSLSocketAppender</code>
-      clients.  Each received event is logged according to local server 
-      policy.  Usage examples are given below.
-      </li>
-    </ul>
-    
-    <h4><a name="simpleSocketServer"></a>Using SimpleSocketServer</h4>
-    <p>
-    The <code>SimpleSocketServer</code> application takes two command-line
-    arguments: <em>port</em> and <em>configFile</em>; 
-    where <em>port</em> is the port to listen on and
-    <em>configFile</em> is a configuration script in XML format.
+    <p>The standard logback distribution includes a simple log server
+    application named
+    <code>ch.qos.logback.classic.net.SimpleSocketServer</code> that
+    can service multiple <code>SocketAppender</code> clients. It waits
+    for logging events from <code>SocketAppender</code> clients. After
+    reception by <code>SimpleSocketServer</code>, the events are
+    logged according to local server policy.  The
+    <code>SimpleSocketServer</code> application takes two parameters:
+    port and configFile; where port is the port to listen on and
+    configFile is a configuration script in XML format.
     </p>
 	
     <p>
@@ -1776,6 +1694,7 @@ public interface TriggeringPolicy<E> extends LifeCycle {
 
 </configuration></pre>
 	
+	
 		<p>
 			Note that in the above configuration scripts the values for the 
 			<span class="prop">remoteHost</span>, <span class="prop">port</span> and
@@ -1832,267 +1751,9 @@ public interface TriggeringPolicy<E> extends LifeCycle {
 		its clients to a second server.
 		</p>
 		
-		<h4><a name="simpleSSLSocketServer"></a>Using SimpleSSLSocketServer</h4>
-
-    <p>The <code>SimpleSSLSocketServer</code> requires the same
-    <em>port</em> and <em>configFile</em> command-line arguments used
-    by <code>SimpleSocketServer</code>.  Additionally, you must provide
-    the location and password for your logging server's X.509 credential
-    using system properties specified on the command line.
-    </p>
-    
-    <p>Assuming you are in the <em>logback-examples/</em> directory, 
-    start <code>SimpleSSLSocketServer</code> with the following command:
-    </p>
-
-    <p class="source">java -Djavax.net.ssl.keyStore=src/main/java/chapters/appenders/socket/ssl/keystore.jks \
-    -Djavax.net.ssl.keyStorePassword=changeit \
-    ch.qos.logback.classic.net.SimpleSSLSocketServer 6000 \
-    src/main/java/chapters/appenders/socket/ssl/server.xml
-    </p>
-	
-    <p>This example runs <code>SimpleSSLSocketServer</code> using an
-    X.509 credential that is suitable for testing and experimentation, 
-    only.  <strong>Before using <code>SimpleSSLSocketServer</code> in a
-    production setting you should obtain an appropriate X.509 credential
-    to identify your logging server</strong>.  See 
-    <a href="usingSSL.html">Using SSL</a> for more details.
-    </p>
-    
-    <p>Because the server configuration has <code>debug="true"</code>
-    specified on the root element, you'll will see in the server's
-    startup logging the SSL configuration that will be used.  This is
-    useful in validating that local security policies are properly
-    implemented.
-    </p>
-
-    <p>With <code>SimpleSSLSocketServer</code> running, you can connect
-    to the server using an <code>SSLSocketAppender</code>.  The following
-    example shows the appender configuration needed:
-    </p>
-      
-   	<p class="example">Example: SSLSocketAppender configuration
-		(logback-examples/src/main/java/chapters/appenders/socket/ssl/client.xml)</p>
-    <span class="asGroovy" onclick="return asGroovy('sslclient');">View as .groovy</span>
-<pre id="sslclient" class="prettyprint source"><configuration debug="true">
-	  
-  <appender name="SOCKET" class="ch.qos.logback.classic.net.SSLSocketAppender">
-    <remoteHost>${host}</remoteHost>
-    <port>${port}</port>
-    <reconnectionDelay>10000</reconnectionDelay>
-    <ssl>
-      <trustStore>
-        <location>${truststore}</location>
-        <password>${password}</password>
-      </trustStore>
-    </ssl>
-  </appender>
-
-  <root level="DEBUG">
-    <appender-ref ref="SOCKET" />
-  </root>  
-
-</configuration></pre>
-	  
-	  <p>Note that, just as in the previous example, the values for
-	  <span class="prop">remoteHost</span>, <span class="prop">port</span>
-	  are specified using substituted variable keys.  Additionally, note
-	  the presence of the <span class="prop">ssl</span> property and its
-	  nested <span class="prop">trustStore</span> property, which specifies
-	  the location and password of a trust store using substituted
-	  variables.  This configuration is necessary because our example
-	  server is using a self-signed certificate.  See 
-	  <a href="usingSSL.html">Using SSL</a> for more information on 
-	  SSL configuration properties for <code>SSLSocketAppender</code>.
-	  </p>
-
-    <p>We can run a client application using this configuration by
-    specifying the substitution variable values on the command line as
-    system properties:
-    </p>
-    	  	
-    <p class="source">java -Dhost=localhost -Dport=6000 \
-    -Dtruststore=file:src/main/java/chapters/appenders/socket/ssl/truststore.jks \
-    -Dpassword=changeit \
-    chapters.appenders.socket.SocketClient2 src/main/java/chapters/appenders/socket/ssl/client.xml
- 	  </p>
- 	  
- 	  <p>As in the previous examples, you can type in a message when 
- 	  prompted by the client application, and the message will be delivered
- 	  to the logging server (now over a secure channel) where it will be
- 	  displayed on the console.
- 	  </p>
- 	  
- 	  <p>Note that the <em>truststore</em> property given on the command
- 	  line specifies a file URL that identifies the location of the
- 	  trust store.  You may also use a classpath URL as described in <a
- 	  href="usingSSL.html">Using SSL</a>.
- 	  </p>
- 
-    <p>As we saw previously at server startup, because the client
-    configuration has <code>debug="true"</code> specified on the root
-    element, the client's startup logging includes the details of the
-    SSL configuration as aid to auditing local policy conformance.
-    </p>
- 	  
- 	  
-    <h3 class="doAnchor" name="serverSocketAppender">
-      ServerSocketAppender and SSLServerSocketAppender</h3>
-    
-    <p>The <code>SocketAppender</code> component (and its SSL-enabled
-    counterpart) discussed previously are designed to allow an
-    application to connect to a remote logging server over the network
-    for the purpose of delivering logging events to the server.  In
-    some situations, it may be inconvenient or infeasible to have an
-    application initiate a connection to a remote logging server.  For
-    these situations, Logback offers <a
-    href="../xref/ch/qos/logback/classic/net/server/ServerSocketAppender">
-    <code>ServerSocketAppender</code></a>.
-    </p>
-    
-    <p>Instead of initiating a connection to a remote logging server, 
-    <code>ServerSocketAppender</code> passively listens on a TCP socket
-    awaiting incoming connections from remote clients.  Logging events
-    that are delivered to the appender are distributed to each connected
-    client.  Logging events that occur when no client is connected are
-    <em>summarily discarded</em>.
-    </p>
-    
-    <p>In addition to the basic <code>ServerSocketAppender</code>, Logback
-    offers <a href="../xref/ch/qos/logback/classic/net/server/SSLServerSocketAppender">
-    <code>SSLServerSocketAppender</code></a>, which distributes logging events
-    to each connected client using a secure, encrypted channel.  Moreover, the
-    SSL-enabled appender fully supports mutual certificate-based authentication,
-    which can be used to ensure that only authorized clients can connect to
-    the appender to receive logging events.   
-    </p>
-   
-    <p>The approach to encoding logging events for transmission on the wire 
-    is identical to that used by <code>SocketAppender</code>; each event is 
-    a serialized instance of <code>ILoggingEvent</code>.  Only the direction 
-    of connection initiation is reversed.  While <code>SocketAppender</code> 
-    acts as the active peer in establishing the connection to a logging server,
-    <code>ServerSocketAppender</code> is passive; it listens for
-    incoming connections from clients.</p>  
-
-    <p>The <code>ServerSocketAppender</code> subtypes are intended to be
-    used exclusively with Logback <em>receiver</em> components.  See
-    <a href="receivers.html">Receivers</a> for additional information on
-    this component type.</p>
-    
-    <p>The following configuration properties are supported by 
-    <code>ServerSocketAppender</code>:</p>
-    
-    <table class="bodyTable striped">
-      <tr>
-      <th>Property Name</th>
-      <th>Type</th>
-      <th>Description</th>
-      </tr>
-      <tr>
-        <td><span class="prop" container="serverSocketAppender">address</span></td>
-        <td><code>String</code></td>
-        <td>The local network interface address on which the appender
-        will listen.  If this property is not specified, the appender
-        will listen on all network interfaces.</td>
-      </tr>
-      <tr>
-        <td><span class="prop" container="serverSocketAppender">includeCallerData</span></td>
-        <td><code>boolean</code></td>
-        <td>
-          <p>
-            If true, the caller data will be available to the remote host. 
-            By default no caller data is sent to the client.
-          </p>
-        </td>
-      </tr>
-      <tr>
-        <td><span class="prop" container="serverSocketAppender">port</span></td>
-        <td><code>int</code></td>
-        <td>
-          <p>
-            The port number on which the appender will listen.
-          </p>
-        </td>
-      </tr> 
-      <tr>
-        <td><span class="prop" container="serverSocketAppender">ssl</span></td>
-        <td><code>SSLConfiguration</code></td>
-        <td>Supported only for <code>SSLServerSocketAppender</code>, this
-            property provides the SSL configuration that will be used by
-            the appender, as described in <a href="usingSSL.html">Using SSL</a>.
-        </td>
-      </tr>
-    </table>
-    
-    <p>The following example illustrates a configuration that uses
-      <code>ServerSocketAppender</code>:
-    </p>
-
-    <p class="example">Example: Basic ServerSocketAppender Configuration
-    (logback-examples/src/main/java/chapters/appenders/socket/server4.xml)</p>
-<pre id="SocketReceiver" class="prettyprint source"><configuration debug="true">
-  <appender name="SERVER" 
-    class="ch.qos.logback.classic.net.server.ServerSocketAppender">
-    <port>${port}</port>
-    <includeCallerData>${includeCallerData}</includeCallerData>
-  </appender>
-
-  <root level="debug">
-    <appender-ref ref="SERVER" />
-  </root>  
-
-</configuration>
-</pre>
-    <p>Note that this configuration differs from previous examples using
-    <code>SocketAppender</code> only in the <em>class</em> specified for
-    the appender, and in the absence of the <span class="prop">remoteHost</span>
-    property — this appender waits passively for inbound connections 
-    from remote hosts rather than opening a connection to a remote logging
-    server.
-    </p>
-    
-    <p>The following example illustrates a configuration using
-    <code>SSLServerSocketAppender</code>.</p>
-        
-     <p class="example">Example: Basic SSLServerSocketAppender Configuration
-    (logback-examples/src/main/java/chapters/appenders/socket/ssl/server3.xml)</p>
-<pre id="SocketReceiver" class="prettyprint source"><configuration debug="true">
-  <appender name="SERVER" 
-    class="ch.qos.logback.classic.net.server.SSLServerSocketAppender">
-    <port>${port}</port>
-    <includeCallerData>${includeCallerData}</includeCallerData>
-    <ssl>
-      <keyStore>
-        <location>${keystore}</location>
-        <password>${password}</password>
-      </keyStore>
-    </ssl>
-  </appender>
-
-  <root level="debug">
-    <appender-ref ref="SERVER" />
-  </root>  
+		
+   <h3><a name="SMTPAppender" href="#SMTPAppender">SMTPAppender</a></h3>
 
-</configuration>
-</pre>
-   
-    <p>The principal differences between this configuration and the
-    previous configuration is that the appender's <em>class</em> attribute
-    identifies the <code>SSLServerSocketAppender</code> type, and the
-    presence of the nested <span class="prop">ssl</span> element which
-    specifies, in this example, configuration of a key store containing
-    an X.509 credential for the appender.  See <a href="usingSSL.html">
-    Using SSL</a> for information regarding SSL configuration properties.
-    </p>
-    
-    <p>Because the <code>ServerSocketAppender</code> subtypes are designed
-    to be used with receiver components, we will defer presenting 
-    illustrative examples to the chapter entitled 
-    <a href="receivers.html">Receivers</a>.</p>
-    
-   <h3 class="doAnchor">SMTPAppender</h3>
-   
    <p>The <a
    href="../xref/ch/qos/logback/classic/net/SMTPAppender.html"><code>SMTPAppender</code></a>
    accumulates logging events in one or more fixed-size buffers and
@@ -2115,20 +1776,20 @@ public interface TriggeringPolicy<E> extends LifeCycle {
       </tr>
 
       <tr>
-        <td><span class="prop" container="smtp">smtpHost</span></td>
+        <td><b><span class="prop">smtpHost</span></b></td>
         <td><code>String</code></td>
         <td>The host name of the SMTP server. This parameter is mandatory.</td>
       </tr>
       
       <tr>
-        <td><span class="prop" container="smtp">smtpPort</span></td>
+        <td><b><span class="prop">smtpPort</span></b></td>
         <td><code>int</code></td>
         <td>The port where the SMTP server is listening. Defaults to
         25.</td>
       </tr>
       
       <tr>
-        <td><span class="prop" name="smtpTo">to</span></td>
+        <td><a name="smtpTo" href="#smtpTo"><b><span class="prop">to</span></b></a></td>
         <td><code>String</code></td>
         <td>The email address of the recipient as a
         <em>pattern</em>. The pattern is evaluated anew with the
@@ -2141,7 +1802,7 @@ public interface TriggeringPolicy<E> extends LifeCycle {
       </tr>
 
       <tr>
-        <td><span class="prop" container="smtp">from</span></td>
+        <td><b><span class="prop">from</span></b></td>
         <td><code>String</code></td>
         <td>The originator of the email messages sent by
         <code>SMTPAppender</code> in the <a
@@ -2154,7 +1815,7 @@ public interface TriggeringPolicy<E> extends LifeCycle {
         </td>
       </tr>
       <tr>
-        <td><span class="prop">subject</span></td>
+        <td><b><span class="prop">subject</span></b></td>
         <td><code>String</code></td>
         <td> 
           <p>The subject of the email. It can be any value accepted as
@@ -2180,7 +1841,7 @@ public interface TriggeringPolicy<E> extends LifeCycle {
         
       </tr>
       <tr>
-        <td><span class="prop" container="smtp">discriminator</span></td>
+        <td><b><span class="prop">discriminator</span></b></td>
         <td><code><a href="../xref/ch/qos/logback/core/sift/Discriminator.html">Discriminator</a></code></td>
         <td>
           <p>With the help of a <span
@@ -2199,7 +1860,8 @@ public interface TriggeringPolicy<E> extends LifeCycle {
         </td>
       </tr>
       <tr>
-        <td><span class="prop" name="smtpAppender_Evaluator">evaluator</span></td>
+        <td><b><span class="prop"><a name="smtpAppender_Evaluator"
+        href="#smtpAppender_Evaluator">evaluator</a></span></b></td>
         <td><code><a
         href="../xref/ch/qos/logback/classic/boolex/IEvaluator.html">IEvaluator</a></code></td>
         <td>
@@ -2241,7 +1903,7 @@ public interface TriggeringPolicy<E> extends LifeCycle {
       </tr>
 
       <tr>
-        <td  valign="top"><span class="prop" container="smtp">cyclicBufferTracker</span></td>
+        <td  valign="top"><b><span class="prop">cyclicBufferTracker</span></b></td>
         <td><a href="../xref/ch/qos/logback/core/spi/CyclicBufferTracker.html"><code>CyclicBufferTracker</code></a>
         </td>
         <td>
@@ -2260,20 +1922,20 @@ public interface TriggeringPolicy<E> extends LifeCycle {
         </td>        
       </tr>
       <tr>
-        <td><span class="prop" container="smtp">username</span></td>
+        <td><b><span class="prop">username</span></b></td>
         <td><code>String</code></td> <td>The username value to use
         during plain user/password authentication. By default, this
         parameter is null.  </td> 
       </tr> 
       <tr class="alt">
-        <td><span class="prop" container="smtp">password</span></td>
+        <td><b><span class="prop">password</span></b></td>
         <td><code>String</code></td>
         <td>The password value to use for plain user/password
         authentication. By default, this parameter is null.  
         </td>
       </tr>
       <tr> 
-        <td><span class="prop" container="smtp">STARTTLS</span> </td>
+        <td><b><span class="prop">STARTTLS</span></b> </td>
         <td><code>boolean</code></td> 
         <td>If this parameter is set to true, then this appender
         will issue the STARTTLS command (if the server supports it)
@@ -2283,14 +1945,14 @@ public interface TriggeringPolicy<E> extends LifeCycle {
         </td> 
       </tr>
       <tr>
-        <td><span class="prop" container="smtp">SSL</span></td>
+        <td><b><span class="prop">SSL</span></b></td>
         <td><code>boolean</code></td> <td>If this parameter is set to
         true, then this appender will open an SSL connection to the
         server. By default, this parameter is set to false.  </td>
       </tr>
 
       <tr>
-        <td><span class="prop" container="smtp">charsetEncoding</span></td>
+        <td><b><span class="prop">charsetEncoding</span></b></td>
         <td><code>String</code></td>
         <td>The outgoing email message will be encoded in the
         designated <a
@@ -2302,7 +1964,7 @@ public interface TriggeringPolicy<E> extends LifeCycle {
 
 
       <tr>
-        <td><span class="prop" container="smtp">localhost</span></td>
+        <td><b>localhost</b></td>
         <td><code>String</code></td>
         <td>In case the hostname of the SMTP client is not properly
         configured, e.g. if the client hostname is not fully
@@ -2317,7 +1979,7 @@ public interface TriggeringPolicy<E> extends LifeCycle {
       </tr>
 
       <tr>
-        <td><span class="prop" container="smtp">asynchronousSending</span></td>
+        <td><b>asynchronousSending</b></td>
         <td><code>boolean</code></td>
         <td>This property determines whether email transmission is
         done asynchronously or not. By default, the <span
@@ -2332,54 +1994,6 @@ public interface TriggeringPolicy<E> extends LifeCycle {
         </td>
       </tr>
 
-      <tr>
-        <td><span class="prop" container="smtp">includeCallerData</span></td>
-        <td><code>boolean</code></td>
-        <td>By default, <span class="prop">includeCallerData</span> is
-        set to <code>false</code>. You should set <span
-        class="prop">includeCallerData</span> to <code>true</code> if
-        <span class="prop">asynchronousSending</span> is enabled and
-        you wish to include caller data in the logs. </td>
-      </tr>
-
-      <tr>
-        <td><span class="prop" container="smtp">sessionViaJNDI</span></td>
-        <td><code>boolean</code></td>
-        <td><code>SMTPAppender</code> relies on
-        <code>javax.mail.Session</code> to send out email messages. By
-        default, <span class="prop">sessionViaJNDI</span> is set to
-        <code>false</code> so the <code>javax.mail.Session</code>
-        instance is built by <code>SMTPAppender</code> itself with the
-        properties specified by the user. If the <span
-        class="prop">sessionViaJNDI</span> property is set to
-        <code>true</code>, the <code>javax.mail.Session</code> object
-        will be retrieved via JNDI. See also the <span
-        class="prop">jndiLocation</span> property.
-
-        <p>Retrieving the <code>Session</code> via JNDI can reduce the
-        number of places you need to configure/reconfigure the same
-        information, making your application <a
-        href="http://en.wikipedia.org/wiki/Don't_repeat_yourself">dryer</a>. For
-        more information on configuring resources in Tomcat see <a
-        href="http://tomcat.apache.org/tomcat-6.0-doc/jndi-resources-howto.html#JavaMail_Sessions">JNDI
-        Resources How-to</a>. <span class="label">beware</span> As
-        noted in that document, make sure to remove <em>mail.jar</em>
-        and <em>activation.jar</em> from your web-applications
-        <em>WEB-INF/lib</em> folder when retrieving the
-        <code>Session</code> from JNDI.
-        </p>
-        </td>
-      </tr>
-
-      <tr>
-        <td><span class="prop" container="smtp">jndiLocation</span></td>
-        <td><code>String</code></td>
-        <td>The location where the javax.mail.Session is placed in
-        JNDI. By default, <span class="prop">jndiLocation</span> is
-        set to <span style="white-space:nowrap">"java:comp/env/mail/Session"</span>.
-        </td>
-      </tr>
-
 		</table>		
 		
 		<p>The <code>SMTPAppender</code> keeps only the last 256 logging
@@ -2509,8 +2123,7 @@ public interface TriggeringPolicy<E> extends LifeCycle {
     <code>HTMLLayout</code> does not use inline CSS.
     </p>
 
-    <h3 class="doAnchor" name="cyclicBufferSize">Custom buffer
-    size</h3>
+    <h3><a name="cyclicBufferSize" href="#cyclicBufferSize">Custom buffer size</a></h3>
 
     <p>By default, the outgoing message will contain the last 256
     messages seen by <code>SMTPAppender</code>. If your heart so
@@ -2526,7 +2139,7 @@ public interface TriggeringPolicy<E> extends LifeCycle {
     <subject>%logger{20} - %m</subject>
     <layout class="ch.qos.logback.classic.html.HTMLLayout"/>
 
-    <b><cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker"></b>
+    <b><cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTrackerImpl"></b>
       <b><!-- send just one log entry per email --></b>
       <b><bufferSize>1</bufferSize></b>
     <b></cyclicBufferTracker></b>
@@ -2538,7 +2151,7 @@ public interface TriggeringPolicy<E> extends LifeCycle {
 </configuration>    </pre>
     
 
-    <h3 class="doAnchor">Triggering event</h3>
+    <h3>Triggering event</h3>
 
     <p>If the Evaluator property is not set, the
     <code>SMTPAppender</code> defaults to an <a
@@ -2634,8 +2247,9 @@ public class CounterBasedEvaluator extends ContextAwareBase implements EventEval
 </configuration></pre>
     
 
-    <h3 class="doAnchor" name="OnMarkerEvaluator">Marker based
-    triggering </h3>
+    <h3><a name="OnMarkerEvaluator" href="#OnMarkerEvaluator">Marker
+    based triggering</a> 
+    </h3>
 
     <p>Although reasonable, the default triggering policy whereby every
     event of level ERROR triggers an outgoing email may result in too
@@ -2693,8 +2307,9 @@ logger.error(<b>notifyAdmin</b>,
   chapters.appenders.mail.Marked_EMail src/main/java/chapters/appenders/mail/mailWithMarker.xml</pre>
 
 
-  <h4 class="doAnchor" name="marker_JaninoEventEvaluator">Marker-based
-  triggering with JaninoEventEvaluator</h4>
+  <h4><a name="marker_JaninoEventEvaluator"
+    href="#marker_GEventEvaluator">Marker-based triggering with
+    JaninoEventEvaluator</a></h4>
 
     <p>Note that instead of using the marker-centric
     <code>OnMarkerEvaluator</code>, we could use the much more generic
@@ -2724,9 +2339,9 @@ logger.error(<b>notifyAdmin</b>,
   </appender>
 </configuration></pre>
 
-    <h4 class="doAnchor" name="marker_GEventEvaluator">Marker-based
-    triggering with GEventEvaluator</h4>
-
+    <h4><a name="marker_GEventEvaluator"
+    href="#marker_GEventEvaluator">Marker-based triggering with
+    GEventEvaluator</a></h4>
     <p>Here is the equivalent evaluator using <a
     href="filters.html#GEventEvaluator">GEventEvaluator</a>.</p>
 
@@ -2752,7 +2367,9 @@ logger.error(<b>notifyAdmin</b>,
     </p>
 
 
-    <h3 class="doAnchor" name="smtpAuthentication">Authentication/STARTTLS/SSL</h3>
+
+    <h3><a name="smtpAuthentication"
+    href="#smtpAuthentication">Authentication/STARTTLS/SSL</a></h3>
 
     <p><code>SMTPAppender</code> supports authentication via plain
     user passwords as well as both the STARTTLS and SSL
@@ -2763,8 +2380,8 @@ logger.error(<b>notifyAdmin</b>,
     connection is encrypted right from the start.
     </p>
 
-    <h3> class="doAnchor"name="gmailSSL">SMTPAppender configuration
-    for Gmail (SSL)</h3>
+    <h3><a name="gmailSSL" href="#gmailSSL">SMTPAppender configuration
+    for Gmail (SSL)</a></h3>
 
     <p>The next example shows you how to configure
     <code>SMTPAppender</code> for Gmail with the SSL protocol. </p>
@@ -2773,8 +2390,8 @@ logger.error(<b>notifyAdmin</b>,
     using SSL
     (logback-examples/src/main/java/chapters/appenders/mail/gmailSSL.xml)</p>
 
-    <span class="asGroovy" onclick="return asGroovy('gmailSSLExample');">View as .groovy</span>	
-    <pre id="gmailSSLExample" class="prettyprint source"><configuration>
+    <span class="asGroovy" onclick="return asGroovy('gmailSSL');">View as .groovy</span>	
+    <pre id="gmailSSL" class="prettyprint source"><configuration>
   <appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
     <b><smtpHost>smtp.gmail.com</smtpHost></b>
     <b><smtpPort>465</smtpPort></b>
@@ -2797,16 +2414,16 @@ logger.error(<b>notifyAdmin</b>,
 </configuration></pre>
 
 
-    <h3 class="doAnchor" name="gmailSTARTTLS">SMTPAppender for Gmail
-    (STARTTLS)</h3>
+    <h3><a name="gmailSTARTTLS" href="#gmailSTARTTLS">SMTPAppender for Gmail
+    (STARTTLS)</a></h3>
 
     <p>The next example shows you how to configure
     <code>SMTPAppender</code> for Gmail for the STARTTLS protocol. </p>
 
     <p class="example">Example: <code>SMTPAppender</code> to GMAIL using STARTTLS (logback-examples/src/main/java/chapters/appenders/mail/gmailSTARTTLS.xml)</p>
 
-    <span class="asGroovy" onclick="return asGroovy('gmailSTARTTLSExample');">View as .groovy</span>	
-    <pre id="gmailSTARTTLSExample" class="prettyprint source"><configuration>	  
+    <span class="asGroovy" onclick="return asGroovy('gmailSTARTTLS');">View as .groovy</span>	
+    <pre id="gmailSTARTTLS" class="prettyprint source"><configuration>	  
   <appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
     <smtpHost>smtp.gmail.com</smtpHost>
     <smtpPort>587</smtpPort>
@@ -2829,8 +2446,9 @@ logger.error(<b>notifyAdmin</b>,
 </configuration></pre>
 
 
-    <h3 class="doAnchor" name="smtpDiscriminator">SMTPAppender with MDCDiscriminator</h3>
-
+    <h3><a name="smtpDiscriminator"
+    href="#smtpDiscriminator">SMTPAppender with
+    MDCDiscriminator</a></h3>
 
     <p>As mentioned earlier, by specifying a discriminator other than
     the default one, <code>SMTPAppender</code> will generate email
@@ -2880,8 +2498,8 @@ logger.error(<b>notifyAdmin</b>,
     host, greatly facilitating problem diagnosis.
     </p>
     
-    <h4 class="doAnchor" name= "bufferManagement">Buffer management in
-    very busy systems</h4>
+    <h4><a name= "bufferManagement" href="#bufferManagement">Buffer
+    management in very busy systems</a></h4>
 
     <p>Internally, each distinct value returned by the discriminator
     will cause the creation of a new cyclic buffer. However, at most
@@ -2923,7 +2541,9 @@ logger.error(<b>notifyAdmin</b>,
     <!-- =========================================================== -->
 
 
-    <h3 class="doAnchor" name="DBAppender">DBAppender</h3>
+    <h3>
+      <a name="DBAppender" href="#DBAppender">DBAppender</a>
+		</h3>
 		
 		<p>The <a
 		href="../xref/ch/qos/logback/classic/db/DBAppender.html"><code>DBAppender</code></a>
@@ -2935,9 +2555,9 @@ logger.error(<b>notifyAdmin</b>,
 		<em>logging_event_property</em> and
 		<em>logging_event_exception</em>. They must exist before
 		<code>DBAppender</code> can be used. Logback ships with SQL
-		scripts that will create the tables.  They can be found under the
+		scripts that will create the tables.  They can be found in the
 		<em>logback-classic/src/main/java/ch/qos/logback/classic/db/script</em>
-		folder. There is a specific script for each of the most popular
+		directory. There is a specific script for each of the most popular
 		database systems.  If the script for your particular type of
 		database system is missing, it should be quite easy to write one,
 		taking example on the already existing scripts. If you send them
@@ -2956,7 +2576,7 @@ logger.error(<b>notifyAdmin</b>,
 		of the <code>getGeneratedKeys()</code> method.
 		</p>
 
-		<table class="bodyTable striped" border="0" cellpadding="4">
+		<table class="bodyTable striped" border="1" cellpadding="4">
 			<tr>
 				<th>RDBMS</th>
         <th>tested version(s)
@@ -3272,17 +2892,15 @@ logger.error(<b>notifyAdmin</b>,
 			traditional JDBC manner based on the connection URL.
 		</p>
 		<p>
-			Note that this class will establish a new
-			<code>Connection</code> for each call to
-			<code>getConnection()</code>. It is recommended that you either
-			use a JDBC driver that natively supports connection pooling or
-			that you create your own implementation of
-			<code>ConnectionSource</code> that taps into whatever pooling
-			mechanism you are already using. If you have access to a JNDI
-			implementation that supports <code>javax.sql.DataSource</code>,
-			e.g. within a J2EE application server, see <a
-			href="#JNDIConnectionSource"><code>JNDIConnectionSource</code></a>
-			below.
+			Note that this class will establish a new <code>Connection</code> for
+			each call to <code>getConnection()</code>. It is recommended
+			that you either use a JDBC driver that natively supports
+			connection pooling or that you create your own
+			implementation of <code>ConnectionSource</code> that taps into
+			whatever pooling mechanism you are already using. (If you
+			have access to a JNDI implementation that supports
+			<code>javax.sql.DataSource</code>, e.g. within a J2EE application
+			server, see <code>JNDIConnectionSource</code>).
 		</p>
 <!-- 
 		
@@ -3312,20 +2930,21 @@ logger.error(<b>notifyAdmin</b>,
 		</p>
  -->
  
-		<p>Connecting to a database using a <code>DataSource</code> is
-		rather similar.  The configuration now uses <a
-		href="../xref/ch/qos/logback/core/db/DataSourceConnectionSource.html">
-		<code>DataSourceConnectionSource</code></a>, which is an
-		implementation of <code>ConnectionSource</code> that obtains the
-		<code>Connection</code> in the recommended JDBC manner based on a
-		<code>javax.sql.DataSource</code>.
+		<p>
+			Connecting to a database using a <code>DataSource</code> is rather similar.
+			The configuration now uses 
+			<a href="../xref/ch/qos/logback/core/db/DataSourceConnectionSource.html">
+			<code>DataSourceConnectionSource</code></a>, 
+			which is an implementation of <code>ConnectionSource</code> that obtains the 
+			<code>Connection</code> in the recommended JDBC manner based on a 
+			<code>javax.sql.DataSource</code>.
 		</p>
 	
     <p class="example">Example: <code>DBAppender</code> configuration (logback-examples/src/main/java/chapters/appenders/db/append-with-datasource.xml)</p>	
 
 
     <span class="asGroovy" onclick="return asGroovy('append-with-datasource');">View as .groovy</span>	
-    <pre id="append-with-datasource" class="prettyprint source"><configuration  debug="true">
+    <pre id="append-with-datasource" class="prettyprint source"><configuration>
 
   <appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
      <b><connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">
@@ -3345,25 +2964,24 @@ logger.error(<b>notifyAdmin</b>,
      </connectionSource>
   </appender>
 
-  <root level="INFO">
+  <root level="DEBUG">
     <appender-ref ref="DB" />
   </root>  
 </configuration></pre>
 
-		<p>Note that in this configuration sample, we make heavy use of
-		substitution variables.  They are sometimes handy when connection
-		details have to be centralized in a single configuration file and
-		shared by logback and other frameworks.
+		<p>
+			Note that in this configuration sample, we make heavy use of substitution variables.
+			They are sometimes handy when connection details have to be centralized in a
+			single configuration file and shared by logback and other frameworks.
 		</p>	
 		
-<!-- TO BE TESTED 
-
-     <p>The connection created by
-     <code>DataSourceConnectionSource</code> can be placed in a JNDI
-     context by using <code>BindDataSourceToJNDIAction</code>. In that
-     case, one has to specify the use of this class by adding a new
-     rule to Joran, logback's configuration framework. Here is an
-     excerpt of such a configuration file.  </p>
+<!-- 		TO BE TESTED		
+		<p>
+			The connection created by <code>DataSourceConnectionSource</code> can be placed in a JNDI
+			context by using <code>BindDataSourceToJNDIAction</code>. In that case, one has to specify
+			the use of this class by adding a new rule to Joran, logback's configuration framework. Here
+			is an excerpt of such a configuration file.
+		</p>
 		
 <div class="source"><pre><configuration>
   ..
@@ -3374,78 +2992,43 @@ logger.error(<b>notifyAdmin</b>,
   ..
 </configuration></pre></div>
 
-		<p> The <em>newRule</em> element teaches Joran to use specified
-		action class with the given pattern.  Then, we simply declare the
-		given element. The action class will be called and our connection
-		source will be bound to a JNDI context.  </p>
+		<p>
+			The <em>newRule</em> element teaches Joran to use specified action class with the given pattern.
+			Then, we simply declare the given element. The action class will be called and our connection
+			source will be bound to a JNDI context.
+		</p>
 
 		<p>This is a very powerful capability of Joran. If you'd like to
-		read more about Joran, please see the <a
-		href="onJoran.html">chapter to Joran</a>.  </p>
+			read more about Joran, please see the <a
+			href="onJoran.html">chapter to Joran</a>.
+		</p>
 		
 		-->
 
-    <h4 class="doAnchor"
-    name="JNDIConnectionSource">JNDIConnectionSource</h4>
-
-		<p><a
-		href="../xref/ch/qos/logback/core/db/JNDIConnectionSource.html">
-		<code>JNDIConnectionSource</code></a> is another
-		<code>ConnectionSource</code> implementation shipping in logback.
-		As its name indicates, it retrieves a
-		<code>javax.sql.DataSource</code> from a JNDI and then leverages
-		it to obtain a <code>java.sql.Connection</code>
-		instance. <code>JNDIConnectionSource</code> is primarily designed
-		to be used inside J2EE application servers or by application
-		server clients, assuming the application server supports remote
-		access of <code>javax.sql.DataSource</code>.  Thus, one can take
-		advantage of connection pooling and whatever other goodies the
-		application server provides. More importantly, your application
-		will be <a
-		href="http://en.wikipedia.org/wiki/Don't_repeat_yourself">dryer</a>
-		as it will be no longer necessary to define a
-		<code>DataSource</code> in <em>logback.xml</em>.</p>
-
-    <p>For example, here is a configuration snippet for Tomcat. It
-    assumes PostgreSQL as the database although any of the supported
-    database systems (listed above) would work.</p>
-
-<pre  class="prettyprint source"><Context docBase="/path/to/app.war" path="/myapp">
-  ...
-  <Resource <b>name="jdbc/logging"</b>
-               auth="Container"
-               type="javax.sql.DataSource"
-               username="..."
-               password="..."
-               driverClassName="org.postgresql.Driver"
-               url="jdbc:postgresql://localhost/..."
-               maxActive="8"
-               maxIdle="4"/>
-  ...
-</Context></pre>
-		
-   <p>Once a <code>DataSource</code> is defined in the J2EE server, it
-   can be easily referenced by your logback configuration file, as
-   shown in the next example.</p>
-   
-   <p class="example">Example: <code>DBAppender</code> configuration
-   by <code>JNDIConnectionSource</code>
-   (logback-examples/src/main/java/chapters/appenders/db/append-via-jndi.xml)</p>
-
-    <span class="asGroovy" onclick="return asGroovy('append-via-jndi');">View as .groovy</span>	
- 
+		<p>
+			The third implementation of <code>ConnectionSource</code> that is shipped with
+			logback is the <code>JNDIConnectionSource</code>.
+		</p>
 
-<pre id="append-via-jndi" class="prettyprint source"><configuration debug="true">
-  <appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
-    <connectionSource class="ch.qos.logback.core.db.JNDIConnectionSource">
-      <b><!-- please note the "java:comp/env/" prefix --></b>
-      <b><jndiLocation>java:comp/env/jdbc/logging</jndiLocation></b>
-    </connectionSource>
-  </appender>
-  <root level="INFO">
-    <appender-ref ref="DB" />
-  </root>  
-</configuration></pre>
+		<p>
+			The
+			<a href="../xref/ch/qos/logback/core/db/JNDIConnectionSource.html">
+			<code>JNDIConnectionSource</code></a>
+			is an implementation of <code>ConnectionSource</code> that
+			obtains a <code>javax.sql.DataSource</code> from a JNDI provider
+			and uses it to obtain a <code>java.sql.Connection</code>. It is
+			primarily designed to be used inside of J2EE application
+			servers or application server clients, assuming the
+			application server supports remote access of <code>javax.sql.DataSource</code>. 
+			In this way one can take advantage of connection pooling and whatever other goodies the
+			application server provides.
+		</p>
+		
+<pre class="prettyprint source"><connectionSource class="ch.qos.logback.core.db.JNDIConnectionSource">
+  <param name="jndiLocation" value="jdbc/MySQLDS" />
+  <param name="username" value="myUser" />
+  <param name="password" value="myPassword" />
+</connectionSource></pre>
 
 		<p>
 			Note that this class will obtain an
@@ -3457,12 +3040,13 @@ logger.error(<b>notifyAdmin</b>,
 			file as described by your JNDI provider's documentation.
 		</p>
 		
-		<h4 class="doAnchor">Connection pooling</h4>
+		<h4>Connection pooling</h4>
 		
-		<p>Logging events can be created at a rather fast pace. To keep up
-		with the flow of events that must be inserted into a database, it
-		is recommended to use connection pooling with
-		<code>DBAppender</code>.
+		<p>
+			Logging events can be created at a rather fast pace. To keep up
+			with the flow of events that must be inserted into a database, 
+			it is recommended to use connection pooling with
+			<code>DBAppender</code>.
 		</p>
 		
 		<p>
@@ -3539,7 +3123,9 @@ logger.error(<b>notifyAdmin</b>,
 		improvement in performance.
 		</p>
 
-		<h3 class="doAnchor" name="SyslogAppender">SyslogAppender</h3>
+		<h3><a name="SyslogAppender"
+		href="#SyslogAppender">SyslogAppender</a>
+    </h3>
 
 		<p>The syslog protocol is a very simple protocol: a syslog sender
 		sends a small message to a syslog receiver.  The receiver is
@@ -3558,12 +3144,12 @@ logger.error(<b>notifyAdmin</b>,
 				<th>Description</th>
 			</tr>
 			<tr>
-				<td><span class="prop" container="syslog">syslogHost</span></td>
+				<td><b><span class="prop">syslogHost</span></b></td>
 				<td><code>String</code></td>
 				<td>The host name of the syslog server.</td>
 			</tr>
 			<tr>
-				<td><span class="prop" container="syslog">port</span></td>
+				<td><b><span class="prop">port</span></b></td>
 				<td><code>String</code></td>
 				<td>The port number on the syslog server to connect
 				to. Normally, one would not want to change the default value
@@ -3571,7 +3157,7 @@ logger.error(<b>notifyAdmin</b>,
 				</td>
 			</tr>
 			<tr>
-				<td><span class="prop" container="syslog">facility</span></td>
+				<td><b><span class="prop">facility</span></b></td>
 				<td><code>String</code></td>
 				<td>
 					<p>The <span class="prop">facility</span> is meant to identify 
@@ -3584,7 +3170,7 @@ logger.error(<b>notifyAdmin</b>,
 				</td>
 			</tr>
       <tr>
-        <td><span class="prop" container="syslog">suffixPattern</span></td>
+        <td><b><span class="prop">suffixPattern</span></b></td>
 				<td><code>String</code></td>
 				<td><p>The <span class="prop">suffixPattern</span> option
 				specifies the format of the non-standardized part of the
@@ -3597,8 +3183,7 @@ logger.error(<b>notifyAdmin</b>,
 			</tr>
 
       <tr>
-        <td><span class="prop"
-        container="syslog">stackTracePattern</span></td>
+        <td><b><span class="prop">stackTracePattern</span></b></td>
 				<td><code>String</code></td>
 				<td><p>The <span class="prop">stackTracePattern</span>
 				property allows the customization of the string appearing just
@@ -3610,7 +3195,7 @@ logger.error(<b>notifyAdmin</b>,
 			</tr>
 
 			<tr>
-				<td><span class="prop" container="syslog">throwableExcluded</span></td>
+				<td><b><span class="prop">throwableExcluded</span></b></td>
 				<td><code>boolean</code></td>
 				<td>Setting <span class="prop">throwableExcluded</span> to
 				<code>true</code> will cause stack trace data associated with
@@ -3662,7 +3247,8 @@ logger.error(<b>notifyAdmin</b>,
 		</p>
 		
 
-    <h3 class="doAnchor" name="SiftingAppender">SiftingAppender</h3>
+    <h3><a name="SiftingAppender"
+    href="#SiftingAppender">SiftingAppender</a></h3>
 
     <p>As its name implies, a <code>SiftingAppender</code> can be used
     to separate (or sift) logging according to a given runtime
@@ -3673,44 +3259,15 @@ logger.error(<b>notifyAdmin</b>,
     </p>
 
 
-    
-    <table class="bodyTable striped">
-			<tr>
-				<th>Property Name</th>
-				<th>Type</th>
-				<th>Description</th>
-			</tr>
-			<tr>
-				<td><span class="prop" container="sift">timeout</span></td>
-				<td><code><a
-				href="../apidocs/ch/qos/logback/core/util/Duration.html">Duration</a></code></td>
-				<td>A nested appender which has not been accessed beyond the
-				<span class="prop">timeout</span> duration is deemed stale. A
-				stale appender is closed and unreferenced by
-				<code>SiftingAppender</code>. The default value for <span
-				class="prop">timeout</span> is 30 minutes.</td>
-			</tr>
-			<tr>
-				<td><span class="prop" container="sift">maxAppenderCount</span></td>
-				<td><code>integer</code></td>
-				<td>The maximum number of nested appenders
-				<code>SiftingAppender</code> may create and track. Default
-				value for <span class="prop">maxAppenderCount</span> is
-				Integer.MAX_VALUE.</td>
-			</tr>
-  </table>
-
     <p><code>SiftingAppender</code> achieves this feat by creating
-    nested appenders on the fly. Nested appenders are created based on
-    a template specified within the configuration of the
+    child appenders on the fly. Child appenders are created based on a
+    template specified within the configuration of the
     <code>SiftingAppender</code> itself (enclosed within the
     <code><sift></code> element, see example
     below). <code>SiftingAppender</code> is responsible for managing
     the lifecycle of child appenders. For example,
     <code>SiftingAppender</code> will automatically close and remove
-    any stale appender. A nested appender is considered stale when no
-    accesses it beyond the duration specified by the <span
-    class="prop">timeout</span> parameter.
+    any unused child appender.
     </p>
 
     <p>When handling a logging event, <code>SiftingAppender</code>
@@ -3718,7 +3275,7 @@ logger.error(<b>notifyAdmin</b>,
     criteria are computed at runtime by a discriminator. The user can
     specify the selection criteria with the help of a <code><a
     href="../xref/ch/qos/logback/core/sift/Discriminator.html">Discriminator</a></code>. Let
-    us now study an example.
+    us now study an eaxample.
     </p>
  
     <h4>Example</h4>
@@ -3773,10 +3330,10 @@ logger.debug("Alice says hello"); </p>
     <p>In the absence of a class attribute, it is assumed that the
     discriminator type is <a
     href="../xref/ch/qos/logback/classic/sift/MDCBasedDiscriminator.html">MDCBasedDiscriminator</a>.
-    The discriminating value is the MDC value associated with the key
+    The discrimating value is the MDC value associated with the key
     given by the <span class="prop">key</span> property. However, if
     that MDC value is null, then <span
-    class="prop">defaultValue</span> is used as the discriminating
+    class="prop">defaultValue</span> is used as the discrimating
     value.
     </p>
 
@@ -3809,75 +3366,17 @@ logger.debug("Alice says hello"); </p>
     distinct log files, "unknown.log" and "Alice.log".
 		</p>
 
-    <p><span class="label">local-scoped variables</span> As of version
-    1.0.12, properties defined in local scope within the configuration
-    file will be available to nested appenders. Moreover, you can <a
-    href="configuration.html#definingProps">define variables</a> or <a
-    href="configuration.html#definingPropsOnTheFly">dynamically
-    compute</a> variables from <em>within</em> the the
-    <code><sift></code> element. Combining a variable from parts
-    defined outside and within the <code><sift></code> element is
-    also supported.
-    </p>
-
-    <h4 class="doAnchor" name="siftGettingTimeoutRight">Getting the
-    <span class="prop">timeout</span> right</h4>
-
-    <p>For certain types of applications, it may be difficult to get
-    the <span class="prop">timeout</span> parameter right. If the
-    <span class="prop">timeout</span> is too small, a nested appender
-    might be removed just to be created anew a few seconds later. This
-    phenomenon is called <em>trashing</em>. If the <span
-    class="prop">timeout</span> is too long and appenders are created
-    in quick succession, you might run out of resources. Similarly,
-    setting <span class="prop">maxAppenderCount</span> too low might
-    cause trashing as well.
-    </p>
-
-    <p>In many case, it may be easier to pinpoint a location in your
-    code after which a nested appender is no longer needed. If such a
-    location exists, even approximately, log from that location using
-    the <a
-    href="../apidocs/ch/qos/logback/classic/ClassicConstants.html#FINALIZE_SESSION_MARKER">FINALIZE_SESSION</a>
-    marker. Whenever SiftingAppender sees a logging event marked as
-    <code>FINALIZE_SESSION</code> it will end-of-life the associated
-    nested appender. Upon reaching its end-of-life, a nested appender
-    will linger for a few seconds to process any late coming events
-    (if any) and then will be closed.
-    </p>
-    
-    <pre class="prettyprint source">import org.slf4j.Logger;
-import static ch.qos.logback.classic.ClassicConstants.FINALIZE_SESSION_MARKER;
-
-  void job(String jobId) {
-   
-    MDC.put("jobId", jobId);
-    logger.info("Starting job.");
-
-    ... do whather the job needs to do
-    
-    // will cause the nested appender reach end-of-life. It will
-    // linger for a few seconds.
-    logger.info(FINALIZE_SESSION_MARKER, "About to end the job");
-
-    try {
-      .. perform clean up
-    } catch(Exception e);  
-      // This log statement will be handled by the lingering appender. 
-      // No new appender will be created.
-      logger.error("unexpected error while cleaning up", e);
-    }
-  }
-
-</pre>
-
-    <h3 class="doAnchor" name="AsyncAppender">AsyncAppender</h3>
+    <h3><a name="AsyncAppender"
+    href="#AsyncAppender">AsyncAppender</a></h3>
 
     <p>AsyncAppender logs <a
     href="../apidocs/ch/qos/logback/classic/spi/ILoggingEvent.html">ILoggingEvent</a>s
     asynchronously. It acts solely as an event dispatcher and must
     therefore reference another appender in order to do anything
-    useful.</p>
+    useful. In order to avoid loss of logging events, this appender
+    should be closed. It is the user's responsibility to close
+    appenders, typically at the end of the application lifecycle.
+    </p>
 
     <p><span class="label notice">Lossy by default if 80% full</span>
     AsyncAppender buffers events in a <a
@@ -3891,15 +3390,6 @@ import static ch.qos.logback.classic.ClassicConstants.FINALIZE_SESSION_MARKER;
     favorable effect on performance at the cost of event loss.
     </p>
 
-    <p><span class="label">Application stop/redeploy</span> Upon
-    application shutdown or redeploy, <code>AsyncAppender</code> must
-    be stopped in order to stop and reclaim the worker thread and to
-    flush the logging events from the queue. This can be achieved by
-    <a href="configuration.html#stopContext">stopping the
-    LoggerContext</a> which will close all appenders, including any
-    <code>AsyncAppender</code> instances.</p>
-
-
     <p>Here is the list of properties admitted by
     <code>AsyncAppender:</code></p>
 
@@ -3910,14 +3400,14 @@ import static ch.qos.logback.classic.ClassicConstants.FINALIZE_SESSION_MARKER;
         <th>Description</th>
       </tr>
 			<tr>
-        <td><span class="prop" container="async">queueSize</span></td>
+        <td><b><span class="prop">queueSize</span></b></td>
         <td><code>int</code></td>
         <td>The maximum capacity of the blocking queue. By default,
         <span class="prop">queueSize</span> is set to 256.
 				</td>
 			</tr>
       <tr>
-        <td><span class="prop" container="async">discardingThreshold</span></td>
+        <td><b><span class="prop">discardingThreshold</span></b></td>
         <td><code>int</code></td>
         <td>By default, when the blocking queue has 20% capacity
         remaining, it will drop events of level TRACE, DEBUG and INFO,
@@ -3927,7 +3417,7 @@ import static ch.qos.logback.classic.ClassicConstants.FINALIZE_SESSION_MARKER;
 			</td>
 			</tr>
       <tr>
-        <td><span class="prop" container="async">includeCallerData</span></td>
+        <td><b><span class="prop">includeCallerData</span></b></td>
         <td><code>boolean</code></td>
         <td>Extracting caller data can be rather expensive. To improve
         performance, by default, caller data associated with an event
@@ -3973,7 +3463,7 @@ import static ch.qos.logback.classic.ClassicConstants.FINALIZE_SESSION_MARKER;
     
     <p><span class="label notice">Lossy behavior</span> In light of
     the discussion above and in order to reduce blocking, by default,
-    when less than 20% of the queue capacity remains,
+    when less than 20% of the queue capacilty remains,
     <code>AsyncAppender</code> will drop events of level TRACE, DEBUG
     and INFO keeping only events of level WARN and ERROR. This
     strategy ensures non-blocking handling of logging events (hence
@@ -4007,8 +3497,8 @@ import static ch.qos.logback.classic.ClassicConstants.FINALIZE_SESSION_MARKER;
 </configuration></pre>
   
 
-		<h3 class="doAnchor" name="WriteYourOwnAppender">Writing your own
-		Appender</h3>
+		<h3><a name="WriteYourOwnAppender"
+		href="#WriteYourOwnAppender">Writing your own Appender</a></h3>
 
 
     <p>You can easily write your appender by subclassing
@@ -4021,11 +3511,8 @@ import static ch.qos.logback.classic.ClassicConstants.FINALIZE_SESSION_MARKER;
     <p>The <code>CountingConsoleAppender</code>, which we list next,
     appends a limited number of incoming events on the console. It
     shuts down after the limit is reached.  It uses a
-    <code>PatternLayoutEncoder</code> to format the events and accepts
-    a parameter named <code>limit</code>. Therefore, a few more
-    methods beyond <code>append(Object eventObject)</code> are
-    needed. As shown below, these parameters are handles
-    auto-magically by logback's various configuration mechanisms.
+    <code>Layout</code> to format the events and accepts a parameter.
+    Thus, a few more methods are needed.
     </p>
     
     <em>Example 4.<span class="autoExec"/>:
@@ -4033,68 +3520,54 @@ import static ch.qos.logback.classic.ClassicConstants.FINALIZE_SESSION_MARKER;
     (logback-examples/src/main/java/chapters/appenders/CountingConsoleAppender.java)</em>
     <pre class="prettyprint source">package chapters.appenders;
 
-import java.io.IOException;
-
-import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
-import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.AppenderBase;
+import ch.qos.logback.core.Layout;
 
 
 public class CountingConsoleAppender extends AppenderBase<ILoggingEvent> {
-  static int DEFAULT_LIMIT = 10;
+  static int DEFAULT_LIMIT = 16;
   int counter = 0;
   int limit = DEFAULT_LIMIT;
-  
-  PatternLayoutEncoder encoder;
-  
+
+  public CountingConsoleAppender() {
+  }
+
   public void setLimit(int limit) {
     this.limit = limit;
   }
 
   public int getLimit() {
     return limit;
-  }
+  }  
   
   @Override
   public void start() {
-    if (this.encoder == null) {
-      addError("No encoder set for the appender named ["+ name +"].");
+    if (this.layout == null) {
+      addError("No layout set for the appender named ["+ name +"].");
       return;
     }
     
-    try {
-      encoder.init(System.out);
-    } catch (IOException e) {
-    }
     super.start();
   }
 
   public void append(ILoggingEvent event) {
+
     if (counter >= limit) {
       return;
     }
+
     // output the events as formatted by our layout
-    try {
-      this.encoder.doEncode(event);
-    } catch (IOException e) {
-    }
+    System.out.print(this.layout.doLayout(event));
 
     // prepare for next event
     counter++;
   }
 
-  public PatternLayoutEncoder getEncoder() {
-    return encoder;
-  }
-
-  public void setEncoder(PatternLayoutEncoder encoder) {
-    this.encoder = encoder;
-  }
 }</pre>
 
 		<p>The <code>start()</code> method checks for the presence of a
-		<code>PatternLayoutEncoder</code>.  In case the encoder is not
-		set, the appender fails to start and emits an error message.
+		<code>Layout</code>.  In case the layout is not set, the appender
+		fails to start with an error message.
 		</p>
 		
 		<p>This custom appender illustrates two points:</p>
@@ -4102,11 +3575,10 @@ public class CountingConsoleAppender extends AppenderBase<ILoggingEvent> {
 		<ul>
 
       <li>All properties that follow the setter/getter JavaBeans
-      conventions are handled transparently by logback
-      configurators. The <code>start()</code> method, which is called
-      automatically during logback configuration, has the
-      responsibility of verifying that the various properties of the
-      appender are set and are coherent.
+      conventions are handled transparently. The <code>start()</code>
+      method, which is called automatically during logback
+      configuration, has the responsibility of verifying that the
+      various properties of the appender are coherent.
 			</li>
 
 			<li>The <code>AppenderBase.doAppend()</code> method invokes the
@@ -4126,7 +3598,8 @@ public class CountingConsoleAppender extends AppenderBase<ILoggingEvent> {
 		</p>
   
 
-		<h2 class="doAnchor" name="logback_access">Logback Access</h2>
+		<h2><a name="logback_access" href="#logback_access">Logback
+		Access</a></h2>
 		
 		<p>Most of the appenders found in logback-classic have their
 		equivalent in logback-access. These work essentially in the same
@@ -4134,8 +3607,8 @@ public class CountingConsoleAppender extends AppenderBase<ILoggingEvent> {
 		will cover their use.
 		</p>
 		
-		<h3 class="doAnchor" name="AccessSocketAppender">SocketAppender
-		and SSLSocketAppender</h3>
+  	<a name="AccessSocketAppender"/>
+		<h3>SocketAppender</h3>
 		
 		<p>The <a
 		href="../xref/ch/qos/logback/access/net/SocketAppender.html">
@@ -4146,56 +3619,22 @@ public class CountingConsoleAppender extends AppenderBase<ILoggingEvent> {
 		deserialization, the event can be logged as if it were generated
 		locally.
 		</p>
-		
-		<p>The <a href="../xref/ch/qos/logback/access/net/SSLSocketAppender.html">
-    <code>SSLSocketAppender</code></a> extends the basic 
-    <code>SocketAppender</code> allowing logging to a remote entity over
-    the Secure Sockets Layer (SSL).
-    </p>
-    
 		<p>
 			The properties of access' <code>SocketAppender</code> are the same as those available
 			for classic's <code>SocketAppender</code>.
 		</p>
 
-    <h3 class="doAnchor"
-    name="AccessServerSocketAppender">ServerSocketAppender and
-    SSLServerSocketAppender</h3>
-    
-    <p>Like <code>SocketAppender</code>, the <a
-    href="../xref/ch/qos/logback/access/net/server/ServerSocketAppender.html">
-    <code>ServerSocketAppender</code></a> is designed to log to a remote
-    entity by transmitting serialized <code>AccessEvent</code> objects
-    over the wire.  However, when using <code>ServerSocketAppender</code>
-    the appender acts as a server, passively listening on a TCP socket awaiting
-    inbound connections from interested clients.  Logging events delivered
-    to the appender are distributed to all connected clients.
-    </p>
-    
-    <p>The <a href="../xref/ch/qos/logback/access/net/server/SSLServerSocketAppender.html">
-    <code>SSLSocketAppender</code></a> extends the basic 
-    <code>ServerSocketAppender</code> allowing logging to a remote entity
-    over the Secure Sockets Layer (SSL).
-    </p>
-    
-    <p>The properties of access' <code>ServerSocketAppender</code> are
-    the same as those available for classic's
-    <code>ServerSocketAppender</code>.
-    </p>
-    
-	 	
-		<h3 class="doAnchor" name="AccessSMTPAppender">SMTPAppender</h3>
+	 	<a name="AccessSMTPAppender"></a>	
+		<h3>SMTPAppender</h3>
 		
-		<p>Access' <a
-		href="../xref/ch/qos/logback/access/net/SMTPAppender.html">
-		<code>SMTPAppender</code></a> works in the same way as its Classic
-		counterpart.  However, the <span class="prop">evaluator</span>
-		option is rather different.  By default, a
-		<code>URLEvaluator</code> object is used by
-		<code>SMTPAppender</code>. This evaluator contains a list of URLs
-		that are checked against the current request's URL. When one of
-		the pages given to the <code>URLEvaluator</code> is requested,
-		<code>SMTPAppender</code> sends an email.
+		<p>
+			Access' <a href="../xref/ch/qos/logback/access/net/SMTPAppender.html">
+			<code>SMTPAppender</code></a> works in the same way as its Classic counterpart.
+			However, the <span class="prop">evaluator</span> option is rather different. 
+			By default, a <code>URLEvaluator</code> object
+			is used by <code>SMTPAppender</code>. This evaluator contains a list of URLs that are
+			checked against the current request's URL. When one of the pages given to the
+			<code>URLEvaluator</code> is requested, <code>SMTPAppender</code> sends an email.
 		</p>
 		
 		<p>
@@ -4227,11 +3666,12 @@ public class CountingConsoleAppender extends AppenderBase<ILoggingEvent> {
 		included in the email.
 		</p>
 
-		<h3 class="doAnchor" name="AccessDBAppender">DBAppender</h3>
+		<a name="AccessDBAppender"></a>
+		<h3>DBAppender</h3>
 		
-		<p><a
-		href="../xref/ch/qos/logback/access/db/DBAppender.html"><code>DBAppender</code></a>
-		is used to insert the access events into a database.
+		<p>
+			<a href="../xref/ch/qos/logback/access/db/DBAppender.html"><code>DBAppender</code></a>
+			is used to insert the access events into a database.
 		</p>
 
 		<p>Two tables are used by <code>DBAppender</code>:
@@ -4386,8 +3826,8 @@ public class CountingConsoleAppender extends AppenderBase<ILoggingEvent> {
 </configuration></pre>
 
 
-    <h3 class="doAnchor"
-    name="AccessSiftingAppender">SiftingAppender</h3>
+    <h3><a name="AccessSiftingAppender"
+    href="#AccessSiftingAppender">SiftingAppender</a></h3>
    
     <p>The SiftingAppender in logback-access is quite similar to its
     logback-classic counterpart. The main difference is that in
@@ -4408,7 +3848,7 @@ public class CountingConsoleAppender extends AppenderBase<ILoggingEvent> {
     
     <p>Below is an example configuration file.</p>
 
-    <p class="example">Example: SiftingAppender configuration (logback-examples/src/main/java/chapters/appenders/conf/sift/access-siftingFile.xml)</p>
+    <p class="example">Example: SiftingAppender configuration (logback-examples/src/main/java/chapters/appenders/conf/sift/access-siftingFile.xml)</em>		
     
     <pre class="prettyprint source"><configuration>
   <appender name="SIFTING" class="ch.qos.logback.access.sift.SiftingAppender">
@@ -4419,8 +3859,8 @@ public class CountingConsoleAppender extends AppenderBase<ILoggingEvent> {
       <defaultValue>NA</defaultValue>
     </Discriminator>
     <sift>
-       <appender name="ch.qos.logback:logback-site:jar:1.1.2" class="ch.qos.logback.core.FileAppender">
-        <file>byUser/ch.qos.logback:logback-site:jar:1.1.2.log</file>
+       <appender name="ch.qos.logback:logback-site:jar:1.0.4" class="ch.qos.logback.core.FileAppender">
+        <file>byUser/ch.qos.logback:logback-site:jar:1.0.4.log</file>
         <layout class="ch.qos.logback.access.PatternLayout">
           <pattern>%h %l %u %t \"%r\" %s %b</pattern>
         </layout>
diff --git a/docs/manual/architecture.html b/docs/manual/architecture.html
index b093ca6..42df1c6 100644
--- a/docs/manual/architecture.html
+++ b/docs/manual/architecture.html
@@ -10,12 +10,10 @@
     <link rel="stylesheet" type="text/css" href="../css/_print.css" media="print" />
     <link rel="stylesheet" type="text/css" href="../css/prettify.css" media="screen" />
   </head>
-  <body onload="prettyPrint(); decorate();">
+  <body onload="prettyPrint()">
     <script type="text/javascript">prefix='../';</script>
     <script type="text/javascript" src="../js/prettify.js"></script>
-    <script type="text/javascript" src="../templates/header.js"></script>
-    <script type="text/javascript" src="../js/jquery-min.js"></script>
-    <script type="text/javascript" src="../js/decorator.js"></script>
+    <script src="../templates/header.js" type="text/javascript"></script>
     <div id="left">
       <noscript>Please turn on Javascript to view this menu</noscript>
       <script src="../templates/left.js" type="text/javascript"></script>
@@ -46,9 +44,8 @@
     <h2>Logback's architecture</h2>
 
     <p>Logback's basic architecture is sufficiently generic so as to
-    apply under different circumstances. At the present time, logback
-    is divided into three modules, logback-core, logback-classic and
-    logback-access.
+	apply under different circumstances. At the present time, logback is
+    	divided into three modules, Core, Classic and Access.
     </p>
 
     <p>The <em>core</em> module lays the groundwork for the other two
@@ -60,8 +57,8 @@
     such as log4j or java.util.logging (JUL) introduced in JDK
     1.4. The third module called <em>access</em> integrates with
     Servlet containers to provide HTTP-access log functionality. A
-    separate document covers <a href="../access.html">access module
-    documentation</a>.
+    separate document covers
+    <a href="../access.html">access module documentation</a>.
     </p>
 
     <p>In the remainder of this document, we will write "logback" to
@@ -84,7 +81,8 @@
 		loggers.
 		</p>
     
-    <h3 class="doAnchor" name="LoggerContext">Logger context</h3>
+    <h3><a name="LoggerContext" href="#LoggerContext">Logger
+    context</a></h3>
 
 		<p>The first and foremost advantage of any logging API over plain
 		<code>System.out.println</code> resides in its ability to disable
@@ -150,8 +148,9 @@ public interface Logger {
 
 
 
-    <h3 class="doAnchor" name="effectiveLevel">Effective Level aka
-    Level Inheritance </h3>
+    <h3><a name="effectiveLevel"
+			href="#effectiveLevel">Effective Level aka Level Inheritance</a>
+    </h3>
 
 		<p>Loggers may be assigned levels. The set of possible levels
 		(TRACE, DEBUG, INFO, WARN and ERROR) are defined in the
@@ -330,8 +329,8 @@ public interface Logger {
 		parent <code>X</code>, which has an assigned level.
 		</p>
 
-    <h3 class="doAnchor" name="basic_selection">Printing methods and
-    the basic selection rule</h3>
+    <h3><a name="basic_selection" href="#basic_selection">Printing
+    methods and the basic selection rule</a></h3>
 
 		<p>By definition, the printing method determines the level of a
 		logging request. For example, if <code>L</code> is a logger
@@ -548,9 +547,7 @@ Logger y = LoggerFactory.getLogger("wombat");</pre>
 		</p>
 		<div class="definition">
 
-			<h4 class="deftitle"><a name="additivity"
-			href="#additivity"><span class="anchor"/></a>Appender
-			Additivity</h4>
+			<div class="deftitle"><a name="additivity" href="#additivity">Appender Additivity</a></div>
 
 			<p>The output of a log statement of logger <em>L</em> will go to
 			all the appenders in <em>L</em> and its ancestors. This is the
@@ -660,9 +657,8 @@ Logger y = LoggerFactory.getLogger("wombat");</pre>
 		request. The text after the '-' is the message of the request.
 		</p>
 
-
-		<h3 class="doAnchor" name="parametrized">Parameterized
-		logging</h3>
+    <a name="ParametrizedLogging"></a>
+		<h3>Parameterized logging</h3>
 
 		<p>Given that loggers in logback-classic implement the <a
 		href="http://www.slf4j.org/api/org/slf4j/Logger.html">SLF4J's
@@ -839,38 +835,39 @@ logger.debug("Value {} was inserted between {} and {}.", paramArray);</pre>
          alt="underTheHoodSequence2_small.gif"/>
   </a>
 
-  
-  <h3 class="doAnchor" name="performance">Performance</h3>
+  <a name="Performance"></a>
+  <h3>Performance</h3>
 
   <p>One of the often-cited arguments against logging is its
-  computational cost.  This is a legitimate concern as even
-  moderately-sized applications can generate thousands of log
-  requests. Much of our development effort is spent measuring and
-  tweaking logback's performance.  Independently of these efforts, the
-  user should still be aware of the following performance issues.
+  computational cost.  This is a legitimate concern as even moderately
+  sized applications can generate thousands of log requests. Much
+  effort is spent measuring and tweaking logging performance.
+  Independently of these efforts, the user should still be aware of
+  the following performance issues.
   </p>
 
   <h4>1. Logging performance when logging is turned off entirely</h4>
 
-  <p>You can turn off logging entirely by setting the level of the
-  root logger to <code>Level.OFF</code>, the highest possible level.
-  When logging is turned off entirely, the cost of a log request
-  consists of a method invocation plus an integer comparison. On a
-  3.2Ghz Pentium D machine this cost is typically around 20
-  nanoseconds.
+  <p>
+    You can turn off logging entirely by setting the level of the root logger
+    to <code>Level.OFF</code>, the highest possible level. 
+    When logging is turned off entirely, 
+    the cost of a log request consists of a method invocation plus an 
+    integer comparison. On a 3.2Ghz Pentium D machine this cost is typically 
+    around 20 nanoseconds. 
   </p>
 
-  <p>However, any method invocation involves the "hidden" cost of
-  parameter construction.  For example, for some logger <em>x</em>
-  writing,
+  <p>
+    However, any method invocation involves the "hidden" cost of parameter construction. 
+    For example, for some logger <em>x</em> writing, 
   </p>
   
   <pre class="prettyprint source">x.debug("Entry number: " + i + "is " + entry[i]);</pre>
 
-  <p>incurs the cost of constructing the message parameter,
-  i.e. converting both integer <code>i</code> and
-  <code>entry[i]</code> to a string, and concatenating intermediate
-  strings, regardless of whether the message will be logged or not.
+  <p>
+    incurs the cost of constructing the message parameter, i.e. converting both 
+    integer <code>i</code> and <code>entry[i]</code> to a string, and concatenating 
+    intermediate strings, regardless of whether the message will be logged or not. 
   </p>
 
   <p>The cost of parameter construction can be quite high and depends
@@ -881,17 +878,21 @@ logger.debug("Value {} was inserted between {} and {}.", paramArray);</pre>
 
   <pre class="prettyprint source">x.debug("Entry number: {} is {}", i, entry[i]);</pre>
 
-  <p>This variant will not incur the cost of parameter
-  construction. Compared to the previous call to the
-  <code>debug()</code> method, it will be faster by a wide margin.
-  The message will be formatted only if the logging request is to be
-  sent to attached appenders. Moreover, the component that formats
-  messages is highly optimized.
+  <p>
+    This variant will not incur the cost of parameter
+    construction. Compared to the previous call to the
+    <code>debug()</code> method, it will be faster by a very wide
+    margin.  The message will be formatted only if the request is
+    processed to the appenders.  If it is processed, the component
+    that formats the message offers high performance and does not
+    negatively impact the overall process.  It takes 2
+    and 4 microseconds respectively to format a message with 1 and 3 parameters.
   </p>
 
-  <p>Notwithstanding the above placing log statements in tight loops,
-  i.e. very frequently invoked code, is a lose-lose proposal, likely
-  to result in degraded performance.  Logging in tight loops will slow
+  <p> Please notice that, despite the performance points just
+  discussed, inserting logging statements in tight loops (very
+  frequently invoked code) is a lose-lose proposal and is likely to
+  result in degraded performance.  Logging in tight loops will slow
   down your application even if logging is turned off, and if logging
   is turned on, will generate massive (and hence useless) output.
   </p>
@@ -899,14 +900,15 @@ logger.debug("Value {} was inserted between {} and {}.", paramArray);</pre>
   <h4>2. The performance of deciding whether to log or not to log when
   logging is turned on.</h4>
 
-  <p>In logback, there is no need to walk the logger hierarchy. A
-  logger knows its effective level (that is, its level, once level
-  inheritance has been taken into consideration) when it is
-  created. Should the level of a parent logger be changed, then all
-  child loggers are contacted to take notice of the change. Thus,
-  before accepting or denying a request based on the effective level,
-  the logger can make a quasi-instantaneous decision, without needing
-  to consult its ancestors.
+  <p>
+    In logback, there is no need to walk the logger hierarchy. A
+    logger knows its effective level (that is, its level, once level
+    inheritance has been taken into consideration) when it is
+    created. Should the level of a parent logger be changed, then all
+    child loggers are contacted to take notice of the change. Thus,
+    before accepting or denying a request based on the effective
+    level, the logger can make a quasi-instantaneous decision,
+    without needing to consult its ancestors.
   </p>
 
 
diff --git a/docs/manual/configuration.html b/docs/manual/configuration.html
index ef4474b..525d88d 100644
--- a/docs/manual/configuration.html
+++ b/docs/manual/configuration.html
@@ -12,15 +12,12 @@
     <link rel="stylesheet" type="text/css" href="../css/prettify.css" media="screen" />
 
   </head>
-  <body onload="prettyPrint(); decorate();">
+  <body onload="prettyPrint()">
 
     <script type="text/javascript">prefix='../'</script>
     <script type="text/javascript" src="../js/prettify.js"></script>
     <script src="../templates/header.js" type="text/javascript"></script>
     <script type="text/javascript" src="../js/dsl.js"></script>
-    <script type="text/javascript" src="../js/jquery-min.js"></script>
-    <script type="text/javascript" src="../js/decorator.js"></script>
-
     <div id="left">
       <noscript>Please turn on Javascript to view this menu</noscript>
       <script src="../templates/left.js" type="text/javascript"></script>
@@ -45,15 +42,25 @@
     <script src="../templates/creative.js" type="text/javascript"></script>
 
 
-    <p>We start by presenting ways for configuring logback, with many
-    example configuration scripts.  Joran, the configuration framework
-    upon which logback relies will be presented in <a
-    href="onJoran.html">a later chapter</a>.
+    <p>Joran stands for a cold north-west wind which, every now and
+    then, blows forcefully on Lake Geneva. Located right in the middle
+    of Europe, Lake Geneva happens to be the continent's largest
+    sweet water reserve.
+    </p>
+
+    <p>In the first part, we start by presenting ways for configuring
+    logback, with many example configuration scripts.  In the <a
+    href="#Joran">second part</a>, we present Joran, a generic
+    configuration framework, which you can put into use in order to
+    configure your own applications.
     </p>
 
 
-    <h2 class="doAnchor" name="auto_configuration">Configuration in
-    logback</h2>
+    <h2>    
+      <a name="auto_configuration" href="#auto_configuration">
+        Configuration in logback
+      </a>
+    </h2>
     
     <p>Inserting log requests into the application code requires a
     fair amount of planning and effort. Observation shows that
@@ -123,8 +130,7 @@
     </p>
 
 
-    <h3 class="doAnchor" name="automaticConf">Automatically
-    configuring logback</h3>
+    <h3><a name="automaticConf" href="#automaticConf">Automatically configuring logback</a></h3>
 
     <p>The simplest way to configure logback is by letting logback
     fall back to its default configuration. Let us give a taste of how
@@ -258,25 +264,23 @@ public class Foo {
    directory accessible from the class path. Running the <em>MyApp1</em>
    application should give identical results to its previous run.</p>
 
-   <h4 class="doAnchor" name="automaticStatusPrinting">Automatic
-   printing of status messages in case of warning or errors</h4>
+   <h4><a name="automaticStatusPrinting"
+   href="#automaticStatusPrinting">Automatic printing of status
+   messages in case of warning or errors</a></h4>
 
    <p class="highlight">If warning or errors occur during the parsing
    of the configuration file, logback will automatically print its
    internal status messages on the console.</p>
- 
+
    <p>If warnings or errors occur during the parsing of the
-   configuration file, logback will automatically print its internal
-   status data on the console. Note that to avoid duplication,
-   automatic status printing is disabled if the user explicitly
-   registers a status listener (defined below).</p>
-
-   <p>In the absence of warnings or errors, if you still wish to
-   inspect logback's internal status, then you can instruct logback to
-   print status data by invoking the <code>print()</code> of the
-   <code>StatusPrinter</code> class. The <em>MyApp2</em> application
-   shown below is identical to <em>MyApp1</em> except for the addition
-   of two lines of code for printing internal status data.</p>
+   configuration file, logback will automatically print status data on
+   the console. In the absence of warnings or errors, if you still
+   wish to inspect logback's internal status, then you can instruct
+   logback to print status data by invoking the <code>print()</code>
+   of the <code>StatusPrinter</code> class. The <em>MyApp2</em>
+   application shown below is identical to <em>MyApp1</em> except for the
+   addition of two lines of code for printing internal status
+   data.</p>
 
     <p class="example">Example: Print logback's internal status
     information <a
@@ -333,7 +337,7 @@ public class Foo {
    <span class="asGroovy" onclick="return asGroovy('sample1');">View as .groovy</span>
 
    <pre id="sample1" class="prettyprint source">
-<configuration <span class="big bold">debug="true"</span>> 
+<configuration <b>debug="true"</b>> 
 
   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
     <!-- encoders are  by default assigned the type
@@ -375,35 +379,39 @@ public class Foo {
    of status messages, tracking down a rogue <em>logback.xml</em>
    configuration file can be difficult, especially in production where
    the application source cannot be easily modified. To help identify
-   the location of a rogue configuration file, you can set a
-   <code>StatusListener</code> via the "logback.statusListenerClass"
-   system property (<a href="#logback.statusLC">defined below</a>) to
-   force output of status messages. The "logback.statusListenerClass"
-   system property can also be used to silence output automatically
-   generated in case of errors.
+   the location of a rogue configuration file, you can set the <span
+   class="prop">logback.debug</span> system property to
+   <code>true</code> to force printing internal status messages on the
+   console regardless of the value of the <span
+   class="attr">debug</span> attribute found within the
+   <code><configuration></code> element, in any configuration file,
+   including in the rogue <em>logback.xml</em> file.
    </p>
 
-   <h3 class="doAnchor" name="configFileProperty">Specifying the
-   location of the default configuration file as a system
-   property</h3>
-
-   <p>You may specify the location of the default configuration file
-   with a system property named
-   <code>"logback.configurationFile"</code>. The value of this
+   <p>As of version 1.0.1, setting the <span class="attr">debug</span>
+   attribute is equivalent to registering an
+   <code>OnConsoleStatusListener</code> with the
+   <code>StatusManager</code>. Thus, problems occurring during the
+   lifetime of your application, well after logback is initialized,
+   can be reported.  Refer to the section on <a
+   href="#statusListener">status listeners</a> further below.</p>
+
+   <h3><a name="configFileProperty"
+   href="#configFileProperty">Specifying the location of the default
+   configuration file as a system property</a></h3>
+
+   <p>If you wish, you can specify the location of the default
+   configuration file with a system property named
+   <code>logback.configurationFile</code>. The value of this
    property can be a URL, a resource on the class path or a path to a
    file external to the application.
    </p>
 
    <p class="source">java <b>-Dlogback.configurationFile=/path/to/config.xml</b> chapters.configuration.MyApp1</p>
 
-   <p>Note that the file extension must be ".xml" or ".groovy". Other
-   extensions are ignored. <a href="#logback.statusLC">Explicitly
-   registering a status listener</a> may help debugging issues
-   locating the configuration file.</p>
 
-
-   <h3 class="doAnchor" name="autoScan">Automatically reloading
-   configuration file upon modification</h3>
+   <h3><a name="autoScan" href="#autoScan">Automatically reloading
+   configuration file upon modification</a></h3>
 
    <p class="highlight">Logback-classic can scan for changes in its
    configuration file and automatically reconfigure itself when the
@@ -465,11 +473,6 @@ public class Foo {
    <code>myLogger</code> is disabled for the DEBUG level.
    </p>
 
-   <p class="highlight">When a configuration file changes, it will be
-   automatically reloaded but only after several logger invocations
-   and after a delay determined by the scanning period.
-   </p>
-
    <p>Given that <code>ReconfigureOnChangeFilter</code> is invoked
    every time <em>any</em> logger is invoked, regardless of logger
    level, <code>ReconfigureOnChangeFilter</code> is absolutely
@@ -479,7 +482,7 @@ public class Foo {
    <code>ReconfigureOnChangeFilter</code> is in reality "alive" only
    once every <em>N</em> logging operations.  Depending on how often
    your application logs, the value of <em>N</em> can be modified on
-   the fly by logback. By default N is 16, although it can go as high
+   the fly by logback. By default N is 16, altough it can go as high
    as 2^16 (= 65536) for CPU-intensive applications.
    </p>
    
@@ -490,8 +493,8 @@ public class Foo {
 
    
 
-   <h3 class="doAnchor" name="joranDirectly">Invoking
-   <code>JoranConfigurator</code> directly</h3>
+   <h3><a name="joranDirectly" href="#joranDirectly">Invoking
+   <code>JoranConfigurator</code> directly</a></h3>
 
    <p>Logback relies on a configuration library called Joran, part of
    logback-core. Logback's default configuration mechanism invokes
@@ -552,8 +555,11 @@ public class MyApp3 {
    errors. Note that for multi-step configuration,
    <code>context.reset()</code> invocation should be omitted.</p>
 
-   <h3 class="doAnchor" name="viewingStatusMessages">Viewing status
-   messages </h3>
+   <h3><a name="viewingStatusMessages"
+   href="#viewingStatusMessages">Viewing status messages</a>
+   </h3>
+
+
 
    <p>Logback collects its internal status data in a <code><a
    href="../xref/ch/qos/logback/core/status/StatusManager.html">StatusManager</a></code>
@@ -596,8 +602,12 @@ public class MyApp3 {
    the URL <code>http://host/yourWebapp/lbClassicStatus</code>
    </p>
 
-   <h3 class="doAnchor" name="statusListener">Listening to status
-   messages</h3>
+   <h3>
+     <a name="statusListener" href="#statusListener">Listening to
+     status messages</a>
+   </h3>
+
+
 
    <p>You may also attach a <code>StatusListener</code> to a
    <code>StatusManager</code> so that you can take immediate action in
@@ -644,10 +654,6 @@ public class MyApp3 {
   ... the rest of the configuration file  
 </configuration></pre>
 
-   <h3 class="doAnchor"
-   name="logback.statusLC">"logback.statusListenerClass" system
-   property</h3>
-
    <p>One may also register a status listener by setting the
    "logback.statusListenerClass" Java system property to the name of
    the listener class you wish to register. For example,
@@ -655,51 +661,10 @@ public class MyApp3 {
 
    <p class="source">java <b>-Dlogback.statusListenerClass</b>=ch.qos.logback.core.status.OnConsoleStatusListener ...</p>
    
-   <p>Logback ships with several status listener implementations. <a
-   href="../xref/ch/qos/logback/core/status/OnConsoleStatusListener.html">OnConsoleStatusListener</a>
-   prints incoming status messages on the console, i.e. on
-   System.out. <a
-   href="../xref/ch/qos/logback/core/status/OnErrorConsoleStatusListener.html">OnErrorConsoleStatusListener</a>
-   prints incoming status messages on System.err. <a
-   href="../xref/ch/qos/logback/core/status/NopStatusListener.html">NopStatusListener</a>
-   drops incoming status messages.</p>
-   
-
-   <p>Note that <a href="#automaticStatusPrinting">automatic status
-   printing</a> (in case of errors) is disabled if any status listener
-   is registered during configuration and in particular if the user
-   specifies a status listener via the "logback.statusListenerClass"
-   system. Thus, by setting <code>NopStatusListener</code> as a status
-   listener, you can silence internal status printing altogether. </p>
-   
-   <p class="source">java <b>-Dlogback.statusListenerClass</b>=ch.qos.logback.core.status.NopStatusListener ...</p>
 
-
-   <h3 class="doAnchor" name="stopContext">Stopping
-   logback-classic</h3>
-
-   <p>In order to release the resources used by logback-classic, it is
-   always a good idea to stop the logback context. Stopping the
-   context will close all appenders attached to loggers defined by the
-   context and stop any active threads.
-   </p>
-
-<pre class="prettyprint lang-java source">
-import org.sflf4j.LoggerFactory;
-import ch.qos.logback.classic.LoggerContext;
-...
-
-// assume SLF4J is bound to logback-classic in the current environment
-<b>LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();</b>
-<b>loggerContext.stop();</b></pre>
-
-   <p>In web-applications, such code would be invoked from within the
-   <a
-   href="http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContextListener.html#contextDestroyed(javax.servlet.ServletContextEvent)">contextDestroyed</a>
-   method of <code>ServletContextListener</code> in order to stop
-   logback-classic and release resources.
-
-   <h2 class="doAnchor" name="syntax">Configuration file syntax</h2>
+   <h2>
+     <a name="syntax" href="#syntax">Configuration file syntax</a>
+   </h2>
 
    <p>As you have seen thus far in the manual with plenty of examples
    still to follow, logback allows you to redefine logging behavior
@@ -738,9 +703,10 @@ import ch.qos.logback.classic.LoggerContext;
     href="http://en.wikipedia.org/wiki/CamelCase">camelCase
     convention</a> which is almost always the correct convention.</p>
 
-    <h4 class="doAnchor" name="caseSensitivity">Case sensitivity of
-    tag names</h4>
+    <h4><a name="caseSensitivity" href="#caseSensitivity">Case
+    sensitivity of tag names</a></h4>
    
+
     <p>Since logback version 0.9.17, tag names pertaining to explicit
     rules are case insensitive.  For example, <code><logger></code>, <code><Logger></code> and
     <code><LOGGER></code> are valid configuration elements and will
@@ -761,8 +727,9 @@ import ch.qos.logback.classic.LoggerContext;
     is almost always the correct convention.
     </p>
 
-    <h4 class="doAnchor" name="loggerElement">Configuring loggers, or
-    the <code><logger></code> element</h4>
+    <h4><a name="loggerElement"
+    href="#loggerElement">Configuring loggers, or the
+    <code><logger></code> element</a></h4>
 
     <p>At this point you should have at least some understanding of <a
     href="architecture.html#effectiveLevel">level inheritance</a> and
@@ -787,22 +754,18 @@ import ch.qos.logback.classic.LoggerContext;
     it should inherit its level.
     </p>
 
-    <p class="highlight"> Note that unlike log4j, logback-classic does
-    <em>not</em> close nor remove any previously referenced appenders
-    when configuring a given logger.
-    </p>
-
     <p>The <code><logger></code> element may contain zero or more
     <code><appender-ref></code> elements; each appender thus
-    referenced is added to the named logger. Note that unlike log4j,
-    logback-classic does <em>not</em> close nor remove any previously
-    referenced appenders when configuring a given logger.
+    referenced is added to the named logger. Note that unlike
+    log4j, logback-classic does <em>not</em> close or remove any
+    previously referenced appenders before adding the new appender
+    reference.
     </p>
 
 
 
-   <h4 class="doAnchor" name="rootElement">Configuring the root
-   logger, or the <code><root></code> element</h4>
+   <h4><a name="rootElement" href="#rootElement">Configuring the root
+   logger, or the <code><root></code> element</a></h4>
 
    <p>The <code><root></code> element configures the root
    logger. It supports a single attribute, namely the <span
@@ -815,16 +778,15 @@ import ch.qos.logback.classic.LoggerContext;
    root logger cannot be set to INHERITED or NULL.
    </p>
 
-   <p class="highlight">Note that unlike log4j, logback-classic does
-   <em>not</em> close nor remove any previously referenced appenders
-   when configuring the root logger.</p>
 
-   <p> Similarly to the <code><logger></code> element, the
-   <code><root></code> element may contain zero or more
-   <code><appender-ref></code> elements; each appender thus
-   referenced is added to the root logger. Note that unlike log4j,
-   logback-classic does <em>not</em> close nor remove any previously
-   referenced appenders when configuring the root logger.  </p>
+   <p> Similarly to the
+   <code><logger></code> element, the <code><root></code>
+   element may contain zero or more <code><appender-ref></code>
+   elements; each appender thus referenced is added to the root
+   logger. Note that unlike log4j, logback-classic does
+   <em>not</em> close or remove any previously referenced appenders
+   before adding the new appender reference to the root logger.
+   </p>
 
    <h4>Example</h4>
 
@@ -1032,8 +994,8 @@ import ch.qos.logback.classic.LoggerContext;
   - even if the Java source code does not directly refer to it.
   </p>
 
-  <h4 class="doAnchor" name="configuringAppenders">Configuring
-  Appenders</h4>
+  <h4><a name="configuringAppenders"
+  href="#configuringAppenders">Configuring Appenders</a></h4>
 
   <p>An appender is configured with the <code><appender></code>
   element, which takes two mandatory attributes <span
@@ -1129,7 +1091,7 @@ import ch.qos.logback.classic.LoggerContext;
   means for sharing encoders or layouts.
   </p>
 
-  <h4 class="doAnchor" name="cumulative">Appenders accumulate
+  <h4><a name="cumulative" href="#cumulative">Appenders accumulate</a>
   </h4>
 
   <p>By default, <b>appenders are cumulative</b>: a logger will log to
@@ -1222,8 +1184,11 @@ import ch.qos.logback.classic.LoggerContext;
   children will go into the <em>myApp.log</em> file.
   </p>
 	
-  <h4 class="doAnchor" name="overrridingCumulativity">Overriding the
-  default cumulative behaviour</h4>
+  <h4>
+    <a name="overrridingCumulativity" href="#overrridingCumulativity">
+      Overriding the default cumulative behaviour
+    </a>
+  </h4>
 
   <p>In case the default cumulative behavior turns out to be
   unsuitable for your needs, you can override it by setting the
@@ -1273,8 +1238,8 @@ import ch.qos.logback.classic.LoggerContext;
   <em>foo.log</em> file and only in that file.
   </p>
 
-  <h3 class="doAnchor" name="contextName">Setting the context
-  name</h3>
+
+  <h3><a name="contextName" href="#contextName">Setting the context name</a></h3>
 
   <p>As mentioned <a href="architecture.html#LoggerContext">in an
   earlier chapter</a>, every logger is attached to a logger
@@ -1312,51 +1277,65 @@ import ch.qos.logback.classic.LoggerContext;
   
   <!-- =============================================================== -->
  
-  <h3 class="doAnchor" name="variableSubstitution">Variable
-  substitution</h3>
 
-  <p><span class="label">Note</span> Earlier versions of this document
-  used the term "property substitution" instead of the term
-  "variable". Please consider both terms interchangeable although the
-  latter term conveys a clearer meaning.
-  </p>
+  <h3><a name="variableSubstitution"
+  href="#variableSubstitution">Property substitution</a></h3>
 
-  <p>As in many scripting languages, logback configuration files
-  support definition and substitution of variables. Variables can be
-  defined within the configuration file itself, in an external file,
-  in an external resource or even computed and <a
-  href="#definingPropsOnTheFly">defined on the fly</a>. 
+  <p>As in many scripting languages, logback configuration files support
+  definition and substitution of properties. Properties can be defined
+  within the configuration file itself, in an external file, in an
+  external resource or even computed and <a
+  href="#definingPropsOnTheFly">defined on the fly</a>.
   </p>
 
-  <p class="highlight">Variable substitution can occur at any point in
-  a configuration file where a value can be specified.</p>
-
-  <p>Variable substitution can occur at any point in a configuration
-  file where a value can be specified. The syntax of variable
-  substitution is similar to that of Unix shells. The string between
-  an opening <em>${</em> and closing <em>}</em> is interpreted as a
-  reference to the <em>value</em> of the property.  For property
-  <em>aName</em>, the string "${aName}" will be replaced with the
-  value held by the <em>aName</em> property.
+  <p>Property substitution can occur at any point where a value can be
+  specified. The syntax of property substitution is similar to that of
+  Unix shells. The string between an opening <em>${</em> and closing
+  <em>}</em> is interpreted as a reference to the <em>value</em> of
+  the property.  For property <em>aKey</em>, the string "${aKey}" will
+  be replaced with the value held by the <em>aKey</em> property.
   </p>
 
-  <p>Variables have a <a href="#scopes">scope</a> (see below).</p>
+  <p>A property can be defined in <em>local scope</em> (the default),
+  in <em>context scope</em>, or in <em>system scope</em>. Local scope
+  is the default.  A property with local scope exists from the point
+  of its definition until the end of configuration. A property with
+  context scope is inserted into the context and lasts as long as the
+  context or until it is cleared.  Once defined, a property in
+  context scope is part of the context. As such, it is available in
+  all logging events, including those sent to remote hosts via
+  serialization. A property with system scope is inserted into the
+  JVM's system properties and lasts as long as the JVM or until it is
+  cleared.
+  </p>
 
   <p>As they often come in handy, the HOSTNAME and CONTEXT_NAME
-  variables are automatically defined and have context scope.</p>
+  properties are automatically defined and have context scope.</p>
 
-   <h4 class="doAnchor" name="definingProps">Defining variables</h4>
+  <p class="highlight">Properties are looked up in the the local
+  scope first, in the context scope second, in the system properties
+  scope third, and in the OS environment last.
+  </p>
+
+  <p>During substitution, properties are looked up in the local scope
+  first, in the context scope second, in the system properties scope
+  third, and in the <a
+  href="http://download.oracle.com/javase/tutorial/essential/environment/env.html">OS
+  environment</a> fourth and last.
+  </p>
 
-  <p>Variables can be defined one at a time in the configuration file
+ 
+  <h4><a name="definingProps" href="#definingProps">Defining
+  properties</a></h4>
+
+  <p>Properties can be defined one at a time in the configuration file
   itself or loaded wholesale from an external properties file or an
-  external resource. For historical reasons, the XML element for
-  defining variables is <code><property></code> although in
-  logback 1.0.7 and later the element <code><variable></code> can
-  be used interchangeably.</p>
-
-  <p>The next example shows a variable declared at the beginning of
-  the configuration file. It is then used further down the file to
-  specify the location of the output file.
+  external resource.</p>
+
+  <p>The next example shows a variable, a.k.a. a substitution
+  property, declared at the beginning of the configuration file. It is
+  then used further down the file to specify the location of the
+  output file.
   </p>
 
   <p class="example">Example: Simple Variable substitution
@@ -1383,7 +1362,7 @@ import ch.qos.logback.classic.LoggerContext;
   <p>The next example shows the use of a System property to achieve
   the same result. The property is not declared in the configuration
   file, thus logback will look for it in the System properties. Java
-  system properties can be set on the command line as shown next:
+  system properties can be set on the command line.
   </p>
   
   <p class="source">java -DUSER_HOME="/home/sebastien" MyApp2</p>
@@ -1435,8 +1414,9 @@ import ch.qos.logback.classic.LoggerContext;
 
    <p>This configuration file contains a reference to a file named
    <em>variables1.properties</em>.  The variables contained in that
-   file will be read and then defined within local scope. Here is what
-   the <em>variable.properties</em> file might look like.
+   file will be read and then defined within the context of the
+   logback configuration file. Here is what the
+   <em>variable.properties</em> file might look like.
    </p>
 
    <em>Example: Variable file
@@ -1464,67 +1444,26 @@ import ch.qos.logback.classic.LoggerContext;
 </configuration></pre>
 
 
-   <h4 class="doAnchor" name="scopes">Scopes</h4>
-
-   <p>A property can be defined for insertion in <em>local scope</em>,
-   in <em>context scope</em>, or in <em>system scope</em>. Local scope
-   is the default. Although it is possible to read variables from the
-   OS environment, it is not possible to write into the OS
-   environment.</p>
-
-
-   <p><span class="label">local scope</span> A property with local
-   scope exists from the point of its definition in a configuration
-   file until the end of interpretation/execution of said
-   configuration file. As a corollary, each time a configuration file
-   is parsed and executed, variables in local scope are defined
-   anew.</p>
-
-   <p><span class="label">context scope</span> A property with context
-   scope is inserted into the context and lasts as long as the context
-   or until it is cleared.  Once defined, a property in context scope
-   is part of the context. As such, it is available in all logging
-   events, including those sent to remote hosts via serialization. 
-   </p>
-
-   <p><span class="label">system scope</span> A property with system
-   scope is inserted into the JVM's system properties and lasts as
-   long as the JVM or until it is cleared.
-   </p>
- 
-   <p class="highlight">Properties are looked up in the the local
-   scope first, in the context scope second, in the system properties
-   scope third, and in the OS environment last.
-   </p>
-
-   <p>During substitution, properties are looked up in the local scope
-   first, in the context scope second, in the system properties scope
-   third, and in the <a
-   href="http://docs.oracle.com/javase/tutorial/essential/environment/env.html">OS
-   environment</a> fourth and last.
-   </p>
+   <h4>Scopes</h4>
 
    <p>The <span class="attr">scope</span> attribute of the
-   <code><property></code> element, <code><define></code>
-   element or the <code><insertFromJNDI></code> element can be used
-   to set the scope of a property. The <span class="attr">scope</span>
-   attribute admits "local", "context" and "system" strings as
-   possible values. If not specified, the scope is always assumed to
-   be "local".
+   <code><property></code> element can be used to set the scope of
+   properties. The <span class="attr">scope</span> attribute admit the
+   "local", "context" and "system" strings as possible values.
    </p>
 
-   <p class="example">Example: A variable defined in "context" scope
-   (logback-examples/src/main/java/chapters/configuration/contextScopedVariable.xml)
-   </p>
+  <p class="example">Example: Simple Variable substitution
+  (logback-examples/src/main/java/chapters/configuration/variableSubstitution4.xml)
+  </p>
 
   <span class="asGroovy" onclick="return
-  asGroovy('contextScopedVariable');">View as .groovy</span>
-  <pre id="contextScopedVariable" class="prettyprint source"><configuration>
+  asGroovy('variableSubstitution4');">View as .groovy</span>
+  <pre id="variableSubstitution4" class="prettyprint source"><configuration>
 
-  <property <b class="big">scope="context"</b> name="nodeId" value="firstNode" />
+  <property <b class="big">scope="context"</b> name="nodeId" value="node1" />
 
   <appender name="FILE" class="ch.qos.logback.core.FileAppender">
-    <b><file>/opt/${nodeId}/myApp.log</file></b>
+    <b><file>/opt/${noteId}/myApp.log</file></b>
     <encoder>
       <pattern>%msg%n</pattern>
     </encoder>
@@ -1539,28 +1478,10 @@ import ch.qos.logback.classic.LoggerContext;
    defined in the context scope, it will be available in every logging
    event, even those sent to remote hosts via serialization.</p>
 
+   <h4>Nested variable substitution</h4>
 
-  <h3 class="doAnchor" name="defaultValuesForVariables">Default values
-  for variables</h3>
-
-  <p>Under certain circumstances, it may be desirable for a variable
-  to have a default value if it is not declared or its value is
-  null. As in the <a
-  href="http://tldp.org/LDP/abs/html/parameter-substitution.html">Bash
-  shell</a>, default values can be specified using the <b>":-"</b>
-  operator. For example, assuming the variable named <em>aName</em> is
-  not defined, <code>"${aName<b>:-golden</b>}"</code> will be
-  interpreted as "golden".</p>
-
-   <h3 class="doAnchor" name="nestedSubst">Nested variables</h3>
-
-   <p>Variable nesting is fully supported. Both the name,
-   default-value and value definition of a variable can reference
-   other variables.</p>
-
-
-   <h4>value nesting</h4>
-   <p>The value definition of a variable can contain references to
+   <p>Nested variable substitution is also supported. By nested, we
+   mean that the value definition of a variable contains references to
    other variables. Suppose you wish to use variables to specify not
    only the destination directory but also the file name, and combine
    those two variables in a third variable called "destination". The
@@ -1599,40 +1520,35 @@ fileName=myApp.log
   </root>
 </configuration></pre>
 
+  <h3><a name="defaultValuesForVariables"
+  href="#defaultValuesForVariables">Default substitution values for
+  variables</a></h3>
 
-   <h4>name nesting</h4>
-
-   <p>When referencing a variable, the variable name may contain a
-   reference to another variable. For example, if the variable named
-   "userid" is assigned the value "alice", then
-   "${${userid}.password}" references the variable with the name
-   "alice.password".</p>
-
-   <h4>default value nesting</h4>
-
-   <p>The default value of a variable can reference a another
-   variable.  For example, assuming the variable 'id' is unassigned
-   and the variable 'userid' is assigned the value "alice", then the
-   expression "${id<b>:-</b>${userid}}" will return "alice".
-   </p>
+  <p>Under certain circumstances, it may be desirable for a variable
+  to have a default value if it is not declared or its value is
+  null. As in the <a
+  href="http://tldp.org/LDP/abs/html/parameter-substitution.html">Bash
+  shell</a>, default values can be specified using the <b>":-"</b>
+  operator. For example, assuming <em>aKey</em> is not defined,
+  <code>"${aKey<b>:-golden</b>}"</code> will be interpreted as
+  "golden".</p>
 
 
-  <!-- ==============================================================
-       -->
-  <h3 class="doAnchor" name="hostname">HOSTNAME property</h3>
+  <!-- ============================================================== -->
+  <h3><a name="hostname" href="#hostname">HOSTNAME property</a></h3>
 
   <p>As it often comes in handy, the <code>HOSTNAME</code> property is
-  defined automatically during configuration with context scope.</p>
+  defined automatically during configuration.</p>
 
   <!-- ============================================================== -->
-  <h3 class="doAnchor" name="context_name">CONTEXT_NAME property</h3>
+  <h3><a name="context_name" href="#context_name">CONTEXT_NAME property</a></h3>
 
-  <p>As its name indicates, the <code>CONTEXT_NAME</code> property
-  corresponds to the name of the current logging context.</p>
+  <p>When a context is asked for a property named
+  <code>CONTEXT_NAME</code> it returns with its own name.</p>
 
   <!-- ============================================================== -->
   
-  <h3 class="doAnchor" name="timestamp">Setting a timestamp</h3>
+  <h3><a name="timestamp" href="#timestamp">Setting a timestamp</a></h3>
 
   <p>The <em>timestamp</em> element can define a property according to
   current date and time. The <em>timestamp</em> element is <a
@@ -1640,8 +1556,9 @@ fileName=myApp.log
   chapter</a>.</p>
 
   <!-- ============================================================== -->
-  <h3 class="doAnchor" name="definingPropsOnTheFly">Defining
-  properties on the fly</h3>
+  <h3><a name="definingPropsOnTheFly"
+  href="#definingPropsOnTheFly">Defining properties on the
+  fly</a></h3>
 
   <p>You may define properties dynamically using the
   <code><define></code> element. The define element takes two
@@ -1653,9 +1570,7 @@ fileName=myApp.log
   href="../xref/ch/qos/logback/core/spi/PropertyDefiner.html">PropertyDefiner</a>
   interface. The value returned by the <code>getPropertyValue</code>()
   method of the <code>PropertyDefiner</code> instance will be the
-  value of the named property. You may also specify a <a
-  href="#scopes">scope</a> for the named property by specifying a
-  <span class="attr">scope</span> attribute.
+  value of the named property.
   </p>
 
   <p>Here is an example.</p>
@@ -1663,56 +1578,21 @@ fileName=myApp.log
   <pre class="prettyprint source"><configuration>
 
   <define name="rootLevel" class="a.class.implementing.PropertyDefiner">
-    <shape>round</shape>
-    <color>brown</color>
-    <size>24</size>
+    <aProperty>of a.class.implementing.PropertyDefiner</aProperty>
   </define>
- 
+  
   <root level="${rootLevel}"/>
 </configuration></pre>
 
-  <p>In the above example, shape, color and size are properties of
-  "a.class.implementing.PropertyDefiner". As long as there is a setter
-  for a given property in your implementation of the
-  <code>PropertyDefiner</code> instance, logback will inject the
-  appropriate values as specified in the configuration file. </p>
-
- 
-
-  <p>At the present time, logback does ships with two fairly simple
-  implementations of <code>PropertyDefiner</code>.  
+  <p>At the present time, logback does not ship with any classes
+  implementing <code>PropertyDefiner</code>. We merely provide an
+  extension point so that you may define properties dynamically.
   </p>
 
-  <table class="bodyTable striped">
-    <tr>
-      <th>Implementation name</th>
-      <th>Description</th>
-    </tr>
-
-    <tr>
-      <td><a
-      href="../apidocs/ch/qos/logback/core/property/FileExistsPropertyDefiner.html"><code>FileExistsPropertyDefiner</code></a>
-      </td>
-      <td>Set the named variable to "true" if the file specified by
-      <span class="prop">path</span> property exists, to "false"
-      otherwise.
-      </td>
-    </tr>
-    <tr>
-      <td><a
-      href="../apidocs/ch/qos/logback/core/property/FileExistsPropertyDefiner.html"><code>ResourceExistsPropertyDefiner</code></a>
-      </td>
-      <td>Set the named variable to "true" if the <span
-      class="prop">resource</span> specified by the user is available
-      on the class path, to "false" otherwise.
-      </td>
-    </tr>
-  </table>
-
   <!-- ============================================================== -->
 
-  <h3 class="doAnchor" name="conditional">Conditional processing of
-  configuration files</h3>
+  <h3><a name="conditional" href="#conditional">Conditional
+  processing of configuration files</a></h3>
   
   <p>Developers often need to juggle between several logback
   configuration files targeting different environments such as
@@ -1763,7 +1643,7 @@ fileName=myApp.log
   <code>isNull()</code> method is provided. Example:
   <code>isNull("k")</code>.</p>
 
-  <pre class="prettyprint source"><configuration debug="true">
+  <pre class="prettyprint source"><configuration>
 
   <b><if condition='property("HOSTNAME").contains("torino")'></b>
     <b><then></b>
@@ -1803,16 +1683,14 @@ fileName=myApp.log
 
   <!-- ============================================================== -->
 
-   <h3 class="doAnchor" name="insertFromJNDI">Obtaining variables from
-   JNDI</h3>
+   <h3><a name="insertFromJNDI" href="#insertFromJNDI">Obtaining
+   variables from JNDI</a></h3>
 
    <p>Under certain circumstances, you may want to make use of
    env-entries stored in JNDI. The <code><insertFromJNDI></code>
    configuration directive extracts an env-entry stored in JNDI and
-   inserts the property in local scope with key specified by the <span
-   class="attr">as</span> attribute. As all properties, it is possible
-   to insert the new property into a <a href="#scopes">different
-   scope</a> with the help of the <em>scope</em> attribute.
+   inserts it as a variable whose key is as specified by the <span
+   class="attr">as</span> attribute.
    </p>
 
    <p class="example">Example: Insert as properties env-entries
@@ -1842,7 +1720,8 @@ fileName=myApp.log
   directive.
   </p>
 
-  <h3 class="doAnchor" name="fileInclusion">File inclusion</h3>
+  <h3><a name="fileInclusion" href="#fileInclusion">File
+  inclusion</a></h3>
 
   <p>Joran supports including parts of a configuration file from
   another file. This is done by declaring a <code><include></code>
@@ -1908,18 +1787,9 @@ fileName=myApp.log
     </li>
   </ul>
 
-  <p>If it cannot find the file to be included, logback will complain
-  by printing a status message.  In case the included file is
-  optional, you can suppres the error message by setting <span
-  class="attr">optional</span> attribute to <code>true</code> in the
-  <code><include></code> element.</p>
-
-
-  <pre class="prettyprint source"><include optional="true" ..../></pre>
 
   <!-- ==================== ContextListener =================== -->
-  <h2 class="doAnchor" name="contextListener">Adding a context
-  listener</h2>
+  <h2><a name="contextListener" href="#contextListener">Adding a context listener</a></h2>
 
   <p>Instances of the <a
   href="../xref/ch/qos/logback/classic/spi/LoggerContextListener.html">LoggerContextListener</a>
@@ -1933,8 +1803,8 @@ fileName=myApp.log
   href="jmxConfig.html">subsequent chapter</a>.
   </p>
 
-  <h3 class="doAnchor"
-  name="LevelChangePropagator">LevelChangePropagator</h3>
+  <h3><a name="LevelChangePropagator"
+  href="#LevelChangePropagator">LevelChangePropagator</a></h3>
 
   <p>As of version 0.9.25, logback-classic ships with <a
   href="../xref/ch/qos/logback/classic/jul/LevelChangePropagator.html">LevelChangePropagator</a>,
@@ -1953,7 +1823,7 @@ fileName=myApp.log
 
   <p>The contextListener element can be used to install <code>LevelChangePropagator</code> as shown next.</p>
   
-  <pre class="prettyprint source"><configuration debug="true">
+  <pre class="prettyprint source"><configuration debug="false">
   <b><contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator"/></b>
   .... 
 </configuration></pre>
@@ -1963,7 +1833,7 @@ fileName=myApp.log
   of all j.u.l. loggers. However, previously installed handlers will be
   left untouched.</p>
 
-  <pre class="prettyprint source"><configuration debug="true">
+  <pre class="prettyprint source"><configuration debug="false">
   <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
     <b><resetJUL>true</resetJUL></b>
   </contextListener>
diff --git a/docs/manual/encoders.html b/docs/manual/encoders.html
index 3b359c7..66ea9e0 100644
--- a/docs/manual/encoders.html
+++ b/docs/manual/encoders.html
@@ -9,12 +9,10 @@
     <link rel="stylesheet" type="text/css" href="../css/_print.css" media="print" />
     <link rel="stylesheet" type="text/css" href="../css/prettify.css" media="screen" />
   </head>
-  <body onload="prettyPrint(); decorate();">
+  <body onload="prettyPrint()">
     <script type="text/javascript">prefix='../';</script>
     <script type="text/javascript" src="../js/prettify.js"></script>
-    <script type="text/javascript" src="../templates/header.js" ></script>
-    <script type="text/javascript" src="../js/jquery-min.js"></script>
-    <script type="text/javascript" src="../js/decorator.js"></script>
+    <script src="../templates/header.js" type="text/javascript"></script>
     <div id="left">      
       <noscript>Please turn on Javascript to view this menu</noscript>
       <script src="../templates/left.js" type="text/javascript"></script>
@@ -40,7 +38,7 @@
     <script src="../templates/setup.js" type="text/javascript"></script>
 
 
-    <h2 class="doAnchor">What is an encoder</h2>
+    <h2>What is an encoder</h2>
 
     <p>Encoders are responsible for transforming an event into a byte
     array as well as writing out that byte array into an
@@ -55,7 +53,8 @@
     longer take a layout</a>.
     </p>
 
-    <p>Why the breaking change?</p>
+    <p>Why the breaking change?
+    </p>
 
     <p>Layouts, as discussed in detail in the next chapter, are only
     able to transform an event into a String. Moreover, given that a
@@ -73,7 +72,8 @@
     needless complexity. However, we hope that with the advent of new
     and powerful encoders this impression will change.</p>
 
-    <h2 class="doAnchor" name="interface">Encoder interface</h2>
+    <h2><a name="interface" href="#interface">Encoder
+    interface</a></h2>
 
     <p>Encoders are responsible for transforming an incoming event
     into a byte array <b>and</b> writing out the resulting byte array
@@ -117,8 +117,8 @@ public interface Encoder<E> extends ContextAware, LifeCycle {
     accomplished with these methods.
     </p>
 
-
-    <h2 class="doAnchor">LayoutWrappingEncoder</h2>
+    <h2><a name="LayoutWrappingEncoder"
+    href="#LayoutWrappingEncoder">LayoutWrappingEncoder</a></h2>
 
     <p>Until logback version 0.9.19, many appenders relied on the
     Layout instances to control the format of log output. As there
@@ -172,7 +172,8 @@ public class LayoutWrappingEncoder<E> extends EncoderBase<E> {
     </p>
     
 
-    <h2 class="doAnchor">PatternLayoutEncoder</h2>
+    <h2><a name="PatternLayoutEncoder"
+    href="#PatternLayoutEncoder">PatternLayoutEncoder</a></h2>
 
     <p>Given that <code>PatternLayout</code> is the most commonly used
     layout, logback caters for this common use-case with
@@ -190,7 +191,7 @@ public class LayoutWrappingEncoder<E> extends EncoderBase<E> {
     logback error codes</a>.
     </p>
 
-     <h4 class="doAnchor" name="immediateFlush"><span class="prop">immediateFlush</span> property</h4>
+     <h4><span class="prop">immediateFlush</span> property</h4>
 
      <p>As a sub-class of <a
      href="../xref/ch/qos/logback/core/encoder/LayoutWrappingEncoder.html"><code>LayoutWrappingEncoder</code></a>,
@@ -223,8 +224,7 @@ public class LayoutWrappingEncoder<E> extends EncoderBase<E> {
 </appender></pre>
 
 
-    <h4 class="doAnchor" name="outputPatternAsHeader">Output pattern
-    string as header</h4>
+    <h4><a name="outputPatternAsHeader" href="#outputPatternAsHeader">Output pattern string as header</a></h4>
 
     <p>In order to facilitate parsing of log files, logback can insert
     the pattern used for the log output at the top of log files.  This
diff --git a/docs/manual/filters.html b/docs/manual/filters.html
index fc15ae5..f5e26f2 100644
--- a/docs/manual/filters.html
+++ b/docs/manual/filters.html
@@ -11,14 +11,11 @@
     <link rel="stylesheet" type="text/css" href="../css/prettify.css" media="screen" /> 
 
   </head>
-  <body onload="prettyPrint(); decorate();">
+  <body onload="prettyPrint()">
     <script type="text/javascript">prefix='../';</script>
     <script type="text/javascript" src="../js/prettify.js"></script>
-    <script type="text/javascript" src="../templates/header.js"></script>
+    <script src="../templates/header.js" type="text/javascript"></script>
     <script type="text/javascript" src="../js/dsl.js"></script>
-    <script type="text/javascript" src="../js/jquery-min.js"></script>
-    <script type="text/javascript" src="../js/decorator.js"></script>
-
     <div id="left">
       <noscript>Please turn on Javascript to view this menu</noscript>
       <script src="../templates/left.js" type="text/javascript"></script>
@@ -62,7 +59,7 @@
 		and turbo filters.
 		</p>
 		
-    <h3 class="doAnchor" name="filter">Regular filters</h3>
+    <h3><a name="filter" href="#filter">Regular filters</a></h3>
 
 		<p>Regular logback-classic filters extend the <a
 		href="../xref/ch/qos/logback/core/filter/Filter.html"><code>Filter</code></a>
@@ -96,8 +93,7 @@
     of day or any other part of the logging event.
     </p>
     
-		<h3 class="doAnchor" name="yourOwnFilter">Implementing your own
-		Filter</h3>
+		<h3>Implementing your own Filter</h3>
 		
 		<p>Creating your own filter is easy. All you have to do is extend
 		the <code>Filter</code> abstract class and implement the
@@ -118,7 +114,7 @@ import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.filter.Filter;
 import ch.qos.logback.core.spi.FilterReply;
 
-public class SampleFilter extends Filter<ILoggingEvent> {
+public class SampleFilter extends Filter>ILoggingEvent> {
 
   @Override
   public FilterReply decide(ILoggingEvent event) {    
@@ -180,7 +176,7 @@ public class SampleFilter extends Filter<ILoggingEvent> {
     <code>AbstractMatcherFilter</code>.
     </p>
 		
-		<h3 class="doAnchor" name="levelFilter">LevelFilter</h3>
+		<h3><a name="levelFilter" href="#levelFilter">LevelFilter</a></h3>
 		
 		<p><a href="../xref/ch/qos/logback/classic/filter/LevelFilter.html">
 		<code>LevelFilter</code></a> filters events based on exact level
@@ -212,7 +208,7 @@ public class SampleFilter extends Filter<ILoggingEvent> {
   </root>
 </configuration></pre>
 
-    <h3 class="doAnchor" name="thresholdFilter">ThresholdFilter</h3>
+   <h3><a name="thresholdFilter" href="#thresholdFilter">ThresholdFilter</a></h3>
 
 		<p>The <a
 		href="../xref/ch/qos/logback/classic/filter/ThresholdFilter.html">
@@ -246,7 +242,8 @@ public class SampleFilter extends Filter<ILoggingEvent> {
 </configuration></pre>
 
 
-    <h2 class="doAnchor" name="evalutatorFilter">EvaluatorFilter</h2>
+    <h2><a name="evalutatorFilter"
+    href="#evalutatorFilter">EvaluatorFilter</a></h2>
 
     <p><a
     href="../xref/ch/qos/logback/core/filter/EvaluatorFilter.html"><code>EvaluatorFilter</code></a>
@@ -270,7 +267,8 @@ public class SampleFilter extends Filter<ILoggingEvent> {
 
     <!-- ======================== GEventEvaluator ========================= -->
 
-    <h3 class="doAnchor" name="GEventEvaluator">GEventEvaluator</h3>
+    <h3><a name="GEventEvaluator"
+    href="#GEventEvaluator">GEventEvaluator</a></h3>
     
     <p><a
     href="../xref/ch/qos/logback/classic/boolex/GEventEvaluator.html">GEventEvaluator</a>
@@ -283,7 +281,7 @@ public class SampleFilter extends Filter<ILoggingEvent> {
     unprecedented flexibility in event
     filtering. <code>GEventEvaluator</code> requires the Groovy
     runtime. Please see the <a
-    href="../setup.html#groovy">corresponding section</a> of
+    href="../setup.html#gEventEvaluator">corresponding section</a> of
     the setup document on adding the Groovy runtime to your class
     path.
     </p>
@@ -318,8 +316,9 @@ public class SampleFilter extends Filter<ILoggingEvent> {
     <b><filter class="ch.qos.logback.core.filter.EvaluatorFilter">      
       <evaluator class="ch.qos.logback.classic.boolex.GEventEvaluator"> 
         <expression>
-           e.level.toInt() >= WARN.toInt() &amp;&amp;  <!-- Stands for && in XML -->
-           !(e.mdc?.get("req.userAgent") =~ /Googlebot|msnbot|Yahoo/ )
+           e.level.toInt() >= WARN.toInt()
+             &amp;&amp;  <!-- Stands for && in XML -->
+           !(e.mdc?.get("req.userAgent") ~= /Googlebot|msnbot|Yahoo/ )
         </expression>
       </evaluator>
       <OnMismatch>DENY</OnMismatch>
@@ -360,8 +359,8 @@ public class SampleFilter extends Filter<ILoggingEvent> {
 
     <!-- ==================== JaninoEventEvaluator ======================== -->
     
-    <h3 class="doAnchor"
-    name="JaninoEventEvaluator">JaninoEventEvaluator</h3>
+    <h3><a name="JaninoEventEvaluator"
+    href="#JaninoEventEvaluator">JaninoEventEvaluator</a></h3>
     
 
     <p>Logback-classic ships with another concrete
@@ -647,7 +646,7 @@ java chapters.filters.FilterEvents src/main/java/chapters/filters/basicConfigura
 </evaluator></pre>
 
 
- 	  <h2 class="doAnchor" name="matcher">Matchers</h2>
+ 	  <h2><a name="matcher" href="#matcher">Matchers</a></h2>
 
     <p>While it is possible to do pattern matching by invoking the <a
     href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html#matches%28java.lang.String%29">matches()</a>
@@ -712,7 +711,7 @@ java chapters.filters.FilterEvents src/main/java/chapters/filters/basicConfigura
     <!-- ===================== TURBO FILTER ============================= -->
     <!-- ================================================================ -->
 
-    <h2 class="doAnchor" name="TurboFilter">TurboFilters</h2>
+    <h2><a name="TurboFilter" href="#TurboFilter">TurboFilters</a></h2>
     
     <p><code>TurboFilter</code> objects all extend the
     	<a href="../xref/ch/qos/logback/classic/turbo/TurboFilter.html">
@@ -741,8 +740,7 @@ java chapters.filters.FilterEvents src/main/java/chapters/filters/basicConfigura
     </p>
 
    	
-   	<h3 class="doAnchor" name="yourOwnTurboFilter">Implementing your
-   	own TurboFilter</h3>
+   	<h3>Implementing your own TurboFilter</h3>
     
     <p>To create your own <code>TurboFilter</code> component, just
     extend the <code>TurboFilter</code> abstract class. As previously,
@@ -937,8 +935,8 @@ public class SampleTurboFilter extends TurboFilter {
 
 
 		  
-    <h3 class="doAnchor"
-    name="DuplicateMessageFilter">DuplicateMessageFilter</h3>
+    <h3><a name="DuplicateMessageFilter"
+    href="#DuplicateMessageFilter">DuplicateMessageFilter</a></h3>
 
     <p>The <code>DuplicateMessageFilter</code> merits a separate
     presentation.  This filter detects duplicate messages, and beyond
@@ -1033,7 +1031,7 @@ logger.debug("Hello {}.", name1);</pre>
     because only 5 repetitions are allowed by default.
     </p>
 
-    <h1 class="doAnchor" name="logbac-access">In logback-access</h1>
+    <h1><a name="logbac-access" href="#logback-access">In logback-access</a></h1>
     
     <p>Logback-access offers most of the features available with
     logback-classic. In particular, <code>Filter</code> objects are
@@ -1047,8 +1045,8 @@ logger.debug("Hello {}.", name1);</pre>
     additional filters, please contact the logback-dev mailing list.
     </p>
 
-		<h2 class="doAnchor"
-		name="countingFilter"><code>CountingFilter</code></h2>
+		<h2><a name="countingFilter"
+		href="#countingFilter"><code>CountingFilter</code></a></h2>
 		
 		<p>With the help of <a
 		href="xref/ch/qos/logback/access/filter/CountingFilter.html"><code>CountingFilter</code></a>
@@ -1087,8 +1085,8 @@ logger.debug("Hello {}.", name1);</pre>
 
     <img alt="CountingFilter via jconsole" src="images/chapters/filters/countingFilter.png" />
 	
-
-    <h3 class="doAnchor" name="access_EvalutorFilter">EvaluatorFilter</h3>
+    <h3><a name="access_EvalutorFilter"
+    href="#access_EvalutorFilter"><code>EvaluatorFilter</code></a></h3>
 
     
     <p><a
diff --git a/docs/manual/groovy.html b/docs/manual/groovy.html
index 7d34167..196e9de 100644
--- a/docs/manual/groovy.html
+++ b/docs/manual/groovy.html
@@ -12,15 +12,12 @@
     <link rel="stylesheet" type="text/css" href="../css/prettify.css" media="screen" />
 
   </head>
-  <body onload="prettyPrint(); decorate();">
+  <body onload="prettyPrint()">
 
     <script type="text/javascript">prefix='../'</script>
     <script type="text/javascript" src="../js/prettify.js"></script>
+    <script src="../templates/header.js" type="text/javascript"></script>
     <script type="text/javascript" src="../js/dsl.js"></script>
-    <script type="text/javascript" src="../templates/header.js"></script>
-    <script type="text/javascript" src="../js/jquery-min.js"></script>
-    <script type="text/javascript" src="../js/decorator.js"></script>
-
     <div id="left">
       <noscript>Please turn on Javascript to view this menu</noscript>
       <script src="../templates/left.js" type="text/javascript"></script>
@@ -30,7 +27,7 @@
     </div>
     <div id="content" class="chapter">
       
-    <h1>Chapter 12: Groovy Configuration</h1>
+      <h1>Chapter 12: Groovy Configuration</h1>
       
       <div class="quote">
       <p><em>It is better to be a human being dissatisfied than a pig
@@ -67,7 +64,7 @@
     </p>
 
 
-    <h2 class="doAnchor">General philosophy</h2>
+    <h2>General philosophy</h2>
     
     <p>As a general rule, <em>logback.groovy</em> files are Groovy
     programs. And since Groovy is a super-set of Java, whatever
@@ -91,43 +88,7 @@
     (GStrings), and if-else statements are available in
     <em>logback.groovy</em> files.</p>
 
-    <h2 class="doAnchor">Automatic imports</h2>
-
-    <p><span class="label">Since 1.0.10</span> In order to reduce
-    unnecessary boilerplate several common types and packages are
-    imported automatically.  Thus, as long as you are only configuring
-    built-in appenders, layouts etc. you do not need to add the
-    corresponding import statement into your script. You will need
-    them for types not covered by the default imports, of course.</p>
-
-    <p>Here is the list of default imports:</p>
-
-    <ul>
-      <li><span class="code">import ch.qos.logback.core.*;</span></li>
-      <li><span class="code">import ch.qos.logback.core.encoder.*;</span></li>
-      <li><span class="code">import ch.qos.logback.core.read.*;</span></li>
-      <li><span class="code">import ch.qos.logback.core.rolling.*;</span></li>
-      <li><span class="code">import ch.qos.logback.core.status.*;</span></li>
-      <li><span class="code">import ch.qos.logback.classic.net.*;</span></li>
-      <li><span class="code">import ch.qos.logback.classic.encoder.PatternLayoutEncoder;</span></li>
-    </ul>
-
-    <p>In addition, all constants in <span
-    class="code">ch.qos.logback.classic.Level</span> are statically
-    imported as is (uppercase) and as lowercased aliases. It follows
-    that your scripts can reference both <em>INFO</em> or
-    <em>info</em> without a static import statement.</p>
-
-
-    <h2 class="doAnchor" name="sift">SiftingAppender no longer supported</h2>
-
-    <p><span class="label">Since version 1.0.12</span>
-    <code>SiftingAppender</code> is no longer supported within groovy
-    configuration files. However, in case there is demand, it may be
-    re-introduced.</p>
-
-    <h2 class="doAnchor" name="entensions">Extensions specific to
-    <em>logback.groovy</em></h2>
+    <h2>Extensions specific to <em>logback.groovy</em></h2>
 
     <p><span class="green">Essentially, <em>Logback.groovy</em> syntax
     consists of half a dozen methods described next; in the reverse
@@ -136,8 +97,6 @@
     exception: appenders MUST be defined before they can be attached
     to a logger.</p>
 
-    
-
     <!-- ========================================================== -->
 
     <h3> • <span class="code">root(Level level, List<String> appenderNames = [])</span></h3>
@@ -151,12 +110,16 @@
 
     <p>To set the level of the root logger to WARN, you would write:</p>
 
-    <pre class="prettyprint source">root(WARN)</pre>
+    <pre class="prettyprint source">import static ch.qos.logback.classic.Level.WARN
+
+root(WARN)</pre>
 
     <p>To set the level of the root logger to INFO, and attach 
     appenders named "CONSOLE" and "FILE" to root, you would write:</p>
 
-    <pre class="prettyprint source">root(INFO, ["CONSOLE", "FILE"])</pre>
+    <pre class="prettyprint source">import static ch.qos.logback.classic.Level.INFO
+
+root(INFO, ["CONSOLE", "FILE"])</pre>
 
     <p>In the previous example, it is assumed that the appenders named
     "CONSOLE" and "FILE" were already defined. Defining appenders will
@@ -185,18 +148,24 @@
     <p>For example, the following script sets the level of the
     "com.foo" logger to INFO.</p>
 
-       <pre class="prettyprint source">logger("com.foo", INFO)</pre>
+       <pre class="prettyprint source">import static ch.qos.logback.classic.Level.INFO
+
+logger("com.foo", INFO)</pre>
 
     <p>The next script sets the level of the "com.foo" logger to
     DEBUG, and attaches the appender named "CONSOLE" to it.</p>
 
-  <pre class="prettyprint source">logger("com.foo", DEBUG, ["CONSOLE"])</pre>
+  <pre class="prettyprint source">import static ch.qos.logback.classic.Level.DEBUG
+
+logger("com.foo", DEBUG, ["CONSOLE"])</pre>
     
-   <p>The next script is similar to the previous one, except that it
+   <p>The next script is similiar to the previous one, except that it
    also sets the the additivity flag of the "com.foo" logger to
    false.</p>
 
-  <pre class="prettyprint source">logger("com.foo", DEBUG, ["CONSOLE"], false)</pre>
+  <pre class="prettyprint source">import static ch.qos.logback.classic.Level.DEBUG
+
+logger("com.foo", DEBUG, ["CONSOLE"], false)</pre>
 
 
     <!-- ========================================================== -->
@@ -227,7 +196,12 @@
     %logger - %msg%n". The appender is then attached to the root
     logger.</p>
 
-    <pre class="prettyprint source">appender("FILE", FileAppender) {
+    <pre class="prettyprint source">import ch.qos.logback.classic.encoder.PatternLayoutEncoder 
+import ch.qos.logback.core.FileAppender
+
+import static ch.qos.logback.classic.Level.DEBUG
+
+appender("FILE", FileAppender) {
   file = "testFile.log"
   append = true
   encoder(PatternLayoutEncoder) {
@@ -263,7 +237,13 @@ root(DEBUG, ["FILE"])</pre>
     class="option">file</span> property.
     </p>
 
-<pre class="prettyprint source"><b>def bySecond = timestamp("yyyyMMdd'T'HHmmss")</b>
+<pre class="prettyprint source">import
+ch.qos.logback.classic.encoder.PatternLayoutEncoder import
+ch.qos.logback.core.FileAppender
+
+import static ch.qos.logback.classic.Level.DEBUG
+
+<b>def bySecond = timestamp("yyyyMMdd'T'HHmmss")</b>
 
 appender("FILE", FileAppender) {
   <b>file = "log-${bySecond}.txt"</b>
@@ -285,8 +265,12 @@ root(DEBUG, ["FILE"])</pre>
     </p>
 
     <pre class="prettyprint source">
+import ch.qos.logback.classic.encoder.PatternLayoutEncoder
+import ch.qos.logback.core.ConsoleAppender
 import chapters.layouts.MySampleConverter
 
+import static ch.qos.logback.classic.Level.DEBUG
+
 conversionRule("sample", MySampleConverter)
 appender("STDOUT", ConsoleAppender) {
   encoder(PatternLayoutEncoder) {
@@ -329,7 +313,7 @@ root(DEBUG, ["STDOUT"])</pre>
     <code>statusListener</code> method and passing a listener class as
     an argument. Here is an example:</p>
 
-    <pre class="prettyprint source">import chapters.layouts.MySampleConverter
+    <pre class="prettyprint source">import ch.qos.logback.core.status.OnConsoleStatusListener
 
 <b>// We highly recommended that you always add a status listener just</b>
 <b>// after the last import statement and before all other statements</b>
@@ -338,35 +322,11 @@ root(DEBUG, ["STDOUT"])</pre>
     <p><a href="configuration.html#statusListener">Status listeners</a> were described in an earlier
     chapter.</p>
 
-    <h3>• <span class="code">jmxConfigurator(String name)</span></h3>
 
-    <p>You can register a <a href="jmxConfig.html"><code>JMXConfigurator</code></a>
-    MBean with this method. Invoke it without any parameters to use Logback's
-    default ObjectName
-    (<code>ch.qos.logback.classic:Name=default,Type=ch.qos.logback.classic.jmx.JMXConfigurator</code>)
-    for the registered MBean:</p>
-
-    <pre class="prettyprint source">jmxConfigurator()</pre>
-
-    <p>To change the value of the <code>Name</code> key to something other than "default",
-    simply pass in a different name as the parameter for the <code>jmxConfigurator</code>
-    method:</p>
-
-    <pre class="prettyprint source">jmxConfigurator('MyName')</pre>
-
-    <p>If you want define the ObjectName completely, use the same syntax but
-    pass in a valid ObjectName string representation as the parameter:</p>
-
-    <pre class="prettyprint source">jmxConfigurator('myApp:type=LoggerManager')</pre>
-
-    <p>The method will first attempt to use the parameter as an ObjectName,
-    and falls back to treating it as the value for the "Name" key if it doesn't
-    represent a valid ObjectName.</p>
 
     <!-- ========================================================== -->
 
-    <h2 class="doAnchor" name="internalDSL">Internal DSL, i.e. it's
-    all groovy baby!</h2>
+    <h2>Internal DSL, i.e. it's all groovy baby!</h2>
 
     <p>The <em>logback.groovy</em> is an internal DSL meaning that its
     contents are executed as a Groovy script. Thus, all the usual
@@ -379,14 +339,19 @@ root(DEBUG, ["STDOUT"])</pre>
     </p>
 
 
-    <h3 class="doAnchor" name="varedef">Variable definitions and
-    GStrings</h3>
+    <h3>Variable definitions and GStrings</h3>
 
     <p>You can define variables anywhere within a
     <em>logback.groovy</em> file, then use the variable within a
     GString. Here is an example.</p>
 
-    <pre class="prettyprint source">// define the USER_HOME variable setting its value 
+    <pre class="prettyprint source">import ch.qos.logback.classic.encoder.PatternLayoutEncoder
+import ch.qos.logback.core.FileAppender
+
+import static ch.qos.logback.classic.Level.DEBUG
+
+
+// define the USER_HOME variable setting its value 
 // to that of the "user.home" system property
 <b>def USER_HOME = System.getProperty("user.home")</b>
 
@@ -400,12 +365,17 @@ appender("FILE", FileAppender) {
 root(DEBUG, ["FILE"])</pre>
 
 
-    <h3 class="doAnchor" name="printing">Printing on the console</h3>
+    <h3>Printing on the console</h3>
 
     <p>You can invoke Groovy's <code>println</code> method to print on
     the console. Here is an example.</p>
 
-    <pre class="prettyprint source">def USER_HOME = System.getProperty("user.home");
+    <pre class="prettyprint source">import ch.qos.logback.classic.encoder.PatternLayoutEncoder
+import ch.qos.logback.core.FileAppender
+
+import static ch.qos.logback.classic.Level.DEBUG
+
+def USER_HOME = System.getProperty("user.home");
 <b>println "USER_HOME=${USER_HOME}"</b>
 
 appender("FILE", FileAppender) {
@@ -418,10 +388,9 @@ appender("FILE", FileAppender) {
 root(DEBUG, ["FILE"])</pre>
 
 
-   <h3 class="doAnchor" name="automaticallyExported">Automatically
-   exported fields</h3>
+   <h3>Automatically exported fields</h3>
 
-   <h4 class="doAnchor" name="hostname">'hostname' variable</h4>
+   <h4><a name="hostname" href="#hostname">'hostname' variable</a></h4>
 
    <p>The 'hostname' variable contains the name of the current
    host. However, due to scoping rules that the authors cannot fully
@@ -430,7 +399,12 @@ root(DEBUG, ["FILE"])</pre>
    point across.
    </p>
 
- <pre class="prettyprint source">// will print "hostname is x" where x is the current host's name
+ <pre class="prettyprint source">import ch.qos.logback.classic.encoder.PatternLayoutEncoder
+import ch.qos.logback.core.ConsoleAppender
+
+import static ch.qos.logback.classic.Level.DEBUG
+
+// will print "hostname is x" where x is the current host's name
 println "Hostname is ${hostname}"
 
 appender("STDOUT", ConsoleAppender) {
@@ -442,7 +416,12 @@ appender("STDOUT", ConsoleAppender) {
    you need to define another variable and assign it the value of
    'hostname' as shown next.</p>
 
- <pre class="prettyprint source">// define HOSTNAME by assigning it hostname
+ <pre class="prettyprint source">import ch.qos.logback.classic.encoder.PatternLayoutEncoder
+import ch.qos.logback.core.ConsoleAppender
+
+import static ch.qos.logback.classic.Level.DEBUG
+
+// define HOSTNAME by assigning it hostname
 def HOSTNAME=hostname
 // will print "hostname is x" where x is the current host's name
 println "Hostname is ${HOSTNAME}"
@@ -453,8 +432,8 @@ appender("STDOUT", ConsoleAppender) {
 }</pre>
 
 
-   <h3 class="doAnchor" name="everythingIsContext">Everything is
-   context aware with a reference to the current context</h3>
+   <h3>Everything is context aware with a reference to the current
+   context</h3>
 
    <p>The execution of the <em>logback.groovy</em> script is done
    within the scope of a <a
@@ -465,7 +444,13 @@ appender("STDOUT", ConsoleAppender) {
    <code>addError</code>() methods to send status messages to the
    context's <code>StatusManager</code>.</p>
 
-   <pre class="prettyprint source">// always a good idea to add an on console status listener
+   <pre class="prettyprint source">import ch.qos.logback.classic.encoder.PatternLayoutEncoder
+import ch.qos.logback.core.FileAppender
+import ch.qos.logback.core.status.OnConsoleStatusListener
+
+import static ch.qos.logback.classic.Level.DEBUG
+
+// always a good idea to add an on console status listener
 statusListener(OnConsoleStatusListener)
 
 // set the context's name to wombat
@@ -488,7 +473,7 @@ appender("FILE", FileAppender) {
 root(DEBUG, ["FILE"])</pre>
 
 
-   <h3 class="doAnchor">Conditional configuration</h3>
+   <h3>Conditional configuration</h3>
    
    <p>Given that Groovy is a fully-fledged programming language,
    conditional statements allow for a single <em>logback.groovy</em>
@@ -500,7 +485,15 @@ root(DEBUG, ["FILE"])</pre>
    output directory of the rolling file appender also depends on the
    host.</p>
    
-   <pre class="prettyprint source">// always a good idea to add an on console status listener
+   <pre class="prettyprint source">import ch.qos.logback.classic.encoder.PatternLayoutEncoder
+import ch.qos.logback.core.rolling.RollingFileAppender
+import ch.qos.logback.core.rolling.TimeBasedRollingPolicy
+import ch.qos.logback.core.ConsoleAppender
+import ch.qos.logback.core.status.OnConsoleStatusListener
+
+import static ch.qos.logback.classic.Level.INFO
+
+// always a good idea to add an on console status listener
 statusListener(OnConsoleStatusListener)
 
 def appenderList = ["ROLLING"]
diff --git a/docs/manual/images/chapters/receivers/serverSocketReceiver.png b/docs/manual/images/chapters/receivers/serverSocketReceiver.png
deleted file mode 100644
index 4aaa504..0000000
Binary files a/docs/manual/images/chapters/receivers/serverSocketReceiver.png and /dev/null differ
diff --git a/docs/manual/images/chapters/receivers/socketReceiver.png b/docs/manual/images/chapters/receivers/socketReceiver.png
deleted file mode 100644
index dbd79ec..0000000
Binary files a/docs/manual/images/chapters/receivers/socketReceiver.png and /dev/null differ
diff --git a/docs/manual/index.html b/docs/manual/index.html
index acd9bbd..a165a2f 100644
--- a/docs/manual/index.html
+++ b/docs/manual/index.html
@@ -112,14 +112,6 @@
           <a href="migrationFromLog4j.html"><b>Chapter 13: Migration from log4j</b></a>
         </p></li>
 
-        <li><p>
-          <a href="receivers.html"><b>Chapter 14: Receivers</b></a>
-        </p></li>
-
-        <li><p>
-          <a href="usingSSL.html"><b>Chapter 15: Using SSL</b></a>
-        </p></li>
-
       </ul>
     </div>
 
diff --git a/docs/manual/introduction.html b/docs/manual/introduction.html
index 7eea435..0753116 100644
--- a/docs/manual/introduction.html
+++ b/docs/manual/introduction.html
@@ -10,12 +10,10 @@
     <link rel="stylesheet" type="text/css" href="../css/prettify.css" media="screen" />    
 
   </head>
-  <body onload="prettyPrint(); decorate();">
+  <body onload="prettyPrint()">
     <script type="text/javascript">prefix='../';</script>
     <script type="text/javascript" src="../js/prettify.js"></script>
     <script src="../templates/header.js" type="text/javascript"> </script>
-    <script type="text/javascript" src="../js/jquery-min.js"></script>
-    <script type="text/javascript" src="../js/decorator.js"></script>
     <div id="left">
       <noscript>Please turn on Javascript to view this menu</noscript>
       <script src="../templates/left.js" type="text/javascript"></script>
@@ -48,11 +46,17 @@
     project.  It was designed by Ceki Gülcü, log4j's
     founder.  It builds upon a decade of experience gained in
     designing industrial-strength logging systems. The resulting
-    product, i.e. logback, is faster and has a smaller footprint than
-    all existing logging systems, sometimes by a wide margin. Just as
-    importantly, logback offers <a
-    href="../reasonsToSwitch.html">unique and rather useful
-    features</a> missing in other logging systems.
+    product logback is faster and has a smaller footprint than all
+    existing logging systems, sometimes by a wide margin. Logback also
+    offers unique and rather useful features such as Markers,
+    parameterized logging statements, conditional stack tracing and
+    powerful event filtering. These are only a few examples of the useful
+    features logback has to offer. For its own error reporting,
+    logback relies on <code>Status</code> objects, which greatly
+    facilitate troubleshooting. You may wish to rely on Status objects
+    in contexts other than logging. Logback-core bundles Joran, a
+    powerful and generic configuration system, which can be put to use
+    in your own projects to great effect.
     </p>
 
     <h2>First Baby Step</h2>
@@ -68,7 +72,7 @@
     </p>
 
     <p>The <em>logback-*.jar</em> files are part of the logback
-    distribution whereas <em>slf4j-api-1.7.6.jar</em> ships
+    distribution whereas <em>slf4j-api-1.6.4.jar</em> ships
     with <a href="http://www.slf4j.org">SLF4J</a>, a separate project.
     </p>
 
@@ -166,7 +170,6 @@ public class HelloWorld2 {
    the following output:</p>
 
 <div class="source longline"><pre>12:49:22.203 [main] DEBUG chapters.introduction.HelloWorld2 - Hello world.
-12:49:22,076 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
 12:49:22,078 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
 12:49:22,093 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.xml]
 12:49:22,093 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Setting up default configuration.
@@ -221,8 +224,20 @@ public class HelloWorld2 {
     produce logging output on the configured appenders.</li>
   </ol>
  
+  <a name="BuildingLogback"></a>
+  <h2>Building logback</h2>  
+  
+  <!-- 
+  
+   Try downloading the file manually from:
+      http://java.sun.com/products/jms/docs.html
+
+  Then, install it using the command:
+      mvn install:install-file -DgroupId=javax.jms -DartifactId=jms \
+          -Dversion=1.1 -Dpackaging=jar -Dfile=/path/to/file 
+  
+   -->
   
-  <h2 class="doAnchor" name="building">Building logback</h2>
   
   <p>As its build tool, logback relies on <a
   href="http://maven.apache.org">Maven</a>, a widely-used open-source
diff --git a/docs/manual/jmxConfig.html b/docs/manual/jmxConfig.html
index 86fee32..63047bf 100644
--- a/docs/manual/jmxConfig.html
+++ b/docs/manual/jmxConfig.html
@@ -12,13 +12,10 @@
 
     <title>Chapter 10: JMX Configuration</title>
   </head>
-  <body onload="prettyPrint(); decorate();">
+  <body onload="prettyPrint()">
     <script type="text/javascript">prefix='../';</script>
     <script type="text/javascript" src="../js/prettify.js"></script>
-    <script type="text/javascript" src="../templates/header.js"></script>
-    <script type="text/javascript" src="../js/jquery-min.js"></script>
-    <script type="text/javascript" src="../js/decorator.js"></script>
-    
+    <script src="../templates/header.js" type="text/javascript"></script>
     <div id="left">
       <noscript>Please turn on Javascript to view this menu</noscript>
       <script src="../templates/left.js" type="text/javascript"></script>
@@ -70,9 +67,9 @@
     in the figure below:
     </p>
     
-    <h3 class="doAnchor" name="jmxConfigurator">Screen-shot of
-    <code>JMXConfigurator</code> viewed in <code>jconsole</code></h3>
-
+    <p><a name="jmxConfigurator" href="#jmxConfigurator">Screen-shot
+    of <code>JMXConfigurator</code> viewed in
+    <code>jconsole</code></a></p>
     <img src="images/chapters/jmxConfigurator/jmxConfigurator.gif" alt="jmxConfigurator"/>   
 
 		<p>Thus, you can</p>
@@ -100,7 +97,7 @@
 
     <img src="images/chapters/jmxConfigurator/statusList.gif" alt="statusList.gif"/>   
 
-    <h3 class="doAnchor" name="leak">Avoiding memory leaks</h3>
+    <h3><a name="leak" href="#leak">Avoiding memory leaks</a></h3>
 
     <p>If your application is deployed in a web-server or an
     application server, the registration of an
@@ -140,8 +137,10 @@ public class MyContextListener implements ServletContextListener {
     <!-- ============ Multiple web-applications  ================== -->
 
     
-    <h2 class="doAnchor" name="multiple"><code>JMXConfigurator</code>
-    with multiple web-applications</h2>
+    <h2>
+      <a name="multiple" href="#multiple"><code>JMXConfigurator</code>
+      with multiple web-applications</a>
+    </h2>
 
     <p>If you deploy multiple web-applications in the same server,
     and if you have not overridden the default <a
@@ -192,8 +191,10 @@ public class MyContextListener implements ServletContextListener {
     
     <!-- ============ JMX enabling your  server ================== -->
 
-    <h3 class="doAnchor" name="jmxEnablingServer">JMX enabling your
-    server</h3>
+    <h3>
+      <a name="jmxEnablingServer" href="#jmxEnablingServer">JMX enabling your
+      server</a>
+    </h3>
 
     <p>If your server runs with JDK 1.6 or later, your server should
     be JMX enabled by default.</p>
diff --git a/docs/manual/layouts.html b/docs/manual/layouts.html
index 7e78711..b3c75f8 100644
--- a/docs/manual/layouts.html
+++ b/docs/manual/layouts.html
@@ -11,14 +11,11 @@
     <link rel="stylesheet" type="text/css" href="../css/prettify.css" media="screen" />
     
   </head>
-  <body onload="prettyPrint(); decorate();">
+  <body onload="prettyPrint()">
     <script type="text/javascript">prefix='../';</script>
     <script type="text/javascript" src="../js/prettify.js"></script>
-    <script type="text/javascript" src="../templates/header.js"></script>
     <script type="text/javascript" src="../js/dsl.js"></script>
-    <script type="text/javascript" src="../js/jquery-min.js"></script>
-    <script type="text/javascript" src="../js/decorator.js"></script>
-
+    <script src="../templates/header.js" type="text/javascript"></script>
     <div id="left">
       <noscript>Please turn on Javascript to view this menu</noscript>
       <script src="../templates/left.js" type="text/javascript"></script>
@@ -41,7 +38,7 @@
     <script src="../templates/creative.js" type="text/javascript"></script>
     <script src="../templates/setup.js" type="text/javascript"></script>
      
-		<h2 class="doAnchor">What is a layout?</h2>
+		<h2>What is a layout?</h2>
 
 		<p>In case you were wondering, layouts have nothing to do with
 		large estates in Florida.  Layouts are logback components
@@ -76,8 +73,9 @@
       <code>ch.qos.logback.classic.spi.ILoggingEvent</code></a>.  This
 			fact will be apparent throughout this section.</p>
 
-		<h2 class="doAnchor" name="writingYourOwnLayout">Writing your own
-		custom Layout</h2>
+		<h2><a name="writingYourOwnLayout"
+		href="#writingYourOwnLayout">Writing your own custom
+		Layout</a></h2>
 
 		<p>Let us implement a simple yet functional layout for the
 			logback-classic module that prints the time elapsed since the
@@ -149,8 +147,9 @@ public class MySampleLayout extends LayoutBase<ILoggingEvent> {
 		contents of exceptions as well.
 		</p>
 
-    <h3 class="doAnchor" name="configuringYourOwnLayout">Configuring
-    your custom layout</h3>
+    <h3><a name="configuringYourOwnLayout"
+    href="#configuringYourOwnLayout">Configuring your custom
+    layout</a></h3>
 
 		<p>Custom layouts are configured as any other component. As
 		mentioned earlier, <code>FileAppender</code> and its sub-classes
@@ -289,7 +288,9 @@ public class MySampleLayout2 extends LayoutBase<ILoggingEvent> {
    <p></p>
 
 
-		<h2 class="doAnchor" name="ClassicPatternLayout">PatternLayout</h2>
+
+		<h2><a name="ClassicPatternLayout"
+		href="#ClassicPatternLayout">PatternLayout</a></h2>
 
 		<p>Logback classic ships with a flexible layout called <a
 		href="../xref/ch/qos/logback/classic/PatternLayout.html">
@@ -413,15 +414,14 @@ WARN  [main]: Message 2</p>
 		listed in the same table cell, they are considered as aliases.
 		</p>
 
-		<table class="bodyTable properties striped" border="0">
+		<table class="bodyTable properties" border="0">
       <tr>
         <th><a name="conversionWord" href="#conversionWord">Conversion Word</a></th>
         <th>Effect</th>
       </tr>
 
 			<tr>
-				<td class="word" name="logger">
-          <a name="logger" href="#logger"><span class="anchor"/></a>
+				<td align="center">
 					<b>c</b>{<em>length</em>} <br /> 				
 					<b>lo</b>{<em>length</em>} <br />
 					<b>logger</b>{<em>length</em>} <br />
@@ -430,15 +430,16 @@ WARN  [main]: Message 2</p>
 				<td>
           Outputs the name of the logger at the origin of the logging
           event.
+					
 
-					<p>This conversion word takes an integer as its first and
+					<p>This conversion word can take an integer as its first and
 					only option. The converter's abbreviation algorithm will
 					shorten the logger name, usually without significant loss of
-					meaning. Setting the value of length option to zero
-					constitutes an exception. It will cause the conversion word
-					to return the sub-string right to the rightmost dot
-					character in the logger name. The next table provides
-					examples of the abbreviation algorithm in action.
+					meaning. Setting the value of this option to zero has
+					special meaning. It will cause the conversion word to return
+					the sub-string right to the rightmost dot character in the
+					logger name. The next table provides examples of the
+					abbreviation algorithm in action.
           </p>
 
 					<table class="bodyTable dark" border="0" cellpadding="8">
@@ -498,8 +499,8 @@ WARN  [main]: Message 2</p>
 				</td>
 			</tr>
 
-			<tr>
-				<td class="word" name="class">
+			<tr class="alt">
+				<td align="center">
 					<b>C</b>{<em>length</em>} <br /> 
 					<b>class</b>{<em>length</em>} <br />
 				</td>
@@ -524,88 +525,81 @@ WARN  [main]: Message 2</p>
 			</tr>
 
       <tr>
-        <td class="word" name="contextName">
+        <td align="center">
           <b>contextName</b><br/>
           <b>cn</b><br/></td>
           <td>Outputs the name of the logger context to which the
           logger at the origin of the event was attached to. </td>
       </tr>
-			<tr>
-        <td class="word" name="date">
+			<tr class="alt">
+        <td align="center">
           <b>d</b>{<em>pattern</em>} <br /> 
           <b>date</b>{<em>pattern</em>} <br />
-          <b>d</b>{<em>pattern</em>, <em>timezone</em>} <br />
-          <b>date</b>{<em>pattern</em>, <em>timezone</em>} <br />
         </td>
         <td>
-         <p>Used to output the date of the logging event.  The date
-         conversion word admits a pattern string as a parameter. The
-         pattern syntax is compatible with the format accepted by <a
-         href="http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html"><code>java.text.SimpleDateFormat</code></a>.</p>
-
-         <p>You can specify the string <em>"ISO8601"</em> for the
-         ISO8601 date format. Note that the %date conversion word
-         defaults to the <a
-         href="http://en.wikipedia.org/wiki/ISO_8601">ISO 8601 date
-         format</a> in the absence of a pattern parameter.</p>
-
-         <p>Here are some sample parameter values. They assume that
-         the actual date is Friday 20th of October, 2006 and that the
-         author has returned to working on this document just after
-         lunch.</p>
+					<p>Used to output the date of the logging event.  The date
+					conversion word admits a pattern string as an option. The
+					pattern syntax is compatible with the format accepted by <a
+					href="http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html"><code>java.text.SimpleDateFormat</code></a>.</p>
+
+					<p>You can specify the string <em>"ISO8601"</em> for the
+					ISO8601 date format. Note that the %date conversion word
+					defaults to the <a
+					href="http://en.wikipedia.org/wiki/ISO_8601">ISO 8601 date
+					format</a> in the absence of a pattern option.</p>
+
+					<p>Here are some sample option values. They assume that the
+					actual date is Friday 20th of October, 2006 and that the
+					author has returned to working on this document just after
+					lunch.</p>
 					
-         <table class="bodyTable dark" cellpadding="8">
-           <tr>
-             <th>Conversion Pattern</th>
-            <th>Result</th>
-           </tr>
-           <tr>
-             <td>%d</td>
-             <td>2006-10-20 14:06:49,812</td>
-           </tr>
-           <tr>
-             <td>%date</td>
-             <td>2006-10-20 14:06:49,812</td>
-           </tr>
-           <tr>
-             <td>%date{ISO8601}</td>
-             <td>2006-10-20 14:06:49,812</td>
-           </tr>			
-           <tr>
-             <td>%date{HH:mm:ss.SSS}</td>
-             <td>14:06:49.812</td>
-           </tr>
-           <tr>
-             <td>%date{dd MMM yyyy;HH:mm:ss.SSS}</td>
-             <td>20 oct. 2006;14:06:49.812	</td>
-           </tr>
-         </table>
-         
-          <p>The second parameter specifies a timezone. For example,
-          the '%date{HH:mm:ss.SSS, Australia/Perth} would print
-          the time in the time zone of Perth, Australia, the world's
-          most isolated city.  Note that in the absence of the
-          timezone parameter, the default timezone of the host Java
-          platform is used.  If the specified timezone identifier is
-          unknown or misspelled, the GMT timezone is assumed as
-          dictated by the <a
-          href="http://docs.oracle.com/javase/6/docs/api/java/util/TimeZone.html#getTimeZone(java.lang.String)">TimeZone.getTimeZone(String)</a>
-          method specification.
+					<table class="bodyTable dark" cellpadding="8">
+						<tr>
+							<th>Conversion Pattern</th>
+							<th>Result</th>
+						</tr>
+            <tr>
+							<td>%d</td>
+							<td>2006-10-20 14:06:49,812</td>
+						</tr>
+						<tr>
+							<td>%date</td>
+							<td>2006-10-20 14:06:49,812</td>
+						</tr>
+						<tr>
+							<td>%date{ISO8601}</td>
+							<td>2006-10-20 14:06:49,812</td>
+						</tr>			
+						<tr>
+							<td>%date{HH:mm:ss.SSS}</td>
+							<td>14:06:49.812</td>
+						</tr>
+						<tr>
+							<td>%date{dd MMM yyyy ;HH:mm:ss.SSS}</td>
+							<td>20 oct. 2006;14:06:49.812	</td>
+						</tr>
+					</table>
+
+          <p>In addition to the date pattern, this converter admits a
+          second option as the timezone. Thus, the
+          '%date{HH:mm:ss.SSS,Australia/Perth} would print the time in
+          the time zone of Perth, Australia, the world's most isolated
+          city.
           </p>
 
-          <p><span class="label">common error</span> Given that the
-          comma ',' character is interpreted as the parameter
-          separator, the pattern <code>HH:mm:ss,SSS</code> will be
-          interpreted as the pattern <code>HM:mm:ss</code> and the
-          timezone <code>SSS</code>. If you wish to include a comma in
-          your date pattern, then simply enclose the pattern between
-          quotes. For example, %date{<b>"</b>HH:mm:ss,SSS<b>"</b>}.
+          <p>Given that the comma ',' character is interpreted as the
+          option separator, the pattern string [HH:mm:ss,SSS] will
+          print the time in the [SSS] time zone which does not
+          exist. Thus, the time will be printed in the default GMT
+          timezone. If you wish to include a comma in your date
+          pattern, then simply enclose the pattern between quotes. For
+          example, %date{<b>"</b>HH:mm:ss,SSS<b>"</b>}.
           </p>
 				</td>
 			</tr>
 
 			<tr>
-				<td class="word" name="file">
+				<td align="center">
 					<b>F / file</b>
 				</td>
 
@@ -621,8 +615,8 @@ WARN  [main]: Message 2</p>
 				</td>
 			</tr>
 
-			<tr >
-				<td class="word" name="caller">
+			<tr class="alt">
+				<td align="center">
 					<b>caller{depth}</b>
 					<b>caller{depth, evaluator-1, ... evaluator-n}</b>
 				</td>
@@ -658,8 +652,8 @@ Caller+1   at mainPackage.sub.sample.Bar.createLoggingRequest(Bar.java:17)
 Caller+2   at mainPackage.ConfigTester.main(ConfigTester.java:38)</pre>
 					
 					<p>This conversion word can also use evaluators to test
-					logging events against a given criterion before computing
-					caller data. For example, using <b>%caller{3,
+					logging events against a given criterion before creating the
+					output. For example, using <b>%caller{3,
 					CALLER_DISPLAY_EVAL}</b> will display three lines of
 					stacktrace, only if the evaluator called
 					<em>CALLER_DISPLAY_EVAL</em> returns a <b>positive</b>
@@ -671,23 +665,25 @@ Caller+2   at mainPackage.ConfigTester.main(ConfigTester.java:38)</pre>
 			</tr>
 
 			<tr>
-				<td class="word" name="line">
+				<td align="center">
 					<b>L / line</b>
 				</td>
 
-				<td><p>Outputs the line number from where the logging
-					request was issued.</p>
+				<td>
+					<p>Outputs the line number from where the logging
+					request was issued.
+					</p>
 
-					<p>Generating the line number information is not
-					particularly fast.  Thus, its use should be avoided unless
-					execution speed is not an issue.
+					<p>Generating the line number information is not particularly
+						fast.  Thus, its use should be avoided unless execution
+						speed is not an issue.
 					</p>
 				</td>
 			</tr>
 
 
-			<tr>
-				<td class="word" name="message">
+			<tr class="alt">
+				<td align="center">
 					<b>m / msg / message</b>
 				</td>
 				<td>
@@ -698,99 +694,108 @@ Caller+2   at mainPackage.ConfigTester.main(ConfigTester.java:38)</pre>
 			</tr>
 
 			<tr>
-				<td class="word" name="method">
+				<td align="center">
 					<b>M / method</b>
 				</td>
 
 				<td>
-					<p>Outputs the method name where the logging request was
-					issued.</p>
-					<p>Generating the method name is not particularly fast.
-					Thus, its use should be avoided unless execution speed is
-					not an issue.</p>
+					<p>
+						Outputs the method name where the logging
+						request was issued.
+					</p>
+					<p>
+						Generating the method name is not particularly fast.
+						Thus, its use should be avoided unless
+						execution speed is not an issue.
+					</p>
 				</td>
 			</tr>
 
-			<tr>
-				<td class="word" name="newline">
+			<tr class="alt">
+				<td align="center">
 					<b>n</b>
 				</td>
 
 				<td>
-					<p>Outputs the platform dependent line separator
-						character or characters.</p>
-					<p>This conversion word offers practically the same
-					performance as using non-portable line separator strings
-					such as "\n", or "\r\n". Thus, it is the preferred way of
-					specifying a line separator.
+					<p>
+						Outputs the platform dependent line separator
+						character or characters.
+					</p>
+					<p>
+						This conversion word offers practically the
+						same performance as using non-portable line
+						separator strings such as "\n", or "\r\n". Thus,
+						it is the preferred way of specifying a line
+						separator.
 					</p>
 				</td>
 
 			</tr>
 
 			<tr>
-				<td class="word" name="level">
+				<td align="center">
 					<b>p / le / level</b>
 				</td>
 				<td>Outputs the level of the logging event.</td>
 			</tr>
 
-			<tr>
+			<tr class="alt">
 
-				<td class="word" name="relative">
+				<td align="center">
 					<b>r / relative</b>
 				</td>
 
-				<td>Outputs the number of milliseconds elapsed since the start
-				of the application until the creation of the logging event.
+				<td>
+					Outputs the number of milliseconds elapsed
+					since the start of the application until the
+					creation of the logging event.
 				</td>
 			</tr>
 
 
 			<tr>
-				<td class="word" name="relative">
+				<td align="center">
 					<b>t / thread</b>
 				</td>
 
-				<td>Outputs the name of the thread that generated the logging
-				event.
+				<td>
+					Outputs the name of the thread that generated
+					the logging event.
 				</td>
 
 			</tr>
 
-			<tr>
-				<td class="word" name="mdc">
-					<b>X</b>{<em>key:-defaultVal</em>} <br /> 
-					<b>mdc</b>{<em>key:-defaultVal</em>} <br />
+			<tr  class="alt">
+				<td align="center">
+					<b>X</b>{<em>key</em>} <br /> 
+					<b>mdc</b>{<em>key</em>} <br />
 				</td>
 
 				<td>
 
-					<p>Outputs the MDC (mapped diagnostic context) associated
-					with the thread that generated the logging event.
+					<p>
+						Outputs the MDC (mapped diagnostic context) associated
+						with the thread that generated the logging event.
 					</p>
 
 					<p>If the <b>mdc</b> conversion word is followed by a key
 					between braces, as in <b>%mdc{userid}</b>, then the MDC
 					value corresponding to the key 'userid' will be output. If
-					the value is null, then the <a
-					href="configuration.html#defaultValuesForVariables">default
-					value</a> specified after the <b>:-</b> operator is
-					output. If no default value is specified than the empty
-					string is output.
+					the that value is null, the empty string is output.
 					</p>
 
-					<p>If no key is given, then the entire content of the MDC
+					<p>If no option is given, then the entire content of the MDC
 					will be output in the format "key1=val1, key2=val2".
 					</p>
 
 					<p>See the <a href="mdc.html">chapter on MDC</a> for more
-					details on the subject.</p>
+					details on the subject.
+					</p>
 
 				</td>
 			</tr>
 			<tr>
-				<td class="word" name="ex">
+				<td align="center">
 					<b>ex</b>{<em>depth</em>} <br /> 
           	<b>exception</b>{<em>depth</em>} <br /> 
 					<b>throwable</b>{<em>depth</em>} <br />
@@ -860,8 +865,9 @@ Caller+2   at mainPackage.ConfigTester.main(ConfigTester.java:38)</pre>
 				</td>
 			</tr>
       
-      <tr>
-				<td class="word" name="xThrowable">
+      <tr class="alt">
+				<td align="center">
+          <a name="xThrowable" href="#xThrowable">
 					<b>xEx</b>{<em>depth</em>} <br /> 
           <b>xException</b>{<em>depth</em>} <br /> 
 					<b>xThrowable</b>{<em>depth</em>} <br />
@@ -869,6 +875,7 @@ Caller+2   at mainPackage.ConfigTester.main(ConfigTester.java:38)</pre>
 					<b>xEx</b>{depth, evaluator-1, ..., evaluator-n} <br />
 					<b>xException</b>{depth, evaluator-1, ..., evaluator-n} <br />
 					<b>xThrowable</b>{depth, evaluator-1, ..., evaluator-n}
+          </a>
 				</td>
 
 				<td>
@@ -936,7 +943,7 @@ Caller+2   at mainPackage.ConfigTester.main(ConfigTester.java:38)</pre>
       </tr>
 
       <tr>
-        <td class="word" name="nopex">
+        <td align="center">
           <b>nopex</b> <br />
           <b>nopexception</b>
         </td>
@@ -955,8 +962,8 @@ Caller+2   at mainPackage.ConfigTester.main(ConfigTester.java:38)</pre>
         </td>
       </tr>
 
-      <tr >
-        <td class="word" name="marker">
+      <tr class="alt">
+        <td align="center">
           <b>marker</b>
         </td>
 
@@ -976,34 +983,27 @@ Caller+2   at mainPackage.ConfigTester.main(ConfigTester.java:38)</pre>
 
 
       <tr>
-        <td class="word" name="property">
+        <td align="center">
           <b>property{key}</b>
         </td>
         
-        <td><p>Outputs the value associated with a property named
-        <em>key</em>. The the relevant docs on how to define ion
-        entitled <a
-        href="configuration.html#variableSubstitution">define
-        variables</a> and <a href="configuration.html#scopes">variable
-        scopes</a>. 
-
-        <!-- XXXXXXXXXXXX -->
-
-        If <em>key</em> is not a property of
-        the logger context, then <em>key</em> will be looked up in the
-        System properties.</p>
+        <td>
+          <p>Outputs the value associated with a context
+          property named <em>key</em>. If <em>key</em> is not a
+          property of the logger context, then <em>key</em> will be
+          looked up in the System properties. </p>
 
 
-         <p>There is no default value for <em>key</em>. If it is
-         omitted, the returned value will be "Property_HAS_NO_KEY",
-         expliciting the error condition.</p>
+          <p>There is no default value for <em>key</em>. If it is
+          omitted, the returned value will be "Property_HAS_NO_KEY",
+          expliciting the error condition.</p>
           
         </td>
       </tr>
 
-      <tr>
-        <td class="word" name="replace">
-          <b>replace(<em>p</em>){r, t}</b>
+      <tr class="alt">
+        <td align="center">
+          <a name="replace" href="#replace"><b>replace(<em>p</em>){r, t}</b></a>
         </td>
         
         <td>
@@ -1025,12 +1025,13 @@ Caller+2   at mainPackage.ConfigTester.main(ConfigTester.java:38)</pre>
 
 
       <tr>
-        <td class="word" name="rootException">
+        <td align="center">
+          <a name="rootException" href="#rootException">		
           <b>rEx</b>{<em>depth</em>} <br /> 
           <b>rootException</b>{<em>depth</em>} <br /> 
           <br />
 					<b>rEx</b>{depth, evaluator-1, ..., evaluator-n} <br />
-					<b>rootException</b>{depth, evaluator-1, ..., evaluator-n}
+					<b>rootException</b>{depth, evaluator-1, ..., evaluator-n}</a>
         </td>
         
         <td>
@@ -1051,7 +1052,7 @@ Wrapped by: org.springframework.BeanCreationException: Error creating bean with
 
          <p>The %rootException converter admits the same optional
          parameters as the %xException converter described above,
-         including depth and evaluators. It outputs also packaging
+         including depth and eveluators. It outputs also packaging
          information. In short, %rootException is very similar to
          %xException, only the order of exception output is reversed.
          </p>
@@ -1066,7 +1067,7 @@ Wrapped by: org.springframework.BeanCreationException: Error creating bean with
 		</table>
 
 
-    <h4 class="doAnchor" name="percentIsSpecial">% character has special meaning</h4>
+    <h4>% character has special meaning</h4>
 
     <p>Given that in the context of conversion patterns the percent
     sign carries special meaning, in order to include it as a literal,
@@ -1074,8 +1075,8 @@ Wrapped by: org.springframework.BeanCreationException: Error creating bean with
     %m%n".
     </p>
 
-    <h4 class="doAnchor" name="restrictionsOnLiterals">Restrictions on
-    literals immediately following conversion words</h4>
+    <h4>Restrictions on literals immediately following conversion
+    words</h4>
 
     <p>In most cases literals naturally contain spaces or other
     delimiting characters so that they are not confused with
@@ -1096,7 +1097,8 @@ Wrapped by: org.springframework.BeanCreationException: Error creating bean with
 
     </p>
 
-    <h2 class="doAnchor" name="formatModifiers">Format modifiers</h2>
+    <h2><a name="formatModifiers" href="#formatModifiers">Format
+    modifiers</a></h2>
 
 		<p>By default the relevant information is output as-is.  However,
 		with the aid of format modifiers it is possible to change the
@@ -1250,8 +1252,8 @@ Wrapped by: org.springframework.BeanCreationException: Error creating bean with
 			</tr>
 		</table>
 
-    <h3 class="doAnchor" name="oneLetterLevel">Output just one letter
-    for the level</h3>
+    <h3><a name="oneLetterLevel" href="#oneLetterLevel">Output just
+    one letter for the level</a></h3>
 
     <p>Instead of printing TRACE, DEBUG, WARN, INFO or ERROR for the
     level, you may want to print just T, D, W, I and E. You could
@@ -1262,7 +1264,8 @@ Wrapped by: org.springframework.BeanCreationException: Error creating bean with
     "<code>%.-1level</code>".
     </p>
     
-		<h2 class="doAnchor" name="cwOptions">Conversion word options</h2>
+		<h2><a name="cwOptions" href="#cwOptions">Conversion word
+		options</a></h2>
 
 		<p>A conversion specifier can be followed by options. The are
 		always declared between braces. We have already seen some of the
@@ -1294,8 +1297,8 @@ Wrapped by: org.springframework.BeanCreationException: Error creating bean with
     previous item at least 14 but at most 16 times.
     </p>
 
-		<h2 class="doAnchor" name="Parentheses">Parentheses are
-		special</h2>
+		<h2><a name="Parentheses" href="#Parentheses">Parentheses are
+		special</a></h2>
 
     <p>In logback, parentheses within the pattern string are treated
     as grouping tokens. Thus, it is possible to group a sub-pattern
@@ -1346,68 +1349,7 @@ Wrapped by: org.springframework.BeanCreationException: Error creating bean with
     [%thread]<b>\)</b>. 
     </p>
 
-    <h2 class="doAnchor" name="coloring">Coloring</h2>
-
-    <p>Grouping by <a href="#Parentheses">parentheses</a> as explained
-    above allows coloring of sub-patterns. As of version 1.0.5,
-    <code>PatternLayout</code> recognizes "%black", "%red",
-    "%green","%yellow","%blue", "%magenta","%cyan", "%white", "%gray",
-    "%boldRed","%boldGreen", "%boldYellow", "%boldBlue",
-    "%boldMagenta""%boldCyan", "%boldWhite" and "%highlight" as
-    conversion words. These conversion words are intended to contain a
-    sub-pattern. Any sub-pattern enclosed by a coloring word will be
-    output in the specified color.
-    </p>
-
-    <p>Below is a configuration file illustrating coloring. Note the
-    %cyan conversion specifier enclosing "%logger{15}". This will
-    output the logger name abbreviated to 15 characters in cyan. The
-    %highlight conversion specifier prints its sub-pattern in bold-red
-    for events of level ERROR, in red for WARN, in BLUE for INFO, and
-    in the default color for other levels.</p>
-
-		<em>
-			Example: Highlighting levels
-			(logback-examples/src/main/java/chapters/layouts/highlighted.xml)
-		</em>
-
-    <span class="asGroovy" onclick="return asGroovy('highlighted');">View as .groovy</span>
-
-
-<pre id="highlighted" class="prettyprint"><configuration debug="true">
-  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-    <!-- On Windows machines setting withJansi to true enables ANSI
-         color code interpretation by the Jansi library. This requires
-         org.fusesource.jansi:jansi:1.8 on the class path.  Note that
-         Unix-based operating systems such as Linux and Mac OS X
-         support ANSI color codes by default. -->
-    <b><withJansi>true</withJansi></b>
-    <encoder>
-      <pattern>[%thread] <b>%highlight(%-5level)</b> <b>%cyan(%logger{15})</b> - %msg %n</pattern>
-    </encoder>
-  </appender>
-  <root level="DEBUG">
-    <appender-ref ref="STDOUT" />
-  </root>
-</configuration></pre>
-
-     <p>Here is the corresponding output:</p>
-
-<pre class="source">[main] <span style="color:#611">WARN</span>  <span style="color:#2bd">c.l.TrivialMain</span> - a warning message 0
-[main] DEBUG <span style="color:#2bd">c.l.TrivialMain</span> - hello world number1
-[main] DEBUG <span style="color:#2bd">c.l.TrivialMain</span> - hello world number2
-[main] <span style="color:#00F">INFO</span>  <span style="color:#2bd">c.l.TrivialMain</span> - hello world number3
-[main] DEBUG <span style="color:#2bd">c.l.TrivialMain</span> - hello world number4
-[main] <span style="color:#611">WARN</span>  <span style="color:#2bd">c.l.TrivialMain</span> - a warning message 5
-[main] <span style="color:#F00">ERROR</span> <span style="color:#2bd">c.l.TrivialMain</span> - Finish off with fireworks</pre>
-
-    <p>It takes very few lines of code to create a coloring conversion
-    word. The section entitled <a
-    href="#customConversionSpecifier">creating a custom conversion
-    specifier</a> discusses the steps necessary for registering a
-    conversion word in your configuration file.</p>
-   
-		<h2 class="doAnchor" name="Evaluators">Evaluators</h2>
+		<h2><a name="Evaluators" href="#Evaluators">Evaluators</a></h2>
 
 		<p>As mentioned above, option lists come in handy when a
 		conversion specifier is required to behave dynamically based on
@@ -1676,8 +1618,9 @@ java.lang.Exception: display
 
 
     
-		<h2 class="doAnchor" name="customConversionSpecifier">Creating a
-		custom conversion specifier</h2>
+		<h2><a name="customConversionSpecifier"
+		href="#customConversionSpecifier">Creating a custom conversion
+		specifier</a></h2>
 
 		<p>Up to this point we have presented the built-in conversion
 		words in <code>PatternLayout</code>. But it is also possible to
@@ -1686,8 +1629,6 @@ java.lang.Exception: display
 		<p>Building a custom conversion specifier consists of two steps.
     </p>
 		
-    <h4>Step 1</h4>
-
 		<p>First, you must extend the <code>ClassicConverter</code>
 		class. <a
 		href="../xref/ch/qos/logback/classic/pattern/ClassicConverter.html">
@@ -1700,32 +1641,59 @@ java.lang.Exception: display
 		<code>ILoggingEvent</code> and returns it as a String. It might
 		abbreviate the logger name in the process.</p>
 		
-		<p>Here is a customer converter which returns the time elapsed
-		since its creaton in nanoseconds:</p>
+		<p>Let us say that our customized <code>ClassicConverter</code>
+		colors the level of the logging event, according to ANSI terminal
+		conventions. Here is a possible implementation:</p>
 		
 <em> Example: Sample Converter Example 
 <a href="../xref/chapters/layouts/MySampleConverter.html">
 (src/main/java/chapters/layouts/MySampleConverter.java)</a></em>
-<pre class="prettyprint source">public class MySampleConverter extends ClassicConverter {
+<pre class="prettyprint source">package chapters.layouts;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.pattern.ClassicConverter;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 
-  long start = System.nanoTime();
+public class MySampleConverter extends ClassicConverter {
 
-  <b>@Override</b>
-  <b>public String convert(ILoggingEvent event) {</b>
-    <b>long nowInNanos = System.nanoTime();</b>
-    <b>return Long.toString(nowInNanos-start);</b>
-  <b>}</b>
-}</pre>
+  private static final String END_COLOR = "\u001b[m";
+
+  private static final String ERROR_COLOR = "\u001b[0;31m";
+  private static final String WARN_COLOR = "\u001b[0;33m";
+
+  @Override
+  <b>public String convert(ILoggingEvent event) {
+    StringBuffer sbuf = new StringBuffer();
+    sbuf.append(getColor(event.getLevel()));
+    sbuf.append(event.getLevel());
+    sbuf.append(END_COLOR);
+    return sbuf.toString();
+  }</b>
+
+  /**
+   * Returns the appropriate characters to change the color for the specified
+   * logging level.
+   */
+  private String getColor(Level level) {
+    switch (level.toInt()) {
+    case Level.ERROR_INT:
+      return ERROR_COLOR;
+    case Level.WARN_INT:
+      return WARN_COLOR;
+    default:
+      return "";
+    }
+  }
+}
+</pre>
 
-		<p>This implementation is pretty straightforward. The
+		<p>This implementation is relatively straightforward. The
 		<code>MySampleConverter</code> class extends
 		<code>ClassicConverter</code>, and implements the
-		<code>convert</code> method which returns the number of
-		nano-seconds elapsed since its creation.
+		<code>convert</code> method where it returns a level string
+		decorated with ANSI coloring codes.
 		</p>
 
-    <h4>Step 2</h4>
-
 		<p>In the second step, we must let logback know about the new
 		<code>Converter</code>. For this purpose, we need to declare the
 		new conversion word in the configuration file, as shown below:</p>
@@ -1734,12 +1702,12 @@ java.lang.Exception: display
  <span class="asGroovy" onclick="return asGroovy('mySampleConverterConfig');">View as .groovy</span>
 <pre id="mySampleConverterConfig" class="prettyprint source"><configuration>
 
-  <b><conversionRule conversionWord="nanos" 
+  <b><conversionRule conversionWord="sample" 
                   converterClass="chapters.layouts.MySampleConverter" /></b>
 	
   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
     <encoder>
-      <pattern><b>%-6nanos</b> [%thread] - %msg%n</pattern>
+      <pattern>%-4relative [%thread] <b>%sample</b> - %msg%n</pattern>
     </encoder>
   </appender>
 
@@ -1753,28 +1721,33 @@ java.lang.Exception: display
 		<code>PatternLayout</code> pattern, as with any other
 		conversion word.</p>
 		
-    <p>The command:</p>
+    <p>Given that ANSI terminal codes do not work on Windows, you can
+    view the results on non-Windows platforms such as Linux or
+    Mac. The following command:</p>
 
     <div class="source">java chapters.layouts.SampleLogging src/main/java/chapters/layouts/mySampleConverterConfig.xml </div>
 
-    <p>should yield output akin to:</p>
+    <p>should yield:</p>
     
-    <pre class="source">4868695 [main] DEBUG - Everything's going well
-5758748 [main] ERROR - maybe not quite...</pre>
+    <p class="source">0    [main] DEBUG - Everything's going well
+3    [main] <span class="red">ERROR</span> - maybe not quite... </p>
 
 
+    <p>Please note that the string "ERROR" is highlighted in red,
+    which was the declared intent of the exercise.</p>
+
 		<p>The reader might want to take a look at other
 		<code>Converter</code> implementations such as
 		<a href="../xref/ch/qos/logback/classic/pattern/MDCConverter.html">
 		<code>MDCConverter</code></a> to learn about more complex
-		behaviours, such as option handling. For creating your own
-		coloring schemes have a look at <a
-		href="../xref/ch/qos/logback/classic/pattern/color/HighlightingCompositeConverter.html"><code>HighlightingCompositeConverter</code></a>.
+		behaviours, such as option handling.
 		</p>
 
    	
 
-    <h2 class="doAnchor" name="ClassicHTMLLayout">HTMLLayout</h2>
+    <h2>
+      <a name="ClassicHTMLLayout" href="#ClassicHTMLLayout">HTMLLayout</a>
+    </h2>
 	
 	  <p><a
 	  href="../xref/ch/qos/logback/classic/html/HTMLLayout.html"><code>HTMLLayout</code></a>
@@ -1894,10 +1867,10 @@ java.lang.Exception: display
 		<code>SMTPAppender</code> so that outgoing email is pleasantly
 		formatted in HTML.
 		</p>
+    <h2><a name="log4jXMLLayout" href="#log4jXMLLayout">Log4j
+    XMLLayout</a></h2>
 
 
-    <h2 class="doAnchor" name="log4jXMLLayout">Log4j XMLLayout</h2>
-
     <p><a
     href="../xref/ch/qos/logback/classic/log4j/XMLLayout.html">XMLLayout</a>
     (part of logback-classic) generates output in a log4j.dtd
@@ -1939,7 +1912,7 @@ java.lang.Exception: display
   </root>
 </configuration> </pre>
     
-		<h1 class="doAnchor" name="logback-access">Logback access</h1>
+		<h1><a name="logback-access" href="#logback-access">Logback access</a></h1>
 
 		<p>Most logback-access layouts are mere adaptations of
 		logback-classic layouts. Logback-classic and logback-access
@@ -1953,7 +1926,9 @@ java.lang.Exception: display
 		logback-classic.</p>
 		
 
-		<h3 class="doAnchor" name="AccessPatternLayout">PatternLayout</h3>
+		<a name="AccessPatternLayout"></a>
+
+		<h3>PatternLayout</h3>
 
 		<p><a href="../xref/ch/qos/logback/access/PatternLayout.html">
 		<code>PatternLayout</code></a> in logback-access can be configured
@@ -1966,49 +1941,53 @@ java.lang.Exception: display
 		<p>Below is a list of conversion specifiers for 
 		<code>PatternLayout</code> in logback-access.</p>
 		
-		<table  class="bodyTable striped" border="0" cellpadding="8">
+		<table  class="bodyTable" border="0" cellpadding="8">
       <tr>
         <th align="center">Conversion Word</th>
         <th align="center">Effect</th>
       </tr>
-      <tr>
-        <td class="word" name="remoteIP">
-          <b>a / remoteIP</b>
-        </td>
+      <tr class="a">
+        <td align="center"><b>a / remoteIP</b></td>
         <td>
-          <p>Remote IP address.</p>
+          <p>
+            Remote IP address.
+          </p>
         </td>
       </tr>
-      <tr>
-        <td class="word" name="localIP"><b>A / localIP</b></td>
+      <tr class="b">
+        <td align="center"><b>A / localIP</b></td>
         <td>
-          <p>Local IP address.</p>
+          <p>
+            Local IP address.
+          </p>
         </td>
       </tr>		
-      <tr>
-        <td class="word" name="bytesSent"><b>b / B / bytesSent</b></td>
+      <tr class="a">
+        <td align="center"><b>b / B / byteSent</b></td>
         <td>
           <p>
             Response's content length.
           </p>
         </td>
       </tr>				
-      <tr>
-        <td class="word" name="clientHost"><b>h / clientHost</b></td>
+      <tr class="b">
+        <td align="center"><b>h / clientHost</b></td>
         <td>
           <p>
             Remote host.
           </p>
         </td>
       </tr>
-      <tr>
-        <td class="word" name="protocol"><b>H / protocol</b></td>
+      <tr class="a">
+        <td align="center"><b>H / protocol</b></td>
         <td>
-          <p>Request protocol.</p>
+          <p>
+            Request protocol.
+          </p>
         </td>
       </tr>
-      <tr>
-        <td class="word" name="remoteLogName"><b>l</b></td>
+      <tr class="b">
+        <td align="center"><b>l</b></td>
         <td>
           <p>
             Remote log name. In logback-access, this converter always
@@ -2017,20 +1996,24 @@ java.lang.Exception: display
         </td>
       </tr>
       
-      <tr>
-        <td class="word" name="reqParameter"><b>reqParameter{paramName}</b></td>
+      <tr class="a">
+        <td align="center"><b>reqParameter{paramName}</b></td>
         <td>
-          <p>Parameter of the response.</p>
+          <p>
+            Parameter of the response.
+          </p>
           <p>This conversion word takes the first option in braces and looks
           for the corresponding parameter in the request.</p>
           <p><b>%reqParameter{input_data}</b> 
           displays the corresponding parameter.</p>
         </td>
       </tr>		
-      <tr>
-        <td class="word" name="header"><b>i{header} / header{header}</b></td>
+      <tr class="b">
+        <td align="center"><b>i{header} / header{header}</b></td>
         <td>
-          <p>Request header.</p>
+          <p>
+            Request header.
+          </p>
           <p>This conversion word takes the first option in braces and looks
           for the corresponding header in the request.</p>
           <p><b>%header{Referer}</b> displays the referer of the request.</p>
@@ -2039,82 +2022,76 @@ java.lang.Exception: display
           </p>
         </td>
       </tr>	
-      <tr >
-        <td class="word" name="requestMethod"><b>m / requestMethod</b></td>
+      <tr class="a">
+        <td align="center"><b>m / requestMethod</b></td>
         <td>
-          <p>Request method.</p>
+          <p>
+            Request method.
+          </p>
         </td>
       </tr>		
-      <tr>
-        <td class="word" name="requestURL"><b>r / requestURL</b></td>
+      <tr class="b">
+        <td align="center"><b>r / requestURL</b></td>
         <td>
           <p>
             URL requested.
           </p>
         </td>
       </tr>
-      <tr>
-        <td class="word" name="statusCode"><b>s / statusCode</b></td>
+      <tr class="a">
+        <td align="center"><b>s / statusCode</b></td>
         <td>
           <p>
             Status code of the request.
           </p>
         </td>
-      </tr>
-      <tr>
-          <td class="word" name="elapsedTime"><b>D / elapsedTime</b></td>
-          <td>
-              <p>
-                  The time taken to serve the request, in milliseconds.
-              </p>
-          </td>
-      </tr>
-      <tr>
-        <td class="word" name="dateAccess"><b>t / date</b></td>
+      </tr>		
+      <tr class="b">
+        <td align="center"><b>t / date</b></td>
         <td>
           <p>Outputs the date of the logging event.  The date
           conversion specifier may be followed by a set of braces
           containing a date and time pattern strings used by
-          <code>java.text.SimpleDateFormat</code>.  <em>ISO8601</em>
-          is also a valid value.
+          <code>java.text.SimpleDateFormat</code>.  <em>ABSOLUTE</em>,
+          <em>DATE</em> or <em>ISO8601</em> are also valid values.
 					</p>
-					<p>For example, <b>%t{HH:mm:ss,SSS}</b> or
-					<b>%t{dd MMM yyyy ;HH:mm:ss,SSS}</b>.
-					If no date format specifier is given then the
-					Common Log Format date format is assumed, that is: <b>%t{dd/MMM/yyyy:HH:mm:ss Z}</b>
+					<p>For example, <b>%d{HH:mm:ss,SSS}</b>,
+					<b>%d{dd MMM yyyy ;HH:mm:ss,SSS}</b> or
+					<b>%d{DATE}</b>.  If no date format specifier is given then
+					ISO8601 format is assumed.
 					</p>
         </td>
       </tr>
-      <tr>
-        <td class="word" name="httpUser"><b>u / user</b></td>
+      <tr class="a">
+        <td align="center"><b>u / user</b></td>
         <td>
           <p>
             Remote user.
           </p>
         </td>
       </tr>		
-      <tr>
-        <td class="word" name="requestURI"><b>U / requestURI</b></td>
+      <tr class="b">
+        <td align="center"><b>U / requestURI</b></td>
         <td>
           <p>
             Requested URI.
           </p>
         </td>
       </tr>		
-      <tr >
-        <td class="word" name="server"><b>v / server</b></td>
+      <tr class="a">
+        <td align="center"><b>v / server</b></td>
         <td>
           <p>Server name.</p>
         </td>
       </tr>
       <tr class="b">
-        <td class="word" name="localPort"><b>localPort</b></td>
+        <td align="center"><b>localPort</b></td>
         <td>
           <p>Local port.</p>
         </td>
       </tr>
       <tr class="a">
-        <td class="word" name="reqAttribute"><b>reqAttribute{attributeName}</b></td>
+        <td align="center"><b>reqAttribute{attributeName}</b></td>
         <td>
           <p>Attribute of the request.</p>
           <p>This conversion word takes the first option in braces and looks
@@ -2124,7 +2101,7 @@ java.lang.Exception: display
         </td>
       </tr>
       <tr class="b">
-        <td class="word" name="reqCookie"><b>reqCookie{cookie}</b></td>
+        <td align="center"><b>reqCookie{cookie}</b></td>
         <td>
           <p>Request cookie.</p>
           <p>This conversion word takes the first option in braces and looks
@@ -2133,7 +2110,7 @@ java.lang.Exception: display
         </td>
       </tr>
       <tr class="a">
-        <td class="word" name="responseHeader"><b>responseHeader{header}</b></td>
+        <td align="center"><b>responseHeader{header}</b></td>
         <td>
           <p>
             Header of the response.
@@ -2144,7 +2121,7 @@ java.lang.Exception: display
         </td>
       </tr>
       <tr class="b">
-        <td class="word" name="requestContent"><b>requestContent</b></td>
+        <td align="center"><b>requestContent</b></td>
         <td>
           <p>This conversion word displays the content of the request,
           that is the request's <code>InputStream</code>. It is used
@@ -2161,7 +2138,7 @@ java.lang.Exception: display
         </td>
       </tr>
       <tr class="a">
-        <td class="word" name="fullRequest"><b>fullRequest</b></td>
+        <td align="center"><b>fullRequest</b></td>
         <td>
           <p>This converter outputs the data associated with the
           request, including all headers and request contents.
@@ -2169,7 +2146,7 @@ java.lang.Exception: display
         </td>
       </tr>
       <tr class="b">
-        <td class="word" name="responseContent"><b>responseContent</b></td>
+        <td align="center"><b>responseContent</b></td>
         <td>
           <p>This conversion word displays the content of the
           response, that is the response's
@@ -2186,7 +2163,7 @@ java.lang.Exception: display
         </td>
       </tr>
       <tr class="a">
-        <td class="word" name="fullResponse"><b>fullResponse</b></td>
+        <td align="center"><b>fullResponse</b></td>
         <td>
           <p>This conversion word takes all the available data
           associated with the response, including all headers of the
@@ -2225,7 +2202,8 @@ java.lang.Exception: display
 	 	begins much like the <em>common</em> pattern but also displays two
 	 	request headers, namely referer, and user-agent.</p>
 
-		<h3 class="doAnchor" name="AccessHTMLLayout">HTMLLayout</h3>
+		<a name="AccessHTMLLayout"></a>
+		<h3>HTMLLayout</h3>
 		
 		<p>The <a
 		href="../xref/ch/qos/logback/access/html/HTMLLayout.html"><code>HTMLLayout</code></a>
diff --git a/docs/manual/loggingSeparation.html b/docs/manual/loggingSeparation.html
index 6054d1a..593c1cb 100644
--- a/docs/manual/loggingSeparation.html
+++ b/docs/manual/loggingSeparation.html
@@ -10,13 +10,10 @@
     <link rel="stylesheet" type="text/css" href="../css/_print.css" media="print" />
     <link rel="stylesheet" type="text/css" href="../css/prettify.css" media="screen" />
   </head>
-  <body onload="prettyPrint(); decorate();">
+  <body onload="prettyPrint()">
     <script type="text/javascript">prefix='../';</script>
     <script type="text/javascript" src="../js/prettify.js"></script>
-    <script type="text/javascript" src="../templates/header.js"></script>
-    <script type="text/javascript" src="../js/jquery-min.js"></script>
-    <script type="text/javascript" src="../js/decorator.js"></script>
-
+    <script src="../templates/header.js" type="text/javascript"></script>
     <div id="left">
       <noscript>Please turn on Javascript to view this menu</noscript>
       <script src="../templates/left.js" type="text/javascript"></script>
@@ -69,8 +66,8 @@
     of the container itself.
     </p>
 
-    <h2 class="doAnchor" name="easy">The simplest and easiest
-    approach</h2>
+    <h2><a name="easy" href="#easy">The simplest and easiest
+    approach</a></h2>
 
     <p>Assuming your container supports child-first class loading,
     separation of logging can be accomplished by embedding a copy of
@@ -100,8 +97,8 @@
     separation impossible. All hope is not lost. Please read on.
     </p>
 
-    <h2 class="doAnchor" name="contextSelectors">Context
-    Selectors</h2>
+    <h2><a name="contextSelectors" href="#contextSelectors">Context
+    Selectors</a></h2>
 
     <p>Logback provides a mechanism for a single instance of SLF4J and
     logback classes loaded into memory to provide multiple logger
@@ -144,8 +141,8 @@
     </p>
 
 
-    <h3 class="doAnchor"
-    name="ContextJNDISelector">ContextJNDISelector</h3>
+    <h3><a name="ContextJNDISelector"
+    href="#ContextJNDISelector">ContextJNDISelector</a></h3>
 
     <p>Logback-classic ships with a selector called
     <code>ContextJNDISelector</code> which selects the logger context
@@ -169,8 +166,9 @@
     for
     <code>ch.qos.logback.classic.selector.ContextJNDISelector</code>.</p>
 
-    <h3 class="doAnchor" name="settingJNDIVariables">Setting JNDI
-    variables in applications</h3>
+    <h3><a name="settingJNDIVariables"
+    href="#settingJNDIVariables">Setting JNDI variables in
+    applications</a></h3>
     
     <p>In each of your applications, you need to name the logging
     context for the application. For a web-application, JNDI
@@ -217,13 +215,13 @@
     </p>
     
 
-    <h3 class="doAnchor" name="jndiTomcat">Configuring Tomcat for
-    ContextJNDISelector</h3>
+    <h3><a name="jndiTomcat" href="#jndiTomcat">Configuring Tomcat for
+    ContextJNDISelector</a></h3>
 
     <p>First, place the logback jars (that is
-    logback-classic-1.1.2.jar,
-    logback-core-1.1.2.jar and
-    slf4j-api-1.7.6.jar) in Tomcat's global (shared) class
+    logback-classic-1.0.4.jar,
+    logback-core-1.0.4.jar and
+    slf4j-api-1.6.4.jar) in Tomcat's global (shared) class
     folder. In Tomcat 6.x, this directory is
     <em>$TOMCAT_HOME/lib/</em>.
     </p>
@@ -236,8 +234,8 @@
     <p class="source">JAVA_OPTS="$JAVA_OPTS -Dlogback.ContextSelector=JNDI"</p>
 
 
-    <h3 class="doAnchor" name="hotDeploy">Hot deploying
-    applications</h3>
+    <h3><a name="hotDeploy" href="#hotDeploy">Hot deploying
+    applications</a></h3>
 
     <p>When the web-application is recycled or shutdown, we strongly
     recommend that the incumbent <code>LoggerContext</code> be closed
@@ -265,7 +263,8 @@
     <code>contextDestroyed()</code> method is invoked <em>last</em>
     during application shutdown. </p>
 
-    <h3 class="doAnchor" name="betterPerf">Better performance</h3>
+    <h3><a name="betterPerf" href="betterPerf">Better
+    performance</a></h3>
 
     <p>When <code>ContextJNDISelector</code> is active, each time a
     logger is retrieved, a JNDI lookup must be performed. This can
@@ -302,8 +301,8 @@
    recycled.</p>
 
 
-   <h2 class="doAnchor" name="tamingStaticRefs">Taming static
-   references in shared libraries</h2>
+   <h2><a name="tamingStaticRefs" href="#tamingStaticRefs">Taming
+   static references in shared libraries</a></h2>
 
    <p><code>ContextJNDISelector</code> works nicely to create logging
    separation when SLF4J and logback artifacts are shared by all
diff --git a/docs/manual/mdc.html b/docs/manual/mdc.html
index b7013e8..48e6aca 100644
--- a/docs/manual/mdc.html
+++ b/docs/manual/mdc.html
@@ -10,13 +10,10 @@
     <link rel="stylesheet" type="text/css" href="../css/_print.css" media="print" />
     <link rel="stylesheet" type="text/css" href="../css/prettify.css" media="screen" />
   </head>
-  <body onload="prettyPrint(); decorate();">
+  <body onload="prettyPrint()">
     <script type="text/javascript">prefix='../';</script>
     <script type="text/javascript" src="../js/prettify.js"></script>
-    <script type="text/javascript" src="../templates/header.js"></script>
-    <script type="text/javascript" src="../js/jquery-min.js"></script>
-    <script type="text/javascript" src="../js/decorator.js"></script>
-
+    <script src="../templates/header.js" type="text/javascript"></script>
     <div id="left">
       <noscript>Please turn on Javascript to view this menu</noscript>
       <script src="../templates/left.js" type="text/javascript"></script>
@@ -153,7 +150,7 @@ public class SimpleMDC {
 
     <p>For the sake of conciseness, we have the omitted the code that
     configures logback with the configuration file <a
-    href="http://github.com/qos-ch/logback/blob/master/logback-examples/src/main/java/chapters/mdc/simpleMDC.xml">simpleMDC.xml</a>. Here
+    href="http://github.com/ceki/logback/blob/master/logback-examples/src/main/java/chapters/mdc/simpleMDC.xml">simpleMDC.xml</a>. Here
     is the relevant section from that file.
     </p>
 
@@ -190,7 +187,7 @@ Richard Nixon - Attributed to the former US president. 17 Nov 1973.</pre></div>
 		invocations.
 		</p>
 		
-		<h3 class="doAnchor">Advanced Use</h3>
+		<h3>Advanced Use</h3>
 		
 		<p>Mapped Diagnostic Contexts shine brightest within client server
 		architectures.  Typically, multiple clients will be served by
@@ -504,7 +501,7 @@ public class NumberCruncherServer extends UnicastRemoteObject
 		
 		
 		
-		<h3 class="doAnchor" name="autoMDC">Automating access to the <code>MDC</code></h3>
+		<h3>Automating access to the <code>MDC</code></h3>
 		
 		<p>As we've seen, the <code>MDC</code> is very useful when dealing
 			with multiple clients. In the case of a web application that
@@ -622,8 +619,8 @@ public class UserServletFilter implements Filter {
 		
 
 
-  <h3 class="doAnchor" name="managedThreads">MDC And Managed
-  Threads</h3>
+  <h3><a name="managedThreads" href="#managedThreads">MDC And Managed
+  Threads</a></h3>
 
   <p>A copy of the mapped diagnostic context can not always be
   inherited by worker threads from the initiating thread. This is the
@@ -642,7 +639,8 @@ public class UserServletFilter implements Filter {
   managed thread.
   </p>
 
-  <h3 class="doAnchor" name="mis">MDCInsertingServletFilter</h3>
+  <h2><a name="mis"
+  href="#mis"><code>MDCInsertingServletFilter</code></a></h2>
 
   <p>Within web applications, it often proves helpful to know the
   hostname, request uri and user-agent associated with a given HTTP
diff --git a/docs/manual/menu.js b/docs/manual/menu.js
index 972dcb7..fea4481 100644
--- a/docs/manual/menu.js
+++ b/docs/manual/menu.js
@@ -1,17 +1,15 @@
 
 document.write('<p class="menu_header">Chapter Index</p>')
 document.write('<p class="menu"><a href="introduction.html"><b>Ch1: Introduction to logback</b></a></p>');
-document.write('<p class="menu"><a href="architecture.html"><b>Ch2: Architecture</b></a></p>');
-document.write('<p class="menu"><a href="configuration.html"><b>Ch3: Configuration</b></a></p>');
-document.write('<p class="menu"><a href="appenders.html"><b>Ch4: Appenders</b></a></p>');
-document.write('<p class="menu"><a href="encoders.html"><b>Ch5: Encoders</b></a></p>');
-document.write('<p class="menu"><a href="layouts.html"><b>Ch6: Layouts</b></a></p>');
-document.write('<p class="menu"><a href="filters.html"><b>Ch7: Filters</b></a></p>');
-document.write('<p class="menu"><a href="mdc.html"><b>Ch8: Mapped Diagnostic Contexts</b></a></p>');
-document.write('<p class="menu"><a href="loggingSeparation.html"><b>Ch9: Logging Separation</b></a></p>');
-document.write('<p class="menu"><a href="jmxConfig.html"><b>Ch10: JMX Configurator</b></a></p>');
-document.write('<p class="menu"><a href="onJoran.html"><b>Ch11: Joran</b></a></p>');
-document.write('<p class="menu"><a href="groovy.html"><b>Ch12: Groovy Configuration</b></a></p>');
-document.write('<p class="menu"><a href="migrationFromLog4j.html"><b>Ch13: Migration from log4j</b></a></p>');
-document.write('<p class="menu"><a href="receivers.html"><b>Ch14: Receivers</b></a></p>');
-document.write('<p class="menu"><a href="usingSSL.html"><b>Ch15: Using SSL</b></a></p>');
+document.write('<p class="menu"><a href="architecture.html"><b>Ch2: Architecture</b></a>');
+document.write('<p class="menu"><a href="configuration.html"><b>Ch3: Configuration</b></a>');
+document.write('<p class="menu"><a href="appenders.html"><b>Ch4: Appenders</b></a>');
+document.write('<p class="menu"><a href="encoders.html"><b>Ch5: Encoders</b></a>');
+document.write('<p class="menu"><a href="layouts.html"><b>Ch6: Layouts</b></a>');
+document.write('<p class="menu"><a href="filters.html"><b>Ch7: Filters</b></a>');
+document.write('<p class="menu"><a href="mdc.html"><b>Ch8: Mapped Diagnostic Contexts</b></a>');
+document.write('<p class="menu"><a href="loggingSeparation.html"><b>Ch9: Logging Separation</b></a>');
+document.write('<p class="menu"><a href="jmxConfig.html"><b>Ch10: JMX Configurator</b></a>');
+document.write('<p class="menu"><a href="onJoran.html"><b>Ch11: Joran</b></a>');
+document.write('<p class="menu"><a href="groovy.html"><b>Ch12: Groovy Configuration</b></a>');
+document.write('<p class="menu"><a href="migrationFromLog4j.html"><b>Ch13: Migration from log4j</b></a>');
diff --git a/docs/manual/migrationFromLog4j.html b/docs/manual/migrationFromLog4j.html
index 96fef84..eac675c 100644
--- a/docs/manual/migrationFromLog4j.html
+++ b/docs/manual/migrationFromLog4j.html
@@ -10,13 +10,10 @@
     <link rel="stylesheet" type="text/css" href="../css/_print.css" media="print" />
     <link rel="stylesheet" type="text/css" href="../css/prettify.css" media="screen" />
   </head>
-  <body onload="prettyPrint(); decorate();">
+  <body onload="prettyPrint();">
     <script type="text/javascript">prefix='../'</script>
     <script type="text/javascript" src="../js/prettify.js"></script>
-    <script type="text/javascript" src="../templates/header.js"></script>
-    <script type="text/javascript" src="../js/jquery-min.js"></script>
-    <script type="text/javascript" src="../js/decorator.js"></script>
-
+    <script src="../templates/header.js" type="text/javascript"></script>
     <div id="left">
       <noscript>Please turn on Javascript to view this menu</noscript>
       <script src="../templates/left.js" type="text/javascript"></script>
@@ -68,7 +65,7 @@
     </p>
 
     
-    <h3 class="doAnchor" name="log4jLayout">Migrating a log4j layout</h3>
+    <h3>Migrating a log4j layout</h3>
 
     <p>Let us begin by migrating a hypothetical and trivially simple
     log4j layout named <a
@@ -139,8 +136,7 @@ public class TrivialLogbackLayout extends <b>LayoutBase<ILoggingEvent></b> {
    <code>activateOptions</code>() method.
    </p>
 
-   <h3 class="doAnchor" name="log4jAppender">Migrating a log4j
-   appender</h3>
+   <h3>Migrating a log4j appender</h3>
    
    <p>Migrating an appender is quite similar to migrating a
    layout. Here is a trivially simple appender called <a
diff --git a/docs/manual/onJoran.html b/docs/manual/onJoran.html
index 3231b48..2aeac7f 100644
--- a/docs/manual/onJoran.html
+++ b/docs/manual/onJoran.html
@@ -10,13 +10,10 @@
     <link rel="stylesheet" type="text/css" href="../css/_print.css" media="print" />
     <link rel="stylesheet" type="text/css" href="../css/prettify.css" media="screen" />
   </head>
-  <body  onload="prettyPrint(); decorate();">
+  <body  onload="prettyPrint()">
     <script type="text/javascript">prefix='../'</script>
     <script type="text/javascript" src="../js/prettify.js"></script>
-    <script type="text/javascript"> src="../templates/header.js"</script>
-    <script type="text/javascript" src="../js/jquery-min.js"></script>
-    <script type="text/javascript" src="../js/decorator.js"></script>
-
+    <script src="../templates/header.js" type="text/javascript"></script>
     <div id="left">
       <noscript>Please turn on Javascript to view this menu</noscript>
       <script src="../templates/left.js" type="text/javascript"></script>
@@ -35,15 +32,6 @@
       <p>—BOB DYLAN, <em>The Freewheelin' Bob Dylan</em></p>
     </div>
 
-    <p>Joran stands for a cold north-west wind which, every now and
-    then, blows forcefully on Lake Geneva. Located right in the middle
-    of Western-Europe, the surface of Lake Geneva is smaller than many
-    other European lakes. However, with its average depth of 153
-    meters, it is unusually deep, and happens to be, by volume, the
-    largest sweet water reserve in Western-Europe.
-    </p>
-
-
     <p>As apparent in previous chapters, logback relies on Joran, a
     mature, flexible and powerful configuration framework. Many of the
     capabilities offered by logback modules are only possible on
@@ -63,12 +51,11 @@
     folder.
     </p>
 
-    <p>To install Joran, simply <a
-    href="../download.html">download</a> logback and add
-    <em>logback-core-1.1.2.jar</em> to your
+    <p>To install Joran, simply <a href="../download.html">download</a>
+    logback and add <em>logback-core-1.0.4.jar</em> to your
     classpath.</p>
     
-    <h2 class="doAnchor">Historical perspective</h2>
+    <h2>Historical perspective</h2>
 
     <p>Reflection is a powerful feature of the Java language, making
     it possible to configure software systems declaratively. For
@@ -79,7 +66,7 @@
     configuration file, expressed in XML format. Annotations available
     in JDK 1.5 and heavily used in EJB 3.0 replace many directives
     previously found in XML files. Joran also makes use of annotations
-    but at a much smaller extent. Due to the dynamic nature of logback
+    but to a much smaller extent. Due to the dynamic nature of logback
     configuration data (compared to EJBs) Joran's use of annotations
     is rather limited.
     </p>
@@ -120,7 +107,7 @@
     exact matches and wildcard matches.
     </p>
 
-    <h3 class="doAnchor" name="saxOrDom">SAX or DOM?</h3>
+    <h3>SAX or DOM?</h3>
 
     <p>Due to the event-based architecture of the SAX API, a tool based
     on SAX cannot easily deal with forward references, that is,
@@ -140,10 +127,12 @@
     order.</em>
     </p>
 
-    <p>Moreover, the SAX API offers element location information which
+    <p>Joran was first implemented in DOM. However, the author
+    migrated to SAX in order to benefit from element location
+    information, available only with the SAX API. Location information
     allows Joran to display the exact line and column number where an
-    error occurred. Location information comes in very handy in the
-    identification of parsing problems.
+    error occurred, which comes in very handy in identifying parsing
+    problems.
     </p>
     
     <h3>Non goals</h3>
@@ -154,7 +143,7 @@
     </p>
 
 
-    <h3 class="doAnchor" name="pattern">Pattern</h3>
+    <h3><a name="pattern" href="#pattern">Pattern</a></h3>
 
     <p>A Joran pattern is essentially a string. There are two kind of
     patterns, <em>exact</em> and <em>wildcard</em>. The pattern "a/b"
@@ -171,7 +160,7 @@
     <code><a></code> element.
     </p>
 
-    <h3 class="doAnchor" name="action">Actions</h3>
+    <h3><a name="action" href="#action">Actions</a></h3>
     
     <p>As mentioned above, Joran parsing rules consists of the
     association of patterns. Actions extend the <a
@@ -216,7 +205,7 @@ public abstract class Action {
    empty/nop implementation provided by <code>Action</code>.</p>
 
 
-   <h3 class="doAnchor" name="ruleStore">RuleStore </h3>
+   <h3><a name="ruleStore" href="#ruleStore">RuleStore</a> </h3>
 
    <p>As mentioned previously, the invocation of actions according to
    matching patterns is a central concept in Joran. A rule is an
@@ -243,8 +232,8 @@ public abstract class Action {
    </p>
    
 
-   <h3 class="doAnchor" name="interpretationContext">Interpretation
-   context</h3>
+   <h3><a name="interpretationContext"
+   href="#interpretationContext">Interpretation context</a></h3>
 
    <p>To allow various actions to collaborate, the invocation of begin
    and end methods include an interpretation context as the first
@@ -263,7 +252,7 @@ public abstract class Action {
    <code>StatusManager</code>.
    </p>
    
-   <h3 class="doAnchor" name="helloWorld">Hello world</h3>
+   <h3><a name="helloWorld" href="#helloWorld">Hello world</a></h3>
    
    <p>The first example in this chapter illustrates the minimal
    plumbing required for using Joran. The example consists of a
@@ -312,7 +301,8 @@ public abstract class Action {
 
     <!-- ====================================================== -->
 
-    <h3 class="doAnchor" name="calculator">Collaborating actions</h3>
+    <h3><a name="calculator" href="#calculator">Collaborating
+    actions</a></h3>
    
     <p>The <em>logback-examples/src/main/java/joran/calculator/</em>
     directory includes several actions which collaborate together
@@ -479,7 +469,7 @@ public abstract class Action {
   <code>end()</code> method.</p>
   -->
 
-  <h3 class="doAnchor" name="implicit">Implicit actions</h3>
+  <h3><a name="implicit" href="#implicit">Implicit actions</a></h3>
 
   <p>The rules defined thus far are called explicit actions because an
   pattern/action association could be found in the rule store for the
@@ -580,8 +570,8 @@ Element [abc] asked to be printed.
   above (see previous paragraph).
   </p>
 
-  <h3 class="doAnchor" name="iaPractice">Implicit actions in
-  practice</h3>
+  <h3><a name="iaPractice" href="#iaPractice">Implicit actions in
+  practice</a></h3>
   
   <p>The respective Joran configurators of logback-classic and
   logback-access include just two implicit actions, namely <a
@@ -639,8 +629,8 @@ Element [abc] asked to be printed.
     </li>
   </ol>
 
-  <h4 class="doAnchor" name="defaultClassMapping">Default class
-  mapping</h4>
+  <h4><a name="defaultClassMapping"
+  href="#defaultClassMapping">Default class mapping</a></h4>
 
   <p>In logback-classic, there are a handful of internal rules mapping
   parent class/property name pairs to a default class. These are
@@ -699,7 +689,7 @@ Element [abc] asked to be printed.
   latest rules.
   </p>
   
-  <h4 class="doAnchor">Collection of properties</h4>
+  <h4>Collection of properties</h4>
 
   
   <p>Note that in addition to single simple properties or single
@@ -707,7 +697,7 @@ Element [abc] asked to be printed.
   properties, be they simple or complex. Instead of a setter method,
   the property is specified by an "adder" method.</p>
 
-  <h3 class="doAnchor" name="newRule">New rules on the fly</h3>
+  <h3><a name="newRule" href="#newRule">New rules on the fly</a></h3>
 
   <p>Joran includes an action which allows the Joran interpreter to
   learn new rules on the fly, that is while interpreting an XML
@@ -722,13 +712,13 @@ Element [abc] asked to be printed.
   </p>
 
   <pre class="prettyprint source">ruleMap.put(new Pattern("*/computation"), new ComputationAction1());
-<b>ruleStore.addRule(new Pattern("/computation/newRule"), new NewRuleAction());</b></pre>
+<b>ruleStore.addRule(new Pattern("/computation/new-rule"), new NewRuleAction());</b></pre>
 
   <p><a
   href="../xref/ch/qos/logback/core/joran/action/NewRuleAction.html"><code>NewRuleAction</code></a>,
   part of logback-core, works pretty much like the other actions.  It
   has a <code>begin()</code> and <code>end()</code> method, and is
-  called each time the parser finds a <em>newRule</em> element. When
+  called each time the parser finds a <em>new-rule</em> element. When
   invoked, the <code>begin()</code> method looks for <em>pattern</em>
   and <em>actionClass</em> attributes. It then instantiates the
   corresponding action class and adds the pattern/action association
@@ -737,24 +727,24 @@ Element [abc] asked to be printed.
 
   <p>Here is how new rules can be declared in an xml file:</p>
 
-  <pre class="prettyprint source"><newRule pattern="*/computation/literal"
+  <pre class="prettyprint source"><new-rule pattern="*/computation/literal"
           actionClass="chapters.onJoran.calculator.LiteralAction"/></pre>
 
-  <p>Using such newRule declarations, we can transform
+  <p>Using such new-rule declarations, we can transform
   <code>NewRuleCalculator</code> to behave like the
   <code>Calculator1</code> application we saw earlier.  involving the
   calculation, could be expressed this way:</p>
 
   <em>Example 10..<span class="autoEx"/>: Configuration file using new
   rules on the fly
-  (logback-examples/src/main/java/chapters/onJoran/newrule/newRule.xml)</em>
+  (logback-examples/src/main/java/chapters/onJoran/newrule/new-rule.xml)</em>
 
   <pre class="prettyprint source"><computation name="toto">
-  <newRule pattern="*/computation/literal" 
+  <new-rule pattern="*/computation/literal" 
             actionClass="chapters.onJoran.calculator.LiteralAction"/>
-  <newRule pattern="*/computation/add" 
+  <new-rule pattern="*/computation/add" 
             actionClass="chapters.onJoran.calculator.AddAction"/>
-  <newRule pattern="*/computation/multiply" 
+  <new-rule pattern="*/computation/multiply" 
             actionClass="chapters.onJoran.calculator.MultiplyAction"/>
 
   <computation>
@@ -768,7 +758,7 @@ Element [abc] asked to be printed.
 </computation></pre>
 
 
-  <p class="command">java java chapters.onJoran.newRule.NewRuleCalculator src/main/java/chapters/onJoran/newRule/newRule.xml</p>
+  <p class="command">java java chapters.onJoran.newRule.NewRuleCalculator src/main/java/chapters/onJoran/newRule/new-rule.xml</p>
 
   <p>yields</p>
 
diff --git a/docs/manual/receivers.html b/docs/manual/receivers.html
deleted file mode 100644
index 205b104..0000000
--- a/docs/manual/receivers.html
+++ /dev/null
@@ -1,541 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
-    <title>Chapter 14: Receivers</title>
-    <link rel="stylesheet" type="text/css" href="../css/common.css" />
-    <link rel="stylesheet" type="text/css" href="../css/screen.css" media="screen" />
-    <link rel="stylesheet" type="text/css" href="../css/_print.css" media="print" />
-    <link rel="stylesheet" type="text/css" href="../css/prettify.css" media="screen"/>    
-  </head>
-  <body onload="prettyPrint(); decorate();">
-    <script type="text/javascript">prefix='../';</script>
-    <script type="text/javascript" src="../js/prettify.js"></script>
-    <script type="text/javascript" src="../templates/header.js"></script>
-    <script type="text/javascript" src="../js/dsl.js"></script>
-    <script type="text/javascript" src="../js/jquery-min.js"></script>
-    <script type="text/javascript" src="../js/decorator.js"></script>
-    <div id="left">      
-      <noscript>Please turn on Javascript to view this menu</noscript>
-      <script src="../templates/left.js" type="text/javascript"></script>
-    </div>    
-    <div id="right">
-      <script src="menu.js" type="text/javascript"></script>
-    </div>
-
-    <div id="content">
-
-      <h1>Chapter 14: Receivers</h1>
-
-      <div class="quote">
-
-        <p><em>You cannot swim for new horizons until you have courage 
-           to lose sight of the shore.</em></p>
-  
-        <p>—WILLIAM FAULKNER</p>
-      </div>
-
-
-      <script src="../templates/creative.js" type="text/javascript"></script>
-      <script src="../templates/setup.js" type="text/javascript"></script>
-    
-      <h2 class="doAnchor" name="whatIsAReceiver">What is a Receiver?</h2>
-    
-      <p>A <em>receiver</em> is a Logback component that receives logging
-      events from a remote appender and logs each received event according
-      to local policy.  Using a combination of socket-based appenders and
-      receivers, it is possible to construct sophisticated topologies
-      for distribution of application logging events over a network.</p>
-  
-      <p>A receiver extends the <a
-      href="../xref/ch/qos/logback/classic/net/ReceiverBase.html">
-      <code>ch.qos.logback.classic.net.ReceiverBase</code></a> class.
-      By virtue of the fact that a receiver extends this class, a
-      receiver participates in the Logback component <a
-      href="../xref/ch/qos/logback/core/spi/LifeCycle.html">LifeCycle</a>
-      and a receiver is <a
-      href="../xref/ch/qos/logback/core/spi/ContextAware.html">
-      ContextAware</a>.</p>
-    
-      <p>Historically, support for logging event delivery over a network
-      connection in Logback has been provided by <code>SocketAppender</code>
-      and the corresponding <code>SimpleSocketServer</code>.  The appender
-      acts as a client, initiating a network connection to the server
-      application, and delivering logging events via the network connection.  
-      The receiver component and corresponding appender support offers much 
-      greater flexibility.</p>
-    
-      <p>A receiver component is configured in <em>logback.xml</em>, just
-      like any other logback component.  This allows the full capabilities
-      of <a href="onJoran.html">Joran</a> to be utilized in configuring
-      a receiver component.  Moreover, <em>any</em> application can 
-      receive logging events from remote appenders by simply configuring
-      one or more receiver components.</p>
-    
-      <p>Connection initiation between an appender and a receiver 
-      can occur in either direction.  A receiver can act in the role of a
-      server, passively listening for connections from remote appender 
-      clients.  Alternatively, a receiver can act in the client role,
-      initiating a connection to a remote appender which is acting in the 
-      server role.  Regardless of the respective roles of the
-      appender and receiver, <em>logging events always flow from 
-      the appender towards the receiver</em>.</p>
-    
-      <p>The flexibility to allow a receiver to initiate the connection
-      to an appender is particularly useful in certain situations:
-      </p>
-      <ul>
-        <li>For security reasons, a central logging server may be
-          located behind a network firewall that does not allow incoming
-          connections.  Using receiver components acting in the client
-          role, the central logging server (inside the firewall) 
-          can initiate connections to the applications of interest 
-          (outside the firewall).
-        </li>
-        <li>It is often desirable for developer tools (such as IDE plugins)
-          and enterprise management applications to have access to the
-          logging event stream of running applications.  Traditionally,
-          Logback has supported this (for example in Logback Beagle) by
-          requiring the recipient application (e.g. a developer tool running
-          in an IDE) to act in the server role, passively listening for 
-          connections from a remote appender.  This can prove difficult to 
-          manage, especially for tools running on a developer's workstation, 
-          which may indeed by mobile.  However, such tools can now be 
-          implemented using a Logback receiver component acting in the 
-          client role, initiating a connection to a remote appender in 
-          order to receive logging events for local display, filtering, 
-          and alerting.
-        </li>
-      </ul>
-
-      <p>A logback configuration can include any number of receiver components
-      acting in any combination of the server or client roles.  The only 
-      restrictions are that each receiver acting in the server role must
-      listen on a distinct port, and each receiver acting in the client
-      role will connect to exactly one remote appender.</p>
-    
-      <h2 class="doAnchor" name="receiverServerComponents">Receivers
-      that Act in the Server Role</h2>
-    
-      <p>A receiver that is configured to act in the server role passively
-      listens for incoming connections from remote appenders.  This is 
-      functionally equivalent to using the standalone
-      <code>SimpleSocketServer</code> application, except that by using
-      the receiver component, <em>any</em> application that uses Logback
-      Classic can receive logging events from remote appenders by simply
-      configuring the receiver in <em>logback.xml</em>.</p>
-        
-      <p>
-        <img border="1" src="images/chapters/receivers/serverSocketReceiver.png" "/>
-      </p>
-
-      <p>Logback includes two receiver components that act in the
-      server role; <a
-      href="../xref/ch/qos/logback/classic/net/server/ServerSocketReceiver.html">
-      <code>ServerSocketReceiver</code></a> and its SSL-enabled
-      subtype
-      <a href="../xref/ch/qos/logback/classic/net/server/SSLServerSocketReceiver.html">
-      <code>SSLServerSocketReceiver</code></a>.  Both of these receiver
-      components are designed to accept connections from incoming
-      <code>SocketAppender</code> (or <code>SSLSocketAppender</code>)
-      clients.</p>
-        
-      <p>The <code>ServerSocketReceiver</code> components provide the 
-      following configurable properties:</p>
-    
-      <table class="bodyTable striped">
-        <tr>
-          <th>Property Name</th>
-          <th>Type</th>
-          <th>Description</th>
-        </tr>
-        <tr>
-          <td><span class="prop" container="serverSocketReceiver">address</span></td>
-          <td><code>String</code></td>
-          <td>The local network interface address on which the receiver
-          will listen.  If this property is not specified, the receiver
-          will listen on all network interfaces.</td>
-        </tr>
-        <tr>
-          <td><span class="prop" container="serverSocketReceiver">port</span></td>
-          <td><code>int</code></td>
-          <td>The TCP port on which the receiver will listen.  If this
-          property is not specified, a default value will be used.</td>
-        </tr>
-        <tr>
-          <td><span class="prop" container="serverSocketReceiver">ssl</span></td>
-          <td><code>SSLConfiguration</code></td>
-          <td>Supported only for <code>SSLServerSocketReceiver</code>, this
-              property provides the SSL configuration that will be used by
-              the receiver, as described in <a href="usingSSL.html">Using SSL</a>.
-          </td>
-        </tr>
-      </table>
-    
-      <h3 class="doAnchor" name="usingServerSocketReceiver">Using
-      ServerSocketReceiver</h3>
-    
-      <p>The following configuration uses the 
-      <code>ServerSocketReceiver</code> component with a minimal local 
-      appender and logger configuration.  Logging events received from
-      a remote appender will be matched by the root logger and delivered
-      to the local console appender.</p>
-    
-      <p class="example">Example: Basic ServerSocketReceiver Configuration
-      (logback-examples/src/main/java/chapters/receivers/socket/receiver1.xml)</p>
-
-      <span class="asGroovy" onclick="return asGroovy('receiver1');">View as .groovy</span>
-  <pre id="receiver1" class="prettyprint source"><configuration debug="true">
-
-  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
-    <encoder>
-      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
-    </encoder>
-  </appender>
-
-  <root level="DEBUG">
-    <appender-ref ref="CONSOLE" />
-  </root>
-
-  <receiver class="ch.qos.logback.classic.net.server.ServerSocketReceiver">
-    <port>${port}</port>
-  </receiver>
-
-</configuration></pre>
-  
-      <p>Note that the receiver component's <em>class</em> 
-      attribute identifies the receiver subtype that we wish to use.  In
-      this example we are using <code>ServerSocketReceiver</code>.</p>
-    
-      <p>Our example server application is very similar in function and
-      design to <code>SimpleSocketServer</code>.  It simply accepts a
-      path for a logback configuration file as a command line argument,
-      and runs the given configuration.  While our example is somewhat
-      trivial, keep in mind that you can configure logback's 
-      <code>ServerSocketReceiver</code> (or <code>SSLServerSocketReceiver</code>) 
-      component in <em>any</em> application.
-      </p>
-    
-      <p>From a shell in the <em>logback-examples</em> directory, 
-      we can run our example server application as follows:</p>
-    
-      <p class="source">java -Dport=6000 <a href="../xref/chapters/receivers/socket/ReceiverExample.html">chapters.receivers.socket.ReceiverExample</a> \ 
-      src/main/java/chapters/receivers/socket/receiver1.xml</p>
-  
-      <p>We can connect to the running receiver using a client application
-      that is configured with a <code>SocketAppender</code>.  Our example
-      client application simply loads a logback configuration that will
-      connect a socket appender to our example receiver.  It then awaits
-      input from the user in the form of a message that will be relayed to
-      the receiver.  We can run the example client application as follows:
-      </p>
-    
-      <p class="source">java -Dhost=localhost -Dport=6000 \
-      <a href="../xref/chapters/receivers/socket/AppenderExample.html">chapters.receivers.socket.AppenderExample </a>\
-      src/main/java/chapters/receivers/socket/appender1.xml</p>
-    
-      <h3 class="doAnchor" name="usingSSLServerSocketReceiver">Using
-      SSLServerSocketReceiver</h3>
-
-      <p>The following configuration repeats the same minimal appender
-      and logger configuration, but uses the SSL-enabled receiver component
-      that acts in the server role.</p>
-
-      <p class="example">Example: Basic SSLServerSocketReceiver Configuration
-      (logback-examples/src/main/java/chapters/receivers/socket/receiver2.xml)</p>
-      <span class="asGroovy" onclick="return asGroovy('receiver2');">View as .groovy</span>
-  <pre id="receiver2" class="prettyprint source"><configuration debug="true">
-
-  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
-    <encoder>
-      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
-    </encoder>
-  </appender>
-
-  <root level="DEBUG">
-    <appender-ref ref="CONSOLE" />
-  </root>
-
-  <receiver class="ch.qos.logback.classic.net.server.SSLServerSocketReceiver">
-    <port>${port}</port>
-    <ssl>
-      <keyStore>
-        <location>${keystore}</location>
-        <password>${password}</password>
-      </keyStore>
-    </ssl>
-  </receiver>
-
-</configuration></pre>
-
-      <p>The essential differences between this configuration and the
-      previous example using <code>ServerSocketReceiver</code> are the 
-      specification of <code>SSLServerSocketReceiver</code> in the
-      <em>class</em> attribute and the presence of the nested 
-      <span class="prop">ssl</span> property, which is used here to 
-      specify the location and password for the key store containing the 
-      receiver's private key and certificate, using substitution variables. 
-      See <a href="usingSSL.html">Using SSL</a> for details on 
-      configuring SSL properties for Logback components.</p>    
- 
-      <p>We can run this configuration using the same example server
-      configuration, with just a couple of additional configuration
-      properties:</p>
-
-      <p class="source">java -Dport=6001 \
-      -Dkeystore=file:src/main/java/chapters/appenders/socket/ssl/keystore.jks \
-      -Dpassword=changeit \
-      chapters.receivers.socket.ReceiverExample \
-      src/main/java/chapters/receivers/socket/receiver2.xml</p>
-  
-      <p>Note that the <em>keystore</em> property given on the command
-      line specifies a file URL that identifies the location of the key 
-      store.  You may also use a classpath URL as described in 
-      <a href="usingSSL.html">Using SSL</a>.
-      </p>
-    
-      <p>We can connect to the running receiver using a client application
-      that is configured with a <code>SSLSocketAppender</code>.  We use 
-      the sample example client application used in the previous example,
-      with a configuration file that uses an SSL-enabled appender.  We
-      run the example as follows:
-      </p>
-    
-      <p class="source">java -Dhost=localhost -Dport=6001 \
-      -Dtruststore=file:src/main/java/chapters/appenders/socket/ssl/truststore.jks \
-      -Dpassword=changeit \
-      chapters.receivers.socket.AppenderExample \
-      src/main/java/chapters/receivers/socket/appender2.xml</p>
-    
-      <p>Note that our example is using a self-signed X.509 credential that 
-      is suitable for testing and experimentation, only.  <strong>In a 
-      production setting, you should obtain an appropriate X.509 credential 
-      to identify your SSL-enabled logback components</strong>.  See 
-      <a href="usingSSL.html">Using SSL</a> for more information.</p>
-  
-      <h2 class="doAnchor" name="receiverClientComponents">Receivers
-      that Act in the Client Role</h2>
-    
-      <p>A receiver that is configured to act in the client role initiates
-      a connection to a remote appender.  The remote appender must be a
-      server type, such as <code>ServerSocketAppender</code>.</p>  
-    
-      <p>
-        <img border="1" src="images/chapters/receivers/socketReceiver.png"/>
-      </p>
-
-      <p>Logback includes two receiver components that act in the client
-      role; <a href="../xref/ch/qos/logback/classic/net/SocketReceiver.html">
-      <code>SocketReceiver</code></a> and its SSL-enabled subtype
-      <a href="../xref/ch/qos/logback/classic/net/SSLSocketReceiver.html">
-      <code>SSLSocketReceiver</code></a>.  Both of these receiver
-      components are designed to initiate a connection to a remote appender
-      that is a <code>ServerSocketAppender</code> 
-      (or <code>SSLServerSocketAppender</code>).</p>
-        
-      <p>The following configuration properties are supported by 
-      <code>SocketReceiver</code> subtypes:</p>
-    
-      <table class="bodyTable striped">
-        <tr>
-        <th>Property Name</th>
-        <th>Type</th>
-        <th>Description</th>
-        </tr>
-        <tr>
-          <td><span class="prop" container="SocketReceiver">remoteHost</span></td>
-          <td><code>String</code></td>
-          <td>The hostname or address of the remote server socket appender.</td>
-        </tr>
-        <tr>
-          <td><span class="prop" container="SocketReceiver">port</span></td>
-          <td><code>int</code></td>
-          <td>The port number of the remote server socket appender.</td>
-        </tr> 
-        <tr>
-          <td><span class="prop" container="socket">reconnectionDelay</span></td>
-          <td><code>int</code></td>
-          <td>
-            A positive integer representing the number of milliseconds to wait
-            before attempting to reconnect after a connection failure.  The
-            default value is 30000 (30 seconds).
-          </td>
-        </tr>
-        <tr>
-          <td><span class="prop" container="SocketReceiver">ssl</span></td>
-          <td><code>SSLConfiguration</code></td>
-          <td>Supported only for <code>SSLSocketReceiver</code>, this
-              property provides the SSL configuration that will be used for
-              this receiver, as described in <a href="usingSSL.html">Using SSL</a>.
-          </td>
-        </tr>
-      </table>
-        
-      <h3 class="doAnchor" name="usingSocketReceiver">Using
-      SocketReceiver</h3>
-
-      <p>The configuration used for <code>SocketReceiver</code>
-      is quite similar to the previous example that used
-      <code>ServerSocketReceiver</code>.  The differences relate to the 
-      fact that the roles of client and server are reversed; a receiver
-      of type <code>SocketReceiver</code> is a client, and the remote
-      appender acts as a server.</p>
-        
-      <p class="example">Example: Basic SocketReceiver Configuration
-      (logback-examples/src/main/java/chapters/receivers/socket/receiver3.xml)</p>
-      <span class="asGroovy" onclick="return asGroovy('receiver3');">View as .groovy</span>
-  <pre id="receiver3" class="prettyprint source"><configuration debug="true">
-    
-  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">    
-    <encoder>
-      <pattern>%date %-5level [%thread] %logger - %message%n</pattern>
-    </encoder>
-  </appender>
-
-  <root level="DEBUG">
-    <appender-ref ref="CONSOLE" />
-  </root>  
-
-  <receiver class="ch.qos.logback.classic.net.SocketReceiver">
-    <remoteHost>${host}</remoteHost>
-    <port>${port}</port>
-    <reconnectionDelay>10000</reconnectionDelay>
-  </receiver>
-
-</configuration></pre>
-        
-      <p>This configuration will cause logback to connect to a 
-      <code>ServerSocketAppender</code> running on the host and port specified
-      by the <em>host</em> and <em>port</em> substitution variables.  Logging
-      events received from the remote appender will be logged locally 
-      (according to the configuration shown here) via a console appender.
-      </p>
-   
-      <p>Assuming you are in the <em>logback-examples/</em> directory, 
-      you can run this example configuration using the following command:</p>
-
-         
-
-      <p>The example loads the configuration and then simply waits for logging
-      events from the remote appender.  If you run this example when the remote
-      appender is not running, you'll see <em>connection refused</em> messages
-      appearing in the log output, periodically.  The receiver will 
-      periodically attempt to reconnect to the remote appender until it 
-      succeeds or until the logger context is shut down.  The delay
-      interval between attempts is configurable using the 
-      <span class="prop">reconnectionDelay</span> property as shown in the
-      example configuration.<p class="source">java -Dhost=localhost -Dport=6000 \
-      chapters.receivers.socket.ReceiverExample \
-      src/main/java/chapters/receivers/socket/receiver3.xml</p>
-
-      <p>We can provide a remote appender to which our example receiver
-      can connect, using the same appender example used previously.  The 
-      example loads a logback configuration containing a 
-      <code>ServerSocketAppender</code>, and then waits input from the
-      user consisting of a message that will be delivered to connected
-      receivers.  We can run the example appender application as follows:
-      </p>
-
-      <p class="source">java -Dport=6000 \
-      chapters.receivers.socket.AppenderExample \
-      src/main/java/chapters/receivers/socket/appender3.xml</p>   
-
-      <p>If you enter a message to send when the receiver is not connected,
-      note that the message is simply discarded.</p>
-
-      <h3 class="doAnchor" name="usingSSLSocketReceiver">Using
-      SocketSSLReceiver</h3>
-
-
-      <p>The configuration needed for <code>SSLSocketReceiver</code> is very 
-      similar to that used with <code>SocketReceiver</code>.  The essential 
-      differences are in the class specified for the receiver and the ability 
-      to nest the <span class="prop">ssl</span> property to specify SSL 
-      configuration properties.  The following example illustrates a basic 
-      configuration:
-      </p>
-   
-      <p class="example">Example: Basic SSLSocketReceiver Configuration
-      (logback-examples/src/main/java/chapters/receivers/socket/receiver4.xml)</p>
-      <span class="asGroovy" onclick="return asGroovy('receiver4');">View as .groovy</span>
-  <pre id="receiver4" class="prettyprint source"><configuration debug="true">
-
-  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">    
-    <encoder>
-      <pattern>%date %-5level [%thread] %logger - %message%n</pattern>
-    </encoder>         
-  </appender>
-
-  <root level="DEBUG">
-    <appender-ref ref="CONSOLE" />
-  </root>  
- 
-  <receiver class="ch.qos.logback.classic.net.SSLSocketReceiver">
-    <remoteHost>${host}</remoteHost>
-    <port>${port}</port>
-    <reconnectionDelay>10000</reconnectionDelay>
-    <ssl>
-      <trustStore>
-        <location>${truststore}</location>
-        <password>${password}</password>
-      </trustStore>
-    </ssl>
-  </receiver>
-
-</configuration></pre>
-
-      <p>Note that the <em>class</em> attribute now specifies 
-      <code>SSLSocketReceiver</code> and that in addition to the configuration
-      properties shown in the previous example, this configuration contains
-      an SSL configuration specifying the location and password for a 
-      trust store that will be used in validating that the remote appender is
-      trusted.  See <a href="usingSSL.html">Using SSL</a> for more information 
-      on configuring SSL properties.
-      </p>
-  
-      <p>You can run this example configuration using the following command:</p>
-  
-      <p class="source">java -Dhost=localhost -Dport=6001 \
-      -Dtruststore=file:src/main/java/chapters/appenders/socket/ssl/truststore.jks \
-      -Dpassword=changeit \
-      chapters.receivers.socket.ReceiverExample \
-      src/main/java/chapters/receivers/socket/receiver4.xml</p>   
-   
-      <p>Once started, the receiver attempts to connect to the specified 
-      remote appender.  Assuming that the appender is not yet running, you
-      will see a "connection refused" message appearing in the log output
-      periodically; the receiver will periodically retry the connection to
-      the remote appender after delaying for the period of time specified by
-      the <span class="prop">reconnectionDelay</span> property.
-      </p>
-  
-      <p>We can provide a remote appender to which our example receiver
-      can connect, using the same appender example used previously.  The 
-      example loads a logback configuration containing a 
-      <code>SSLServerSocketAppender</code>, and then awaits input from the  
-      user consisting of a message that will be delivered to connected
-      receivers.  We can run the example appender application as follows:
-      </p>
-
-      <p class="source">java -Dport=6001 \
-      -Dkeystore=file:src/main/java/chapters/appenders/socket/ssl/keystore.jks \
-      -Dpassword=changeit \
-      chapters.receivers.socket.AppenderExample \
-      src/main/java/chapters/receivers/socket/appender4.xml</p>   
-
-      <p>If you enter a message to send when the receiver is not connected,
-      note that the message is simply discarded.</p>
-
-      <p>It is important to note once again that our example is using a 
-      self-signed X.509 credential that is suitable for testing and 
-      experimentation, only.  <strong>In a production setting, you should 
-      obtain an appropriate X.509 credential to identify your SSL-enabled
-      logback components</strong>.  See <a href="usingSSL.html">Using SSL</a> 
-      for more information.</p>
-  
-        <script src="../templates/footer.js" type="text/javascript"></script>
-
-    </div>
-  </body>  
-</html>
diff --git a/docs/manual/usingSSL.html b/docs/manual/usingSSL.html
deleted file mode 100644
index b6dd8eb..0000000
--- a/docs/manual/usingSSL.html
+++ /dev/null
@@ -1,1294 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
-    <title>Chapter 15: Using SSL</title>
-    <link rel="stylesheet" type="text/css" href="../css/common.css" />
-    <link rel="stylesheet" type="text/css" href="../css/screen.css" media="screen" />
-    <link rel="stylesheet" type="text/css" href="../css/_print.css" media="print" />
-    <link rel="stylesheet" type="text/css" href="../css/prettify.css" media="screen" />    
-
-  </head>
-  <body onload="prettyPrint(); decorate();">
-    <script type="text/javascript">prefix='../';</script>
-    <script type="text/javascript" src="../js/prettify.js"></script>
-    <script type="text/javascript" src="../templates/header.js"></script>
-    <script type="text/javascript" src="../js/dsl.js"></script>
-    <script type="text/javascript" src="../js/jquery-min.js"></script>
-    <script type="text/javascript" src="../js/decorator.js"></script>
-    <div id="left">      
-      <noscript>Please turn on Javascript to view this menu</noscript>
-      <script src="../templates/left.js" type="text/javascript"></script>
-    </div>    
-    <div id="right">
-      <script src="menu.js" type="text/javascript"></script>
-    </div>
-    <div id="content">    
-      <h1>Chapter 15: Using SSL</h1>
-      
-      <div class="quote">
-
-        <p><em>The whole difference between construction and creation is 
-        exactly this: that a thing constructed can only be loved after it 
-        is constructed; but a thing created is loved before it exists.</em></p>
-        <p>—CHARLES DICKENS</p>
-      </div>
-
-
-      <script src="../templates/creative.js" type="text/javascript"></script>
-      <!-- script src="../templates/setup.js" type="text/javascript"></script -->
-
-      <p>Logback supports the use of the Secure Sockets Layer 
-         (SSL) when delivering log events from a socket-based appender
-         to a remote receiver.  When using an SSL-enabled appender and  
-         corresponding receiver, serialized logging events are delivered 
-         over a secure channel.
-      </p>
-      
-      <h2 class="doAnchor">SSL and Component Roles</h2>
-      
-      <p>Logback components such as appenders and receivers may act in
-      either the server role or the client role, with respect to network
-      connection initiation. When acting in the server role, a logback
-      component passively listens for connections from remote client
-      components.  Conversely, a component acting in the client role 
-      initiates a connection to remote server component.  For example, 
-      an appender acting in the <em>client</em> role connects to a 
-      receiver acting in the <em>server</em> role.  Or a receiver
-      acting in the <em>client</em> role connects to an appender
-      acting in the <em>server</em> role.</p>
-      
-      <p>The roles of the components are generally determined by the
-      component type.  For example, an <code>SSLServerSocketAppender</code>
-      is an appender component that acts in the server role, while an
-      <code>SSLSocketAppender</code> is an appender component that acts
-      in the client role.  Thus the developer or application administrator 
-      can configure Logback components to support the desired direction
-      of network connection initiation.</p>
-      
-      <p>The direction of connection initiation is significant in the 
-      context of SSL, because in SSL a server component must possess an
-      X.509 credential to identify itself to connecting clients.  A
-      client component, when connecting to the server, uses the server's
-      certificate to validate that the server is trusted.  The
-      developer or application administrator must be aware of the 
-      roles of Logback components, so as to properly configure the
-      server's key store (containing the server's X.509 credential) 
-      and the client's trust store (containing self-signed 
-      root certificates used when validating server trust).</p>
-      
-      <p>When SSL is configured for <em>mutual authentication</em>, then
-      both the server component and the client component must possess
-      valid X.509 credentials whose trust can be asserted by their 
-      respective peer.  Mutual authentication is configured in the
-      server component, therefore the developer or application 
-      administrator must be aware of which components are acting in 
-      the server role.</p>
-      
-      <p>In this chapter, we use the term <em>server component</em>
-      or simply <em>server</em> to refer to a Logback component such
-      as an appender or receiver that is acting in the server role.  We
-      use the term <em>client component</em> or simply <em>client</em>
-      to refer to a component that is acting in the client role.
-            
-      <h2 class="doAnchor">SSL and X.509 Certificates</h2>
-      
-      <p>In order to use SSL-enabled Logback components, you will need an
-         X.509 credential (a private key, corresponding certificate,
-         and CA certification chain) to identify your components
-         that act as SSL servers.  If you wish to use mutual authentication, 
-         you will also need credentials for your components that 
-         act as SSL clients.
-      </p>      
-      <p>While you can use a credential issued by a commercial
-         certification authority (CA), you can also use a certificate issued
-         from your own internal CA or even a self-signed certificate.  The
-         following is all that is required:
-      </p> 
-      <ol>
-        <li>The server component must be configured 
-            with a key store containing the server's private key, 
-            corresponding certificate, and CA certification chain
-             (if not using a self-signed certificate).
-        </li>
-        <li>The client component must be configured 
-            with a trust store containing trusted root CA 
-            certificate(s) or the server's self-signed root certificate.
-        </li>
-      </ol>
-          
-      <h2 class="doAnchor">Configuring Logback Components for SSL</h2>
-      <p>The Java Secure Sockets Extension (JSSE) and Java Cryptography 
-         Architecture (JCA) which is used to implement Logback's SSL
-         support has many configurable options, and a pluggable provider
-         framework that allows the built-in SSL and cryptographic
-         capabilities of the platform to be replaced or augmented.
-         SSL-enabled Logback components provide the ability to fully specify 
-         all of the configurable aspects of the SSL engine and cryptographic 
-         providers, to meet your unique security needs.
-      </p>
-      
-      <h3>Basic SSL Configuration using JSSE System Properties</h3>
-      <p>Fortunately, nearly all of the configurable SSL properties for
-         SSL-enabled Logback components have reasonable defaults.  In 
-         most cases all that is needed is the configuration of some JSSE 
-         system properties.
-      </p>
-      
-      <p>The remainder of this section describes the specific JSSE
-         properties that are needed in most environments. See 
-         <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#InstallationAndCustomization">
-         Customizing JSSE</a> in the <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html">
-         JSSE Reference Guide</a> for more information on setting JSSE
-         system properties to customize JSSE.      
-      </p>
-
-      <p>If you're using any of Logback's SSL-enabled appender or receiver
-         components that act in the server role (e.g. 
-         <code>SSLServerSocketReceiver</code>, 
-         <code>SSLServerSocketAppender</code>,
-         or <code>SimpleSSLSocketServer</code>) you'll need to configure 
-         JSSE system properties that provide the location, type, and 
-         password of the key store containing a private key and 
-         certificate.
-      </p>
-      
-      <h4><a name="basicConfig.keyStore"></a>
-          System Properties for Server Key Store Configuration</h4>
-      <table class="bodyTable striped">
-        <tr>
-          <th>Property Name</th>
-          <th>Description</th>
-        </tr>
-        <tr>
-          <td><code>javax.net.ssl.keyStore</code></td>
-          <td>Specifies a filesystem path to the file containing your
-              server components' private key and certificate.</td>
-        </tr>
-        <tr>
-          <td><code>javax.net.ssl.keyStoreType</code></td>
-          <td>Specifies the key store type.  If this property is not
-              specified, the platform's default type (JKS) is assumed.
-          </td>
-        </tr>
-        <tr>
-          <td><code>javax.net.ssl.keyStorePassword</code></td>
-          <td>Specifies the password needed to access the key store.
-          </td>
-        </tr>
-      </table>
-
-      <p>See <a href="#Examples">Examples</a> below for examples of
-         setting these system properties when starting an application
-         that uses Logback's SSL-enabled server components.
-      </p>
-         
-      <p>If your server component is using a certificate 
-         that was signed by a commercial certification authority (CA), 
-         <strong>you probably don't need to provide <em>any</em> SSL 
-         configuration in your applications that use SSL-enabled client 
-         components</strong>.  When using a commercially-signed 
-         certificate for your server  component, simply setting the 
-         system key store properties for JVM that runs the server 
-         component is usually all that is needed.
-      </p>
-               
-      <p>If you are using either a self-signed server certificate
-         or your server certificate was signed by a
-         certification authority (CA) that is not among those whose root
-         certificates are in the Java platform's default trust store
-         (e.g. when your organization has its own internal certification
-         authority), you will need to configure the JSSE system
-         properties that provide the location, type, and password of the
-         trust store containing your server's certificate or trusted
-         root certificates for the certification authority (CA) that
-         signed your server's certificate.  <strong>These properties will 
-         need to be set in each application that utilizes an SSL-enabled
-         client component</strong>.
-      </p>
-        
-      <h4><a name="basicConfig.trustStore"></a>
-          System Properties for Client Trust Store Configuration</h4>
-      <table class="bodyTable striped">
-        <tr>
-          <th>Property Name</th>
-          <th>Description</th>
-        </tr>
-        <tr>
-          <td><code>javax.net.ssl.trustStore</code></td>
-          <td>Specifies a filesystem path to the file containing your
-              server component's certificate or trusted root
-              certificate(s) for the certification authority (CA) that
-              signed the server certificate.</td>
-        </tr>
-        <tr>
-          <td><code>javax.net.ssl.trustStoreType</code></td>
-          <td>Specifies the trust store type.  If this property is not
-              specified, the platform's default type (JKS) is assumed.
-          </td>
-        </tr>
-        <tr>
-          <td><code>javax.net.ssl.trustStorePassword</code></td>
-          <td>Specifies the password needed to access the trust store.
-          </td>
-        </tr>
-      </table>
-
-      <p>See <a href="#Examples">Examples</a> below for examples of
-         setting these system properties when starting an application 
-         that utilizes Logback's SSL-enabled client components.
-      </p>         
-            
-      <h3 class="doAnchor"><a name="SSLConfiguration"></a>
-         Advanced SSL Configuration</h3>
-      <p>In certain situations, the basic SSL configuration using 
-         JSSE system properties is not adequate.  For example, if you
-         are using the <code>SSLServerSocketReceiver</code> component in a web
-         application, you may wish to use a different credential to
-         identify your logging server for your remote logging clients
-         than the credential that your web server uses to identify
-         itself to web clients.  You might wish to use SSL client
-         authentication on your logging server to ensure that only
-         authentic and authorized remote loggers can connect. Or perhaps
-         your organization has strict policies regarding the SSL
-         protocols and cipher suites that may be utilized on the
-         organization's network.  For any of these needs, you will need
-         to make use of Logback's advanced configuration options for SSL.
-      </p>
-      <p>When configuring a Logback component that supports SSL, you 
-         specify the SSL configuration using the <code>ssl</code> 
-         property in the configuration of the component.          
-      </p>      
-      <p>For example, if you wish to use <code>SSLServerSocketReceiver</code>
-         and configure the key store properties for your logging 
-         server's credential, you could use a configuration such as the 
-         following.
-      </p>
-
-      <span class="asGroovy" onclick="return asGroovy('logback-ssl-serverKeyStore');">View as .groovy</span>
-      <pre id="logback-ssl-serverKeyStore" class="prettyprint source"><configuration>
-
-  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
-    <encoder>
-      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
-    </encoder>
-  </appender>
-  
-  <root level="debug">
-    <appender-ref ref="CONSOLE" />
-  </root>
-
-  <receiver class="ch.qos.logback.classic.net.server.SSLServerSocketReceiver">
-    <ssl>
-      <keyStore>
-        <location>classpath:/logging-server-keystore.jks</location>
-        <password>changeit</password>
-      </keyStore>
-    </ssl>
-  </receiver> 
-
-</configuration></pre>
-
-      <p>This configuration specifies the location of the key store
-         as <em>logging-server-keystore.jks</em> at the root of
-         the application's classpath.  You could alternatively 
-         specify a <code>file:</code> URL to identify the location of
-         the key store.
-      </p>
-      <p>If you wanted to use <code>SSLSocketAppender</code> in your
-         application's Logback configuration, but did not want to change
-         the application's default trust store using the JSSE
-         <code>javax.net.ssl.trustStore</code> property, you could 
-         configure the appender as follows.
-      </p>          
-
-      <span class="asGroovy" onclick="return asGroovy('logback-ssl-clientTrustStore');">View as .groovy</span>
-      <pre id="logback-ssl-clientTrustStore" class="prettyprint source"><configuration>
-  <appender name="SOCKET" class="ch.qos.logback.classic.net.SSLSocketAppender">
-    <ssl>
-      <trustStore>
-        <location>classpath:/logging-server-truststore.jks</location>
-        <password>changeit</password>
-      </trustStore>
-    </ssl>
-  </appender>
-  
-  <root level="debug">
-    <appender-ref ref="SOCKET" />
-  </root>
-
-</configuration></pre>
-
-      <p>This configuration specifies the location of the trust store
-         as <em>logging-server-truststore.jks</em> at the root of
-         the application's classpath.  You could alternatively 
-         specify a <code>file:</code> URL to identify the location of
-         the trust store.
-      </p>
-
-      <h4>SSL Configuration Properties</h4>
-      
-      <p>JSSE exposes a large number of configurable options, and 
-         Logback's SSL support makes nearly all of them available for
-         you to specify in your SSL-enabled component configuration.  
-         When using XML configuration, SSL properties are introduced to 
-         these components by nesting an <ssl> element in the 
-         component configuration.  This configuration element corresponds 
-         to the 
-         <a href="../xref/ch/qos/logback/core/net/ssl/SSLConfiguration.html">
-         <code>SSLConfiguration</code></a> class.
-      </p>
-      
-      <p>When configuring SSL for your components
-         you need only configure those SSL properties for which the
-         defaults are not adequate.  Overspecifying the SSL configuration
-         is often the cause of difficult-to-diagnose problems.
-      </p>
- 
-      <p>The following table describes the top-level SSL configuration
-         properties.  Many of these properties introduce additional
-         subproperties, which are described in tables that follow 
-         after the top-level properties are described.
-      </p>
-            
-      <table class="bodyTable striped">
-        <tr>
-          <th>Property Name</th>
-          <th>Type</th>
-          <th>Description</th>
-        </tr>
-        <tr>
-          <td><span class="prop" container="ssl">keyManagerFactory</span></td>
-          <td><a href="../xref/ch/qos/logback/core/net/ssl/KeyManagerFactoryFactoryBean.html">
-              <code>KeyManagerFactoryFactoryBean</code></a>
-          </td>
-          <td>Specifies the configuration used to create a
-              <a href="http://docs.oracle.com/javase/1.5.0/docs/api/javax/net/ssl/KeyManagerFactory.html">
-              <code>KeyManagerFactory</code></a>.  The Java platform's default 
-              factory will be used if this property is not configured.  See
-              <a href="#KeyManagerFactoryFactoryBean">Key Manager Factory
-              Configuration</a>
-              below. 
-          </td>
-        </tr>
-        <tr>
-          <td><a name="ssl.keyStore"></a><span class="prop" container="ssl">keyStore</span></td>
-          <td><a href="../xref/ch/qos/logback/core/net/ssl/KeyStoreFactoryBean.html">
-              <code>KeyStoreFactoryBean</code></a>
-          </td>
-          <td>
-            <p>Specifies the configuration used to create a
-               <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/security/KeyStore.html">
-               <code>KeyStore</code></a>.  The KeyStore created by this property
-               should contain a single X.509 credential (consisting of a 
-               private key, corresponding certificate, and CA certificate chain).
-               This credential is presented by the local SSL peer to the remote
-               SSL peer.
-            </p>
-            <p>When configuring an SSL client (e.g. <code>SSLSocketAppender</code>),
-               the <span class="prop" container="ssl">keyStore</span> property
-               is needed only if the remote peer is configured to require
-               client authentication. 
-            </p>
-            <p>When configuring an SSL server (e.g. <code>SimpleSSLSocketServer</code>)
-               the <span class="prop" container="ssl">keyStore</span> property
-               specifies the key store containing the server's credential.  If
-               this property is not configured, the JSSE's
-               <code>javax.net.ssl.keyStore</code> system property must be
-               configured to provide the location of the server's key store.
-               See <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#InstallationAndCustomization">
-               Customizing JSSE</a> in the 
-               <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html">
-               JSSE Reference Guide</a> for more information on setting JSSE
-               system properties.
-            </p>
-            <p>See <a href="#KeyStoreFactoryBean">Key Store Configuration</a>
-               below. 
-            </p>
-          </td>
-        </tr>
-        <tr>
-          <td><span class="prop" container="ssl">parameters</span></td>
-          <td><a href="../xref/ch/qos/logback/core/net/ssl/SSLParametersConfiguration.html">
-              <code>SSLParametersConfiguration</code></a></td>
-          <td>Specifies various parameters used in SSL session negotiation.
-              See <a href="#SSLParametersConfiguration">SSL Parameters Configuration</a>
-              below.
-          </td>
-        </tr>
-        <tr>
-          <td><span class="prop" container="ssl">protocol</span></td>
-          <td><code>String</code></td>
-          <td>Specifies the SSL protocol that will be used to create an 
-              <a href="http://docs.oracle.com/javase/1.5.0/docs/api/javax/net/ssl/SSLContext.html">
-              <code>SSLContext</code></a>.
-              See the <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#AppA">
-              Standard Names</a> specification in the 
-              <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html">
-              JSSE Reference Guide</a>.  The Java platform's default protocol 
-              will be used if this property is not configured.
-          </td>
-        </tr>
-        <tr>
-          <td><span class="prop" container="ssl">provider</span></td>
-          <td><code>String</code></td>
-          <td>Specifies the name of the JSSE provider that will be used to
-              create an 
-              <a href="http://docs.oracle.com/javase/1.5.0/docs/api/javax/net/ssl/SSLContext.html">
-              <code>SSLContext</code></a>.  The Java platform's default JSSE 
-              provider will be used if this property is not configured.
-          </td>
-        </tr>
-        <tr>
-          <td><span class="prop" container="ssl">secureRandom</span></td>
-          <td><a href="../xref/ch/qos/logback/core/net/ssl/SecureRandomFactoryBean.html">
-              <code>SecureRandomFactoryBean</code></a>
-          </td>
-          <td>Specifies the configuration used to create a
-              <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/security/SecureRandom.html">
-              <code>SecureRandom</code></a> — a secure random number
-              generator.  The Java platform's default generator will be used  
-              if this property is not configured.  See
-              <a href="#SecureRandomFactoryBean">Secure Random Generator
-              Configuration</a> below. 
-          </td>
-        </tr>
-        <tr>
-          <td><span class="prop" container="ssl">trustManagerFactory</span></td>
-          <td><a href="../xref/ch/qos/logback/core/net/ssl/TrustManagerFactoryFactoryBean.html">
-              <code>TrustManagerFactoryFactoryBean</code></a>
-          </td>
-          <td>Specifies the configuration used to create a
-              <a href="http://docs.oracle.com/javase/1.5.0/docs/api/javax/net/ssl/TrustManagerFactory.html">
-              <code>TrustManagerFactory</code></a>.  The Java platform's default 
-              factory will be used if this property is not configured.  See
-              <a href="#TrustManagerFactoryFactoryBean">Trust Manager Factory</a>
-              below. 
-          </td>
-        </tr>
-        <tr>
-          <td><a name="ssl.trustStore"></a><span class="prop" container="ssl">trustStore</span></td>
-          <td><a href="../xref/ch/qos/logback/core/net/ssl/KeyStoreFactoryBean.html">
-              <code>KeyStoreFactoryBean</code></a>
-          </td>
-          <td>
-            <p>Specifies the configuration used to create a
-               <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/security/KeyStore.html">
-               <code>KeyStore</code></a> used for validating identity of the
-               remote SSL peer.  The KeyStore created by this property
-               should contain one or more <em>trust anchors</em> — self-signed
-               certificates marked as "trusted" in the keystore.  Typically,
-               the trust store contains self-signed CA certificates.  
-            </p>
-            <p>The trust store specified by this property overrides any trust 
-               store specified by the JSSE's <code>javax.net.ssl.trustStore</code> 
-               system property and the platform's default trust store.See <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#InstallationAndCustomization">
-               Customizing JSSE</a> in the 
-               <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html">
-               JSSE Reference Guide</a> for more information on setting JSSE
-               system properties.
-            </p>
-          </td>
-        </tr>
-      </table>
-      
-      <h4 class="doAnchor"><a name="KeyStoreFactoryBean"></a>
-          Key Store Configuration</h4>
-          
-      <p>The <a href="../xref/ch/qos/logback/core/net/ssl/KeyStoreFactoryBean.html">
-         <code>KeyStoreFactoryBean</code></a> specifies the 
-         configuration needed to create a 
-         <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/security/KeyStore.html">
-         <code>KeyStore</code></a> containing X.509 credentials.  The properties
-         of this factory bean can be used in the
-         <a href="#ssl.keyStore"><span class="prop" container="ssl">keyStore</span></a> 
-         and 
-         <a href="#ssl.trustStore"><span class="prop" container="ssl">trustStore</span></a>
-         properties of the <a href="#SSLConfiguration">SSL Configuration</a>.
-      </p>
- 
-      <table class="bodyTable striped">
-        <tr>
-          <th>Property Name</th>
-          <th>Type</th>
-          <th>Description</th>
-        </tr>
-        <tr>
-          <td><span class="prop" container="keyStore">location</span></td>
-          <td><code>String</code></td>
-          <td>A URL that specifies the location of the key store.  Use
-              a <code>file:</code> URL to specify the location of the
-              keystore on a filesystem.  Use a <code>classpath:</code>
-              URL to specify a keystore than can be found on the classpath.
-              If the URL doesn't specify a scheme, <code>classpath:</code>
-              is assumed.</td>
-        </tr>
-        <tr>
-          <td><span class="prop" container="keyStore">password</span></td>
-          <td><code>String</code></td>
-          <td>Specifies the password needed to access the key store.</td>
-        </tr>
-        <tr>
-          <td><span class="prop" container="keyStore">provider</span></td>
-          <td><code>String</code></td>
-          <td>Specifies the name of the JCA provider that will be used to
-              create a <code>KeyStore</code>.  The Java 
-              platform's default key store provider will be used if this 
-              property is not configured.
-          </td>
-        </tr>
-        <tr>
-          <td><span class="prop" container="keyStore">type</span></td>
-          <td><code>String</code></td>
-          <td>Specifies the <code>KeyStore</code> type.
-              See the <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/CryptoSpec.html#AppA">
-              Standard Names</a> specification in the 
-              <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/CryptoSpec.html">
-              Java Cryptography Architecture</a> specification.  The Java 
-              platform's default key store type will be used  if this property 
-              is not configured.
-          </td>
-        </tr>
-      </table>
-      
-      <h4><a name="KeyManagerFactoryFactoryBean"></a>
-          Key Manager Factory Configuration</h4>
-          
-      <p>The <a href="../xref/ch/qos/logback/core/net/ssl/KeyManagerFactoryFactoryBean.html">
-         <code>KeyManagerFactoryFactoryBean</code></a> specifies the 
-         configuration needed to create a 
-         <a href="http://docs.oracle.com/javase/1.5.0/docs/api/javax/net/ssl/KeyManagerFactory.html">
-         <code>KeyManagerFactory</code></a>.  Generally, it isn't necessary
-         to explicitly configure the key manager factory, as the platform's
-         default factory is adequate for most needs.
-      </p>
-
-      <table class="bodyTable striped">
-        <tr>
-          <th>Property Name</th>
-          <th>Type</th>
-          <th>Description</th>
-        </tr>
-        <tr>
-          <td><span class="prop" container="keyManagerFactory">algorithm</span></td>
-          <td><code>String</code></td>
-          <td>Specifies the <code>KeyManagerFactory</code> algorithm name.
-              See the <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#AppA">
-              Standard Names</a> specification in the 
-              <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html">
-              JSSE Reference Guide</a>.  The Java platform's default key 
-              manager algorithm will be used if this property is not configured.
-          </td>
-        </tr>
-        <tr>
-          <td><span class="prop" container="keyManagerFactory">provider</span></td>
-          <td><code>String</code></td>
-          <td>Specifies the name of the JCA provider that will be used to
-              create a <code>SecureRandom</code> generator.  The Java 
-              platform's default JSSE provider will be used if this property 
-              is not configured.
-          </td>
-        </tr>
-      </table>
-
-      <h4 class="doAnchor"><a name="SecureRandomFactoryBean"></a>
-          Secure Random Generator Configuration</h4>
-          
-      <p>The <a href="../xref/ch/qos/logback/core/net/ssl/SecureRandomFactoryBean.html">
-         <code>SecureRandomFactoryBean</code></a> specifies the 
-         configuration needed to create a 
-         <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/security/SecureRandom.html">
-         <code>SecureRandom</code></a> generator.  Generally, it isn't necessary
-         to explicitly configure the secure random generator, as the platform's
-         default generator is adequate for most needs.
-      </p>
- 
-      <table class="bodyTable striped">
-        <tr>
-          <th>Property Name</th>
-          <th>Type</th>
-          <th>Description</th>
-        </tr>
-        <tr>
-          <td><span class="prop" container="secureRandom">algorithm</span></td>
-          <td><code>String</code></td>
-          <td>Specifies the <code>SecureRandom</code> algorithm name.
-              See the <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/CryptoSpec.html#AppA">
-              Standard Names</a> specification in the 
-              <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/CryptoSpec.html">
-              Java Cryptography Architecture</a> specification.  The Java 
-              platform's default random number generation algorithm will be used 
-              if this property is not configured.
-          </td>
-        </tr>
-        <tr>
-          <td><span class="prop" container="secureRandom">provider</span></td>
-          <td><code>String</code></td>
-          <td>Specifies the name of the JCA provider that will be used to
-              create a <code>SecureRandom</code> generator.  The Java 
-              platform's default JSSE provider will be used if this property 
-              is not configured.
-          </td>
-        </tr>
-      </table>
-      
-      <h4><a name="SSLParametersConfiguration"></a>
-          SSL Parameters Configuration</h4>
-          
-      <p>The <a href="../xref/ch/qos/logback/core/net/ssl/SSLParametersConfiguration.html">
-         <code>SSLParametersConfiguration</code></a> allows the customization
-         of allowed SSL protocols, cipher suites, and client authentication
-         options. 
-      </p>
-
-      <table class="bodyTable striped">
-        <tr>
-          <th>Property Name</th>
-          <th>Type</th>
-          <th>Description</th>
-        </tr>
-        <tr>
-          <td><a name="parameters.excludedCipherSpecs"></a>
-              <span class="prop" container="parameters">excludedCipherSpecs</span></td>
-          <td><code>String</code></td>
-          <td>
-            <p>Specifies a comma-separated list of SSL cipher spec names or
-               patterns to disable during session negotiation.  This property is
-               used to filter the cipher suites supported by the SSL engine, 
-               such that any cipher spec matched by this property is disabled.
-            </p>
-            <p>Each field in the comma-separated list specified for this 
-               property may be a simple string or a regular expression.
-            </p>
-            <p>See the <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#AppA">
-              Standard Names</a> specification in the 
-              <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html">
-              JSSE Reference Guide</a> for a list of cipher spec names.
-            </p>
-          </td>
-        </tr>
-        <tr>
-          <td><a name="parameters.includedCipherSpecs"></a>
-              <span class="prop" container="parameters">includedCipherSpecs</span></td>
-          <td><code>String</code></td>
-          <td>
-            <p>Specifies a comma-separated list of SSL cipher spec names or
-               patterns to enable during session negotiation.  This property is
-               used to filter the cipher suites supported by the SSL engine, 
-               such that only those cipher suites matched by this property are 
-               enabled.
-            </p>
-            <p>Each field in the comma-separated list specified for this 
-               property may be a simple string or a regular expression.
-            </p>
-            <p>See the <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#AppA">
-              Standard Names</a> specification in the 
-              <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html">
-              JSSE Reference Guide</a> for a list of cipher spec names.
-            </p>
-          </td>
-        </tr>
-        <tr>
-          <td><a name="parameters.excludedProtocols"></a>
-              <span class="prop" container="parameters">excludedProtocols</span></td>
-          <td><code>String</code></td>
-          <td>
-            <p>Specifies a comma-separated list of SSL protocol names or
-               patterns to disable during session negotiation.  This property is
-               used to filter the protocols supported by the SSL engine, 
-               such that any protocol matched by this property is disabled.
-            </p>
-            <p>Each field in the comma-separated list specified for this 
-               property may be a simple string or a regular expression.
-            </p>
-            <p>See the <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#AppA">
-              Standard Names</a> specification in the 
-              <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html">
-              JSSE Reference Guide</a> for a list of protocol names.
-            </p>
-          </td>
-        </tr>
-        <tr>
-          <td><a name="parameters.includedProtocols"></a>
-              <span class="prop" container="parameters">includedProtocols</span></td>
-          <td><code>String</code></td>
-          <td>
-            <p>Specifies a comma-separated list of SSL protocol names or
-               patterns to enable during session negotiation.  This property is
-               used to filter the protocols supported by the SSL engine, 
-               such that only those protocols matched by this property are 
-               enabled.
-            </p>
-            <p>Each field in the comma-separated list specified for this 
-               property may be a simple string or a regular expression.
-            </p>
-            <p>See the <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#AppA">
-              Standard Names</a> specification in the 
-              <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html">
-              JSSE Reference Guide</a> for a list of protocol names.
-            </p>
-          </td>
-        </tr>
-        <tr>
-          <td><a name="parameters.needClientAuth"></a>
-              <span class="prop" container="parameters">needClientAuth</span></td>
-          <td><code>boolean</code></td>
-          <td>Set this property to the value <code>true</code> to 
-              configure a server to <em>require</em> a valid client
-              certificate.  This property is ignored when configured
-              for a client component such as <code>SSLSocketAppender</code>.
-          </td>
-        </tr>
-        <tr>
-          <td><a name="parameters.wantClientAuth"></a>
-              <span class="prop" container="parameters">wantClientAuth</span></td>
-          <td><code>boolean</code></td>
-          <td>Set this property to the value <code>true</code> to 
-              configure the server to <em>request</em> a client
-              certificate.  This property is ignored when configured
-              for a client component such as <code>SSLSocketAppender</code>.
-          </td>
-        </tr>
-      </table>
-      
-      <h4><a name="TrustManagerFactoryFactoryBean"></a>
-          Trust Manager Factory Configuration</h4>
-          
-      <p>The <a href="../xref/ch/qos/logback/core/net/ssl/TrustManagerFactoryFactoryBean.html">
-         <code>TrustManagerFactoryFactoryBean</code></a> specifies the 
-         configuration needed to create a 
-         <a href="http://docs.oracle.com/javase/1.5.0/docs/api/javax/net/ssl/TrustManagerFactory.html">
-         <code>TrustManagerFactory</code></a>.  Generally, it isn't necessary
-         to explicitly configure the trust manager factory, as the platform's
-         default factory is adequate for most needs.
-      </p>
-
-      <table class="bodyTable striped">
-        <tr>
-          <th>Property Name</th>
-          <th>Type</th>
-          <th>Description</th>
-        </tr>
-        <tr>
-          <td><span class="prop" container="trustManagerFactory">algorithm</span></td>
-          <td><code>String</code></td>
-          <td>Specifies the <code>TrustManagerFactory</code> algorithm name.
-              See the <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#AppA">
-              Standard Names</a> specification in the 
-              <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html">
-              JSSE Reference Guide</a>.  The Java platform's default key 
-              manager algorithm will be used if this property is not configured.
-          </td>
-        </tr>
-        <tr>
-          <td><span class="prop" container="trustManagerFactory">provider</span></td>
-          <td><code>String</code></td>
-          <td>Specifies the name of the JCA provider that will be used to
-              create a <code>SecureRandom</code> generator.  The Java 
-              platform's default JSSE provider will be used if this property 
-              is not configured.
-          </td>
-        </tr>
-      </table>
-      
-      <h2 class="doAnchor"><a name="Examples"></a>Examples</h2>
-
-      <h3>Using JSSE System Properties</h3>
-      <p>JSSE system properties can be used to specify the location and 
-      password for a key store containing your server's X.509 credential,
-      or to specify the location and password for a trust store 
-      containing self-signed root CA certificates used by your client
-      components to validate server trust.</p>
-
-      <h4>Specifying the Server's Key Store</h4>
-      <p>When running a server component, you need to specify the location
-      and password for the key store containing the server's credential.
-      One way to do this is using JSSE system properties.  The following
-      example shows a command line that could be used to start the
-      <code>SimpleSSLSocketServer</code> that is shipped with Logback.</p>
-    
-      <p class="source">java -DkeyStore=/etc/logback-server-keystore.jks \
-     -DkeyStorePassword=changeit -DkeyStoreType=JKS \
-     ch.qos.logback.net.SimpleSSLSocketServer 6000 /etc/logback-server-config.xml</p>
-              
-      <p>Note that when using the JSSE <em>keyStore</em> system property,
-      a path to the key store is specified.  When specifying the location
-      in <em>logback.xml</em>, a URL for the key store is specified.</p>
-      
-      <p>While this example starts the standalone server application
-      provided with Logback, the same system properties could be specified
-      to start any application that uses an SSL-enabled Logback server
-      component.
-      
-      <h4>Specifying the Client's Trust Store</h4>
-      
-      <p>When using a client component, you need to specify the location
-      and password for a trust store containing root CA certificates used
-      for validating server trust.  One way to do this is using JSSE
-      system properties.  The following example shows a command line
-      that could be used to start an application named 
-      <code>com.example.MyLoggingApplication</code> that uses one or
-      more of Logback's SSL-enabled client components.</p>
-
-      <p class="source">java -DtrustStore=/etc/logback-client-truststore.jks \
-     -DtrustStorePassword=changeit -DtrustStoreType=JKS \
-     com.example.MyLoggingApplication</p>
-      
-      <p>Note that when using the JSSE <em>trustStore</em> system property,
-      a path to the key store is specified.  When specifying the location
-      in <em>logback.xml</em>, a URL for the trust store is specified.</p>
-      
-      <h3>Creating and Using a Self-Signed Server Component Credential</h3>
-      <p>To generate a self-signed certificate, you can use the <em>keytool</em>
-      utility that is shipped with the Java Runtime Environment (JRE).
-      The instructions below walk through the process of creating a
-      self-signed X.509 credential in a key store for your server 
-      component and creating a trust store for use with your client
-      components.
-      </p>
-      
-      <h4>Creating the server component credential:</h4>
-      <p>The following command will generate the self-signed client
-      credential in a file named <em>server.keystore</em>.</p>
-      <pre class="source">keytool -genkey -alias server -dname "CN=my-logging-server" \
-    -keyalg RSA -validity 365 -keystore server.keystore
-Enter keystore password: <Enter password of your choosing>
-Re-enter new password: <Re-enter same password>
-Enter key password for <my-logging-server>
-	(RETURN if same as keystore password):  <Press RETURN>
-</pre>
-
-      <p>The name <em>my-logging-server</em> used in the <em>dname</em>
-      may be any valid name of your choosing.  You may wish to use the
-      fully-qualified domain name of the server host. The
-      <em>validity</em> argument specifies the number of calendar days
-      from the present date until the credential expires.</p>
-      
-      <p>In production settings, it is especially important to choose a
-      strong password for the key store containing your server credential.
-      This password protects the server's private key, preventing it
-      from being used by an authorized party.  Make note of the
-      password, because you will need it in subsequent steps and when
-      configuring your server.
-      </p>
-
-      <h4>Creating a trust store for client components:</h4>
-      <p>For use in the configuration of your client components, the 
-      server's certificate needs to be exported from the key store
-      created in the previous step, and imported into a trust store.  The
-      following commands will export the certificate and import it into
-      a trust store named <em>server.truststore</em>.</p>
-      
-      <pre class="source">keytool -export -rfc -alias server -keystore server.keystore \
-    -file server.crt
-Enter keystore password: <Enter password you chose for in previous step>
-
-keytool -import -alias server -file server.crt -keystore server.truststore
-Enter keystore password: <Enter password of your choosing>
-Re-enter new password: <Re-enter same password>
-Owner: CN=my-logging-server
-Issuer: CN=my-logging-server
-Serial number: 6e7eea40
-Valid from: Sun Mar 31 07:57:29 EDT 2013 until: Mon Mar 31 07:57:29 EDT 2014
-
-   ...
-
-Trust this certificate? [no]:  <Enter "yes">
-</pre>
-
-      <p>The first command exports the server's certificate (but not the
-      server's private key) from the key store and into a file named
-      <em>server.crt</em>.  The second step creates a new trust store
-      named <em>server.truststore</em> containing the server certificate.
-      </p>
-      
-      <p>In production settings, it is especially important to choose a
-      strong password for the trust store that is different from the 
-      password you chose of the server key store.  Make note of this
-      password, because you will need it when configuring your appender
-      clients.
-      </p>
-          
-      <h4>Configuring the server component:</h4>
-      <p>You will need to copy the <em>server.keystore</em> file into your 
-      server application's configuration.  The key store can be placed
-      with your application's classpath resources, or it may simply be
-      placed somewhere on the server host's filesystem.  When specifying
-      the location of the key store in the configuration, you will use
-      either a <code>classpath:</code> URL or <code>file:</code> URL, as
-      appropriate.  A example server configuration follows:</p>
-
-      <p class="example">Example: Server Component Configuration</p>
-      <pre class="prettyprint source"><configuration debug="true">
-  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
-    <encoder>
-      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
-    </encoder>
-  </appender>
-  
-  <root level="DEBUG">
-    <appender-ref ref="CONSOLE" />
-  </root>
-
-  <server class="ch.qos.logback.classic.net.server.SSLServerSocketReceiver">
-    <ssl>
-      <keyStore>
-        <location>classpath:server.keystore</location>
-        <password>${server.keystore.password}</password>
-      </keyStore>
-    </ssl>
-  </server>
-</configuration></pre>
-      
-      <p>This example assumes that the key store is located at the root
-      of the application's classpath.</p>
-      
-      <p>Note that this configuration specifies the key store password
-      using the <em>server.keystore.password</em> substitution variable.
-      This approach would allow you to avoid storing the password in
-      any configuration file.  For example, your application could
-      prompt for this password on the console at startup, and then 
-      set the <em>server.keystore.password</em> as a system property 
-      using the entered password before configuring the logging system.
-      </p>
-      
-      <h4>Configuring client components:</h4>
-      <p>You will need to copy the <em>server.truststore</em> file into
-      the application configuration of each application that uses an
-      SSL-enabled component acting in the client mode.  The trust store 
-      can be placed with your application's classpath resources, or it
-      may simply be placed somewhere on the filesystem.  When specifying 
-      the location of the trust store in the configuration, you will use 
-      either a <code>classpath:</code> URL or <code>file:</code> URL, as
-      appropriate.  A example appender client configuration follows:</p>
-
-      <p class="example">Example: Appender Client Configuration</p>
-
-      <pre class="prettyprint source"><configuration debug="true">
-  <appender name="SOCKET" class="ch.qos.logback.classic.net.SSLSocketAppender">
-    <remoteHost>${host}</remoteHost>
-    <ssl>
-      <trustStore>
-        <location>classpath:server.truststore</location>
-        <password>${server.truststore.password}</password>
-      </trustStore>
-    </ssl>
-  </appender>
-
-  <root level="DEBUG">
-    <appender-ref ref="SOCKET" />
-  </root>
-</configuration></pre>
-
-      <p>This example assumes that the trust store is located at the root
-      of the application's classpath.</p>
-      
-      <p>Note that this configuration specifies the trust store password
-      using the <em>server.truststore.password</em> substitution variable.
-      This approach would allow you to avoid storing the password in
-      any configuration file.  For example, your application could
-      prompt for this password on the console at startup, and then 
-      set the <em>server.truststore.password</em> as a system property 
-      using the entered password before configuring the logging system.
-      </p>
-
-      <h2>Auditing the SSL Configuration</h2>
-      <p>In settings where secure communications are required, it is often
-      necessary to audit the configuration of components that use SSL to
-      validate conformance with local security policies.  The SSL
-      support in Logback addresses this need by providing detailed
-      logging of SSL configuration when Logback is initialized.  You can 
-      enable audit logging using the <code>debug</code> property in the
-      configuration:</p>
-      
-      <pre class="prettyprint source"><configuration debug="true">
-  
-  ...
-  
-</configuration></pre>
-
-      <p>With the debug property enabled, all of the relevant aspects of
-      the resulting SSL configuration will be logged when the logging
-      system is initialized.  A representative example of the information
-      logged for SSL follows.</p>
-      
-      <p class="example">Example: SSL Configuration Audit Logging</p>
-      
-      <pre>06:46:31,941 |-INFO in SSLServerSocketReceiver at 4ef18d37 - SSL protocol 'SSL' provider 'SunJSSE version 1.6'
-06:46:31,967 |-INFO in SSLServerSocketReceiver at 4ef18d37 - key store of type 'JKS' provider 'SUN version 1.6': file:src/main/java/chapters/appenders/socket/ssl/keystore.jks
-06:46:31,967 |-INFO in SSLServerSocketReceiver at 4ef18d37 - key manager algorithm 'SunX509' provider 'SunJSSE version 1.6'
-06:46:31,973 |-INFO in SSLServerSocketReceiver at 4ef18d37 - secure random algorithm 'SHA1PRNG' provider 'SUN version 1.6'
-06:46:32,755 |-INFO in SSLParametersConfiguration at 4a6f19d5 - enabled protocol: SSLv2Hello
-06:46:32,755 |-INFO in SSLParametersConfiguration at 4a6f19d5 - enabled protocol: SSLv3
-06:46:32,755 |-INFO in SSLParametersConfiguration at 4a6f19d5 - enabled protocol: TLSv1
-06:46:32,756 |-INFO in SSLParametersConfiguration at 4a6f19d5 - enabled cipher suite: SSL_RSA_WITH_RC4_128_MD5
-06:46:32,756 |-INFO in SSLParametersConfiguration at 4a6f19d5 - enabled cipher suite: SSL_RSA_WITH_RC4_128_SHA
-06:46:32,756 |-INFO in SSLParametersConfiguration at 4a6f19d5 - enabled cipher suite: TLS_RSA_WITH_AES_256_CBC_SHA
-</pre>
-
-      <p>The output shown here has been truncated for brevity's sake, 
-      but would typically include the complete list of protocols, 
-      providers, algorithms, and cipher suites, as well as the location
-      of key store and trust store resources utilized in the configuration.
-      </p>
-      
-      <p>While none of this audit logging is particularly sensitive,
-      best practices for security would suggest that this logging should
-      not remain enabled in production settings after the configuration
-      has been validated.  Audit logging is disabled when the 
-      <code>debug</code> property is removed or set to <code>false</code>.
-      </p>
-      
-      <h2>Resolving SSL Exceptions</h2>
-      <p>When SSL is misconfigured, it generally results in the client
-         and server components being unable to negotiate an agreeable 
-         session.  This problem usually manifests itself as exceptions 
-         being thrown by both parties when the client attempts to connect 
-         to the server.
-      </p>
-      <p>The content of the exception messages varies depending on whether 
-         you are looking at the client's log or the server's log.  This
-         is mostly due to inherent protocol limitations in error reporting
-         during session negotiation.  As a consequence of this fact,
-         in order to troubleshoot session negotiation problems, you will
-         usually want to look at the logs of both the client and the
-         server.
-      </p>
-      
-      <h3>Server's Certificate is Not Available</h3>
-      <p>When starting the server component, you
-         see the following exception in the log:</p>
-         
-      <p><em>javax.net.ssl.SSLException: No available certificate or 
-         key corresponds to the SSL cipher suites which are enabled</em>
-      </p>
-      
-      <p>In most cases this means that you have not configured 
-         the location of the key store containing the server's private 
-         key and corresponding certificate.
-      </p>
-      
-      <h4>Solution</h4>
-      <p>Using either the 
-         <a href="#basicConfig.keyStore">Key Store system
-         properties</a> or the <a href="#ssl.keyStore">
-         <span class="prop">keyStore</span></a> property of the 
-         server component's <span class="prop">ssl</span> property, 
-         you must specify the location and password for the key store 
-         containing the server's private key and certificate.
-      </p>
-      
-      <h3>Client Does Not Trust the Server</h3>
-      <p>When the client attempts to connect to the server, you see the 
-      following exception in the log:</p>
-      
-      <p><em>javax.net.ssl.SSLHandshakeException: 
-              sun.security.validator.ValidatorException: 
-              PKIX path building failed</em>
-      </p>
-      <p>This problem is the result of the server presenting a certificate
-         the client does not trust.  The most common cause is that you 
-         are using a self-signed server certificate (or a server 
-         certificate that was signed by your organization's internal
-         certification authority) and you have not configured the client
-         so that it references a trust store containing the server's 
-         self-signed certificate (or the trusted root certificate(s) for 
-         the CA that signed your server certificate).         
-      </p> 
-      <p>This problem can also occur if your server certificate has
-         expired or has been revoked.  If you have access to the server
-         log you will likely see the following exception logged
-         each time the client attempts to connect:
-      </p>
-      
-      <p><em>javax.net.ssl.SSLHandshakeException: Received fatal alert: ...</em>
-      </p>
-      
-      <p>The remainder of the exception message will usually provide a
-         code that indicates why the client rejected the server's
-         certificate.
-      </p>
-      <table class="bodyTable striped">
-        <tr>
-          <th>Code</th>
-          <th>Description</th>
-        </tr>
-        <tr>
-          <td><code>certificate_unknown</code></td>
-          <td>Usually indicates that the client's trust store has not
-              been properly configured.
-          </td>
-        </tr>
-        <tr>
-          <td><code>certificate_expired</code></td>
-          <td>Indicates that the server's certificate has expired and
-              needs to be replaced.
-          </td>
-        </tr>
-        <tr>
-          <td><code>certificate_revoked</code></td>
-          <td>Indicates that the issuing certification authority (CA)
-              has revoked the server's certificate and the certificate
-              needs to be replaced.
-          </td>
-        </tr>
-      </table>
-        
-      <h4>Solutions</h4>
-      <p>If the server's log message is reporting <code>certificate_unknown</code>
-         then using either the <a href="#basicConfig.trustStore">Trust Store system
-         properties</a> or the <a href="#ssl.trustStore">
-         <span class="prop">trustStore</span></a> property of the 
-         appender component's <span class="prop">ssl</span> property, 
-         you must specify the location and password for the trust 
-         store containing the server's self-signed certificate or
-         the issuing certificate authority's root certificate.
-      </p>
-
-      <p>If the server's log message is reporting 
-         <code>certificate_expired</code> or <code>certificate_revoked</code> 
-         the server needs a new certificate.  The new certificate 
-         and associated private key needs to be placed in the key store 
-         specified in the server's configuration.  And, if using 
-         a self-signed server certificate, the server's certificate also
-         needs to be placed in the trust store specified in the appender
-         client's configuration.
-      </p>
-      
-      <h3>Server Does Not Trust the Client</h3>
-      <p>NOTE: <strong>This problem can occur only if you have explicitly 
-         configured the server to request a client certificate (using 
-         either the <a href="#parameters.needClientAuth"><span class="prop">needClientAuth</span></a> or 
-         <a href="#parameters.wantClientAuth"><span class="prop">wantClientAuth</span></a>
-         property)</strong>.
-      </p>
- 
-      <p>When the client attempts to connect to the logging
-         server, you see the following exception in the client's log:
-      </p>
-      
-      <p><em>javax.net.ssl.SSLHandshakeException:  Received fatal 
-         alert: ...</em>
-      </p>
-
-      <p>The remainder of the exception message will usually provide a
-         code that indicates why the server rejected the client's
-         certificate.
-      </p>
-      <table class="bodyTable striped">
-        <tr>
-          <th>Code</th>
-          <th>Description</th>
-        </tr>
-        <tr>
-          <td><code>certificate_unknown</code></td>
-          <td>Usually indicates that the server's trust store has not
-              been properly configured.
-          </td>
-        </tr>
-        <tr>
-          <td><code>certificate_expired</code></td>
-          <td>Indicates that the client's certificate has expired and
-              needs to be replaced.
-          </td>
-        </tr>
-        <tr>
-          <td><code>certificate_revoked</code></td>
-          <td>Indicates that the issuing certification authority (CA)
-              has revoked the client's certificate and the certificate
-              needs to be replaced.
-          </td>
-        </tr>
-      </table>
-        
-      <h4>Solutions</h4>
-      <p>If the client's log message is reporting <code>bad_certificate</code>
-         then using either the <a href="#basicConfig.trustStore">Trust Store system
-         properties</a> or the <a href="#ssl.trustStore">
-         <span class="prop">trustStore</span></a> property of the 
-         server component's <span class="prop">ssl</span> property, 
-         you must specify the location and password for the trust 
-         store containing the client's self-signed certificate or
-         the issuing certificate authority's root certificate.
-      </p>
-
-      <p>If the server's log message is reporting 
-         <code>certificate_expired</code> or <code>certificate_revoked</code> 
-         the client needs a new certificate.  The new certificate 
-         and associated private key needs to be placed in the key store 
-         specified in the client's configuration.  And, if using 
-         a self-signed client certificate, the client's certificate also
-         needs to be placed in the trust store specified in the 
-         servers's configuration.
-      </p>
-      
-      <h3>Client and Server Cannot Agree on a Protocol</h3>
-      <p>NOTE: <strong>This problem usually occurs only when you are
-         explicitly 
-         <a href="#parameters.excludedProtocols">excluding</a> or 
-         <a href="#parameters.includedProtocols">including</a> SSL 
-         protocols in your configuration</strong>.
-      </p>
-
-      <p>When the client attempts to connect to the server, you see 
-         the following exception in the log:</p>
-      
-      <p><em>javax.net.ssl.SSLHandshakeException:  Received fatal 
-         alert: handshake_failure</em>
-      </p>
-      
-      <p>The server's log message is usually more descriptive.  For
-         example:</p>
-      
-      <p><em>javax.net.ssl.SSLHandshakeException: SSLv2Hello is disabled</em>
-      </p>
-      
-      <p>Generally, this means that you have excluded a protocol from
-         one of the peers and not the other.</p>
-         
-      <h4>Solution</h4>
-      <p>Check the values specified for the 
-         <a href="#parameters.excludedProtocols"><span class="prop">excludedProtocols</span></a> and
-         <a href="#parameters.includedProtocols"><span class="prop">includedProtocols</span></a>
-         properties on both the server and client.
-      </p>
-
-      <h3>Client and Server Cannot Agree on a Cipher Suite</h3>
-      <p>NOTE: <strong>This problem usually occurs only when you are
-         explicitly 
-         <a href="#parameters.excludedCipherSuites">excluding</a> or 
-         <a href="#parameters.includedCipherSuites">including</a> SSL 
-         cipher suites in your configuration</strong>.
-      </p>
-      
-      <p>When the client attempts to connect to the
-         server, you see the following exception in the log:
-      </p>
-      
-      <p><em>javax.net.ssl.SSLHandshakeException:  Received fatal 
-         alert: handshake_failure</em>
-      </p>
-      
-      <p>The server's log message is usually more descriptive:
-      </p>
-      
-      <p><em>javax.net.ssl.SSLHandshakeException: no cipher suites in common</em>
-      </p>
-      
-      <p>This means that you have configured the cipher suites on the
-         server and client such that the intersection
-         of their respective sets of enabled cipher suites is empty.</p>
-      
-      <h4>Solution</h4>
-      <p>Check the values specified for the 
-         <a href="#parameters.excludedCipherSuites"><span class="prop">excludedCipherSuites</span></a> and
-         <a href="#parameters.includedCipherSuites"><span class="prop">includedCipherSuites</span></a>
-         properties on both the server and client.
-      </p>
-         
-      <script src="../templates/footer.js" type="text/javascript"></script>
-
-    </div>
-  </body>
-</html>
\ No newline at end of file
diff --git a/docs/news.html b/docs/news.html
index 39170b1..0d5da58 100644
--- a/docs/news.html
+++ b/docs/news.html
@@ -27,620 +27,6 @@
     the <a href="http://www.qos.ch/mailman/listinfo/announce">QOS.ch
     announce</a> mailing list.</p>
 
-    <hr width="80%" align="center" />
-
-    <h3>2nd of April, 2014 - Release of version 1.1.2</h3>
-
-    <p>Create an abstract method, createOutputStream, as an extension point
-    for subclasses of SyslogBaseAppender to create their own OutputStream.
-    <a href="http://jira.qos.ch/browse/LOGBACK-890">LOGBACK-890</a>
-    </p>
-
-    <p>Removed deprecated constructors in <code>SocketAppender</code>
-    and related classes.</p>
-
-    <p>Fixed incorrect date format in <code>SyslogAppender</code>.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-936">LOGBACK-936</a>)
-    </p>
-
-    <p>Fixed <code>NullPointerException</code> when substituting blank variables
-    (<a href="http://jira.qos.ch/browse/LOGBACK-959">LOGBACK-959</a>)
-
-    <p>Fixed <code>NullPointerException</code> that occurs when stopping a
-    <code>SyslogAppender</code> that did not properly initialize, e.g.,
-    due to a hostname resolution failure.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-960">LOGBACK-960</a>)
-    </p>
-
-    <p>Use fair locking in <code>OutputStreamAppender</code>. Patch provided by
-    Sergey Bykov.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-268">LOGBACK-268</a>)
-    </p>
-
-    <p>In case of missing included files, IncludeAction no longer
-    prints a stack trace but prints a warning instead. (<a
-    href="http://jira.qos.ch/browse/LOGBACK-954">LOGBACK-954</a>)
-
-    <hr width="80%" align="center" />
-
-    <h3>5th of February, 2014 - Release of version 1.1.1</h3>
-
-    <p>Logback now supports an unlimited level of <a
-    href="manual/configuration.html#variableSubstitution">variable</a>
-    resolution graphs rather than being limited to one level deep
-    resolution.  This enhancement was requested by Anton Wiedermann in
-    <a href="http://jira.qos.ch/browse/LOGBACK-943">LOGBACK-943</a>
-    with Eric Dahl providing the relevant pull request.
-    </p>
-
-    <p>Fixed <a
-    href="http://jira.qos.ch/browse/LOGBACK-942">LOGBACK-942</a> which
-    was causing <code>SocketAppender</code> to drop events. Eric Dahl
-    provided the relevant pull request.
-    </p>
-
-    <hr width="80%" align="center" />
-
-    <h3>January 28th, 2014 - Release of version 1.1.0</h3>
-
-    <p>Previously, logback silently ignored configuration files that did
-    not have the ".xml" or ".groovy" file extension. Now, a <code>LogbackException</code>
-    is thrown to flag this error.
-    </p>
-
-    <p>Groovy configuration now supports <code>appenderRef</code>, which
-    allows the use of <code>AsyncAppender</code> in Groovy.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-269">LOGBACK-269</a>)
-    </p>
-
-    <p><code>SizeAndTimeBasedFNATP</code> now supports a protected function
-    <code>#createArchiveRemover</code> that allows subclasses to specify
-    a custom archive remover used in <code>RollingFileAppender</code>. The
-    default archive remover is <code>SizeAndTimeBasedArchiveRemover</code>.
-    </p>
-
-    <p><code>PackagingDataCalculator</code> now catches and ignores
-    <code>UnsupportedOperationException</code> so that it can determine
-    whether the JVM supports <code>Reflection#getCallerClass()</code>
-    without printing that exception's stack trace. This only affects
-    Java 7u40+, which removed support for <code>Reflection#getCallerClass()</code>.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-885">LOGBACK-885</a>)
-    </p>
-
-    <p>To facilitate debugging, <code>SimpleSocketServer</code> now names
-    its threads: "<b>Logback SimpleSocketServer (port <i>PORTNUM</i>)</b>".
-    <code>SocketNode</code> client threads are named:
-    "<b>Logback SocketNode (client: <i>IPADDR</i>)</b>".
-    </p>
-
-    <p>Fixed silently lost messages from <code>SyslogAppender</code>
-    when they exceeded the system datagram size limit. The default max
-    message size was hard coded to 65KB but now matches the system limit
-    (as read from
-    <a href="http://docs.oracle.com/javase/6/docs/api/java/net/DatagramSocket.html#getSendBufferSize()">
-    <code>DatagramSocket#getSendBufferSize()</code></a>) unless a
-    nonzero limit is specified via <code>SyslogAppender#setMaxMessageSize()</code>.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-926">LOGBACK-926</a>)
-    </p>
-
-    <p>Fixed various documentation typos, including
-    <a href="http://jira.qos.ch/browse/LOGBACK-466">LOGBACK-466</a>,
-    <a href="http://jira.qos.ch/browse/LOGBACK-768">LOGBACK-768</a>,
-    <a href="http://jira.qos.ch/browse/LOGBACK-904">LOGBACK-904</a>,
-    <a href="http://jira.qos.ch/browse/LOGBACK-921">LOGBACK-921</a>,
-    and
-    <a href="http://jira.qos.ch/browse/LOGBACK-927">LOGBACK-927</a>.
-    </p>
-
-    <p><code>ContextBase.setStatusManager</code> now correctly validates
-    the given status manager.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-912">LOGBACK-912</a>)
-    </p>
-
-    <p>The <code>SocketNode</code> creates an <code>ObjectInputStream</code>
-    using the socket's input stream, which blocks waiting for the
-    stream header. This wait has been moved from the constructor to
-    <code>SocketNode.run()</code> so that the node can be created without
-    blocking.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-350">LOGBACK-350</a>)
-    </p>
-
-    <p>Fixed <code>SecurityException</code> during initialization
-    in Google AppEngine.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-760">LOGBACK-760</a>)
-    </p>
-
-    <p>The <code><include></code> element now allows optional
-    resources (previously, only optional files).
-    (<a href="http://jira.qos.ch/browse/LOGBACK-644">LOGBACK-928</a>)
-    </p>
-
-    <p>Added new layout conversion word (<b>%D</b> or <b>%elapsedTime</b>),
-    which gets the time taken to serve the request. This applies
-    only to Jetty and Tomcat logs via logback-access.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-320">LOGBACK-320</a>)
-    </p>
-
-    <p>Fixed SMTP error when the subject line contained multiple
-    new-lines.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-865">LOGBACK-865</a>)
-    </p>
-
-    <p>Fixed unnecessary re-initialization of the servlet's
-    <code>LoggerContext</code> while attempting to destroy it.
-    </p>
-
-    <p>Added the following syslog facilities to <code>SyslogStartConverter</code>:
-    NTP, AUDIT, ALERT, CLOCK
-    (<a href="http://jira.qos.ch/browse/LOGBACK-754">LOGBACK-754</a>)
-    </p>
-
-    <p>Fixed <code>NullPointerException</code> when setting a JUL
-    logger's level to null, which should have reset the logger level
-    to the parent's effective level.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-906">LOGBACK-906</a>)
-    </p>
-
-    <p>Added support to get suppressed exceptions. This is currently
-    only implemented for <code>RootCauseFirstThrowableProxyConverter</code>
-    and <code>ThrowableProxyConverter</code>.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-516">LOGBACK-516</a>)
-    </p>
-
-    <p>Fixed problem of Janino classes not found in some environments
-    (axis2, GWT, etc.).
-    (<a href="http://jira.qos.ch/browse/LOGBACK-832">LOGBACK-832</a>)
-    </p>
-
-    <p>Fixed various unit tests, including modifications for consistent
-    results in Jenkins.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-842">LOGBACK-842</a>)
-    </p>
-
-    <p>Allow Gaffer to read the <code>logback.debug</code> system
-    property to enable verbose output during Groovy-based configuration.
-    Also added debug statements to Gaffer.
-    </p>
-
-    <p>Fixed <code>IllegalArgumentException</code> when missing periods
-    and dollar signs in the logger name.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-384">LOGBACK-384</a>)
-    </p>
-
-    <p>Fixed <code>NullPointerException</code> during JNDI lookup.</p>
-
-    <p>Fixed dangling data source connections from <code>DBAppender</code>
-    that caused <i>"maximum open cursors exceeded"</i>.</p>
-
-    <p>Fixed incorrect stack trace depth when specifying <code>%throwable</code>
-    with argument.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-160">LOGBACK-160</a>)
-    </p>
-
-    <p>Fixed MySQL setup script to use lower-case table name to
-    match the references in the file. This had caused an error
-    on systems where case sensitivity matters.</p>
-
-    <p>Fixed <code>NullPointerException</code> when getting code source in
-    <code>PackagingDataCalculator</code>.</p>
-
-    <p>The search path for <code>logback-access.xml</code> is now
-    <code>${catalina.base}</code> and then <code>${catalina.home}</code>
-    if not found.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-844">LOGBACK-844</a>)
-    </p>
-
-    <p>The <code>LoggingEvent</code> constructor delays message
-    formatting so that it can be computed lazily by the
-    <code>getFormattedMessage</code> method. This fixes <a
-    href="http://jira.qos.ch/browse/LOGBACK-873">LOGBACK-873</a> and
-    re-fixes <a
-    href="http://jira.qos.ch/browse/LOGBACK-495">LOGBACK-495</a>.
-    </p>
-
-    <p><code>PackagingDataCalculator</code> now checks for the case
-    where the caller has no protection domain. This fixes <a
-    href="http://jira.qos.ch/browse/LOGBACK-617">LOGBACK-617</a>
-    reported by Yuri de Wit. The relevant fix was provided by Mikhail
-    Mazursky.
-    </p>
-    
-
-    <hr width="80%" align="center" />
-
-    <h3>May 10th, 2013 - Release of version 1.0.13</h3>
-  
-    <p>In logback-access MANIFEST file, imports of Jetty and Tomcat
-    are now optional. This fixes <a
-    href="http://jira.qos.ch/browse/LOGBACK-300">LOGBACK-300</a>
-    reported by Christian Brensing who also provided the appropriate
-    pull request.
-    </p>
-
-    <p>Logback will now correctly parses variables with a default
-    separator string nested within accolades, e.g. "{a:-b}". Such
-    strings resemble variable references but lack the $ prefix, e.g
-    "${a:-b}". This fixes <a
-    href="http://jira.qos.ch/browse/LOGBACK-859">LOGBACK-859</a>
-    reported by Yoni Moses.</p>
-
-    <p>In <code>InterpretationContext</code> class replaced code using
-    JDK 1.6 API with code using JDK 1.5. This fixes <a
-    href="http://jira.qos.ch/browse/LOGBACK-860">LOGBACK-860</a>
-    reported by Bas Stoker.
-    </p>
-
-    <p>Updated the "org.fusesource.jansi:jansi" dependency to version
-    1.9.</p>
-
-    <hr width="80%" align="center" />
-
-    <h3>April 26th, 2013 - Release of version 1.0.12</h3>
-    
-    <p>A new <code>SSLSocketAppender</code> extends the basic 
-    <code>SocketAppender</code> providing the ability to deliver 
-    logging events over the Secure Socket Layer (SSL).  The 
-    corresponding <code>SimpleSSLSocketServer</code> extends the classic 
-    <code>SimpleSocketServer</code> as a basic logging server 
-    application that receives logging events from a 
-    <code>SSLSocketAppender</code>.</p>
-      
-    <p class="highlight">Receiver components are configured in
-    logback.xml just like any other logback component.</p>
-
-    <p>While <code>SimpleSocketServer</code> (and its new SSL-enabled
-    counterpart, <code>SimpleSSLSocketServer</code>) provide an 
-    easy-to-use standalone logging server application, a new component
-    type known as a <em>receiver</em> allows <em>any</em> application 
-    to receive logging events from remote appenders over a TCP/IP network 
-    connection, using Logback Classic.  Receiver components are 
-    configured in <em>logback.xml</em> just like any other logback 
-    component.</p>
-      
-    <p>A receiver can either listen passively for connections from
-    remote <code>SocketAppender</code> components acting as clients, 
-    or it can assume the client role, initiating a connection to a 
-    remote appender acting as a server.  The receiver components 
-    shipped with Logback include full support for logging event 
-    delivery over the Secure Sockets Layer (SSL).</p>
-
-    <p>All of the new socket-based receiver and appender components were 
-    contributed by Carl Harris.  See 
-    <a href="manual/receivers.html">Receivers</a> in the Logback Manual 
-    for more information on configuring receiver components.  See 
-    <a href="manual/appenders.html#SocketAppender">SocketAppender</a> and
-    <a href="manual/appenders.html#serverSocketAppender">ServerSocketAppender</a>
-    for information on configuring appenders as event sources for
-    receiver components.</p>
-
-    <p><code>RollingFileAppender</code> will now detect when <span
-    class="option">file</span> property collides with <span
-    class="option">fileNamePattern</span>, emit <a
-    href="codes.html#rfa_collision">an error message</a> and refuse to
-    initialize. This was requested in <a
-    href="http://jira.qos.ch/browse/LOGBACK-796">LOGBACK-796</a> by
-    Karl Pietrzak who also provided a patch.
-    </p>
-
-    <p>In configuration files, the <code><include></code> element
-    now admits the <span class="attr">optional</span> attribute. This
-    fixes <a
-    href="http://jira.qos.ch/browse/LOGBACK-230">LOGBACK-230</a>
-    reported by Attila Kiraly. Many thanks to Tommy Becker who
-    contributed a patch.</p>
-
-    <p>In response to <a
-    href="http://jira.qos.ch/browse/LOGBACK-829">LOGBACK-829</a>,
-    serialization of <code>Logger</code> instances has been
-    significantly simplified and much unnecessary bloat removed. As an
-    added bonus, the new serialization of <code>Logger</code> objects
-    is also compatible with serialization streams using older Logger
-    instances. <code>Logger</code> instances serialized by logback
-    1.0.11 and earlier can be read by logback version 1.0.12 and later
-    and <em>vice-versa</em>.
-    </p>
-
-    <p>The code detecting whether Groovy is available on the class
-    path deals with the case where logback binaries are installed as
-    endorsed libraries. This fixes <a
-    href="http://jira.qos.ch/browse/LOGBACK-831">LOGBACK-831</a>.
-    </p>
-
-    <p class="highlight">Groovy configurator no longer supports
-    <code>SiftingAppender</code>.</p>
-
-    <p>In response to <a
-    href="http://jira.qos.ch/browse/LOGBACK-244">LOGBACK-244</a>, <a
-    href="http://jira.qos.ch/browse/LOGBACK-724">LOGBACK-724</a> and
-    in particular patches provided by Tommy Becker and David Roussel
-    component tracking code has been simplified and completely
-    re-written. <code>SiftingAppender</code> now supports the <a
-    href="manual/appenders.html#siftTimeout">timeout</a> and <a
-    href="manual/appenders.html#siftMaxAppenderCount">maxAppenderCount</a>
-    parameters. As a direct consequence of modifications to component
-    tracking code, the groovy configurator no longer supports
-    <code>SiftingAppender</code>.</p>
-
-    <p>SiftingAppender now propagates properties defined elsewhere in
-    the configuration file into the configuration process of nested
-    appenders. This fixes <a
-    href="http://jira.qos.ch/browse/LOGBACK-833">LOGBACK-833</a> with
-    David Roussel providing the appropriate patch.
-    </p>
-
-    <p>As all other actions affecting properties,
-    <code>TimestampAction</code> now inserts the user-specified
-    property into the local scope by default. The property was
-    inserted into the context scope in earlier versions of logback.
-    This fixes <a
-    href="http://jira.qos.ch/browse/LOGBACK-835">LOGBACK-835</a> with
-    David Roussel providing the appropriate patch.
-    </p>
-
-    <p>Logback is now able to retrieve the name of localhost when
-    running under OS X and Java 7. This issue was reported by <a
-    href="http://jira.qos.ch/browse/LOGBACK-749">LOGBACK-749</a> by
-    Oliver Schrenk with patches provided by Ralph Goers and Pavel
-    Valodzka.
-    </p>
-
-    <p>The <a href="manual/layouts.html#mdc">mdc</a> converter can now
-    handle default values. This feature was requested in <a
-    href="http://jira.qos.ch/browse/LOGBACK-246">LOGBACK-246</a> by
-    Michael Osipov with Denis Bazhenov providing a patch.
-    </p>
-
-    <p><code>DBAppender</code> in logback-classic module no longer
-    assumes that caller information is always available. This fixes <a
-    href="http://jira.qos.ch/browse/LOGBACK-805">LOGBACK-805</a>
-    reported by Daris Cooper who also provided a corrective patch.</p>
-
-    <p>In order to simplify our build, several unit tests have been
-    ported from Scala to Java. It follows that logback no longer
-    depends on Scala, not even during the test phase of the build.</p>
-
-    <h3>25th of March, 2013 - Release of version 1.0.11</h3>
-
-
-    <p>Under Unix*, the basic/quick file rename method supplied by
-    Java does not work if the source and target files are on different
-    file systems. This problem was reported in <a
-    href="http://jira.qos.ch/browse/LOGBACK-108">LOGBACK-108</a> by
-    Daniel Potter. In order to deal with this issue, logback now will
-    perform rename by copying if the source and target files are on
-    different file systems and the host JDK is version 1.7 or
-    later. See also the related <a
-    href="codes.html#renamingError">error code</a>.</p>
-
-
-    <p>The "cn" conversion word now correctly maps to
-    <code>ContextNameConverter</code> class. This fixes <a
-    href="http://jira.qos.ch/browse/LOGBACK-463">LOGBACK-463</a>
-    reported by Michael Osipov with Mark A. Ziesemer providing the
-    appropriate patch.
-    </p>
-
-    <p>Added gray to the list of <a
-    href="manual/layouts.html#coloring">ANSI colors supported by
-    logback</a>. The relevant pull request was kindly provided by
-    Craig P. Motlin.</p>
-
-    <p>The <code>discoverConnectionProperties()</code> method in class
-    <code>ConnectionSourceBase</code> no longer leaks
-    connections. This fixes <a
-    href="http://jira.qos.ch/browse/LOGBACK-798">LOGBACK-798</a>
-    reported by Sayevskiy Viacheslav. Many thanks to Ivan
-    (Wee-Willie-Winkie) who contributed the appropriate fix.
-    </p>
-
-    <p>In logback-access, more correct determination of whether
-    contents of an <code>HttpServletRequest</code> are URL encoded or
-    not. The <a href="https://github.com/qos-ch/logback/pull/71">bug
-    fix</a> was submitted by David Schneider. The same issue was later
-    independently reported by Grzegorz Kuligowski in <a
-    href="http://jira.qos.ch/browse/LOGBACK-814">LOGBACK-814</a>.</p>
-
-    <p>Both <code>SocketAppenderBase</code> and
-    <code>SimpleSocketServer</code> now use a socket factory to create
-    sockets. These changes were asked in <a
-    href="http://jira.qos.ch/browse/LOGBACK-815">LOGBACK-815</a> and
-    <a href="http://jira.qos.ch/browse/LOGBACK-816">LOGBACK-816</a> by
-    Carl Harris who also contributed the relevant patch.
-    </p>
-
-    <hr width="80%" align="center" />
-
-    <h3>15th of March, 2013 - Release of version 1.0.10</h3>
-
-    <p>Upgraded the (optional) groovy dependency to version 2.0.7
-    (from 2.0.0).</p>
-
-    <p>The logger cache field in <code>LoggerContext</code> now uses a
-    <code>ConcurrentHashMap</code> instead of a regular
-    <code>HashMap</code>. This dramatically improves the speed of
-    logger retrieval and incidentally fixes <a
-    href="http://jira.qos.ch/browse/LOGBACK-142">LOGBACK-142</a>.
-    </p>
-
-    <p>In <code>SyslogAppender</code> allow <a
-    href="manual/appenders.html#syslogSuffixPattern">suffixPattern</a>
-    to begin with literal text. This issue was reported Bruno Polaco
-    in <a href="http://jira.qos.ch/browse/LOGBACK-782">LOGBACK-782</a>
-    who also provided the relevant patch.
-    </p>
-    
-    <p>In order to reduce unnecessary boilerplate several common types
-    and packages are now <a
-    href="manual/groovy.html#AutomaticImports">imported
-    automatically</a>. This feature was contributed by Joris
-    Kuipers.</p>
-
-    <p>Computation of caller information now takes into account Groovy
-    frames (if nunning under Groovy). This fixes <a
-    href="http://jira.qos.ch/browse/LOGBACK-811">LOGBACK-811</a>.</p>
-
-  
-  
-    <hr width="80%" align="center" />
-
-    <h3>December 5th, 2012 - Release of version 1.0.9</h3>
-
-    <p>Removed an erroneous compile-time dependency on Tomcat in the
-    logback-classic module. This issue was reported by Arnaud
-    Heritier.</p>
-
-    <hr width="80%" align="center" />
-
-    <h3>December 4th, 2012 - Release of version 1.0.8</h3>
-
-    <div class="breaking">
-      <h4>logback-classic updated to use SLF4J version 1.7.2 instead
-      of version 1.6.6.</h4>
-      <p>The logback-classic module now uses SLF4J version 1.7.2
-      instead of version 1.6.6. This only impacts projects running
-      under an OSGi platform as SLF4J versions 1.7.x and 1.6.x are
-      100% binary compatible.</p>
-    </div>
-
-    <p>Fixed incorrect <code>BufferStream</code> assignment after
-    recovery in <code>ResilientFileOutputStream</code>. This issue was
-    reported in <a
-    href="http://jira.qos.ch/browse/LOGBACK-765">LOGBACK-765</a> by
-    David Markwick.
-    </p>
-
-    <p>Fixed incorrect parsing of variables in case of colon character
-    followed by a dollar character. This issue was reported in <a
-    href="http://jira.qos.ch/browse/LOGBACK-744">LOGBACK-744</a>.</p>
-
-    <p><code>SyslogAppender</code> now sends out the header line of
-    stack traces. This issue was reported <a
-    href="http://jira.qos.ch/browse/LOGBACK-411">LOGBACK-411</a> and
-    separately as <a
-    href="http://jira.qos.ch/browse/LOGBACK-750">LOGBACK-750</a>.</p>
-
-    <p>A <code>StatusListener</code> implementing
-    <code>LifeCycle</code> interface was not started if specified via
-    the <code>logback.statusListenerClass</code> system property. This
-    issue was reported in <a
-    href="http://jira.qos.ch/browse/LOGBACK-767">LOGBACK-767</a> by
-    Adam Sokowicz.
-    </p>
-
-    <p>In order to avoid duplication, automatic status printing will
-    be disabled if the user explicitly registers a status
-    listerner.</p>
-
-    <p>Added <code>OnErrorConsoleStatusListener</code> to print status
-    messages on the error console, i.e. on System.err. This feature
-    was requested in <a
-    href="http://jira.qos.ch/browse/LOGBACK-292">LOGBACK-292</a> by
-    Abraham Lin. </p>
-
-    <p>Added <code>NopStatusListener</code> class which simply drops
-    incoming status messages. By <a
-    href="manual/configuration.html#logback.statusLC">explicitly
-    registering</a> a <code>NopStatusListener</code> listener,
-    automatic status printing can be turned off.
-    </p>
-
-
-    <hr width="80%" align="center" />
-
-    <h3>24th of August, 2012 - Release of version 1.0.7</h3>
-
-    <div class="breaking">
-      <h4>Janino library upgraded to version 2.6.1.</h4>
-
-      <p>As of Janino version 2.6.0, in addition to
-      <em>janino.jar</em>, <em>commons-compiler.jar</em> needs to be
-      on the class path as well. Please see the <a
-      href="setup.html#janino">Janino setup</a> instructions.</p>
-    </div>
-    
-    <p>
-    </p>
-
-    <div class="breaking">
-      <h4>Groovy dependency upgraded to version 2.0.0.</h4>
-
-      <p>Please see the <a href="setup.html#groovy">Groovy setup</a>
-      instructions.</p>
-    </div>
-
-    <p>The code handling variable substitution has been completely
-    re-written. As requested in <a
-    href="http://jira.qos.ch/browse/LOGBACK-729">LOGBACK-729</a>,
-    variables can be now be nested arbitrarily, even within the
-    default value section. For example,
-    <code>${a${b:-c}:-${d:-e}}</code> is now a valid logback variable
-    expression yielding "e", assuming variables with the keys 'd', 'b'
-    and 'ac' are undefined. The new variable substitution code is
-    designed to be backward compatible with existing configuration
-    files.
-    </p>
-    
-
-    <p>Substitution properties are now correctly recognized by <span
-    class="attr">scan</span> and <span class="attr">scanPeriod</span>
-    attributes of <code><configuration></code> element in
-    configuration files. This fixes <a
-    href="http://jira.qos.ch/browse/LOGBACK-396">LOGBACK-396</a>
-    reported by Oh Chin Boon</p>
-
-    <p>The color-related conversion words now set the default color
-    correctly. Xu Huisheng provided the relavant patch.
-    </p>
-    
-    <p>Fixed a race-condition in <code>AsyncAppender</code> and its
-    worker thread. This issue was reported in <a
-    href="http://jira.qos.ch/browse/LOGBACK-720">LOGBACK-720</a> by
-    Arnd Hannemann who also supplied the relevant patch.</p>
-
-
-    <p>If a <code>PropertyDefiner</code> implements
-    <code>LifeCycle</code>, then its <code>start()</code> method will
-    now be invoked.</p>
-
-    <p>Added the <span class="prop">includeCallerData</span> property
-    in <code><a
-    href="manual/appenders.html#smtpIncludeCallerData">SMTPAppender</a></code>
-    to precompute caller data before storing events for future
-    transmission. This property addresses <a
-    href="http://jira.qos.ch/browse/LOGBACK-734">LOGBACK-734</a>
-    reported by Patrick Hogarty.
-    </p>
-    
-    <hr width="80%" align="center" />
-
-    <h3>7th of June, 2012 - Release of version 1.0.6</h3>
-
-    <p><a
-    href="manual/appenders.html#SMTPAppender"><code>SMTPAppender</code></a>
-    now supports the retrieval of a <code>javax.mail.Session</code>
-    resource from JNDI. This feature was requested in <a
-    href="http://jira.qos.ch/browse/LBCLASSIC-332">LBCLASSIC-332</a>
-    by Hrotko Gabor.</p>
-
-    <p>Listeners passed to <code>statusListener()</code> method in
-    <code>GafferConfigurator</code> (the groovy configurator) are now
-    correctly started.</p>
-
-    <hr width="80%" align="center" />
-
-    <h3>6th of June, 2012 - Release of version 1.0.5</h3>
-
-    <p><a
-    href="manual/appenders.html#ConsoleAppender"><code>ConsoleAppender</code></a>
-    can now activate the <a href="http://jansi.fusesource.org">Jansi
-    library</a> for ANSI color code support on Windows
-    systems. Unix-based operating systems such as Linux and Mac OS X
-    already support ANSI color codes by default.</p>
-
- 
-    <p><code>PatternLayout</code> now supports <a
-    href="manual/layouts.html#coloring">composite conversion
-    specifiers for coloring</a>.</p>
 
     <hr width="80%" align="center" />
 
@@ -655,8 +41,8 @@
 
     <p><code>SMTPAppender</code> now admits the <span
     class="prop">asynchronousSending</span> property, set to 'true' by
-    default. However, it can be set to 'false' for synchronous email
-    transmission. This property was requested in <a
+    default. However, it can be set to 'false' for syncronous email
+    transmisison. This property was requested in <a
     href="http://jira.qos.ch/browse/LBCLASSIC-323">LBCLASSIC-323</a>
     by Patrick Houk.</p>
 
@@ -727,8 +113,8 @@
     </p>
 
     <p><code>SMTPAppender</code> failed to transmit messages under JDK
-    1.5. After some investigation, Dave discovered that this was due to
-    setting the <code>corePoolSize</code> parameter of the relevant
+    1.5. After some investigation, Dave dicovered that this was due to
+    setting the <code>corePoolSize</code> parameter of the relavant
     <code>ThreadPoolExecutor</code> to 0. Setting
     <code>corePoolSize</code> to a higher value, e.g. 1, under JDK 1.5
     solves the problem and fixes <a
@@ -746,7 +132,7 @@
 
     <h3>26th of April, 2012 - Release of version 1.0.2</h3>
 
-    <div class="breaking">
+    <div style="border: 1px solid #F44; background-color: #FED; padding-left: 1ex; padding-right: 1ex;">
 
     <h4><span class="label">Breaking change partially reverted in
     1.0.3</span><br/>By default <code>PatternLayout</code> will now output
@@ -808,7 +194,7 @@
     name pattern of <a
     href="manual/appenders.html#TimeBasedRollingPolicy">TimeBasedRollingPolicy</a>. Auxiliary
     %d tokens must be marked as such by passing the AUX
-    parameter. This feature was requested in <a
+    paramater. This feature was requested in <a
     href="http://jira.qos.ch/browse/LBCORE-242">LBCORE-242</a> by
     Thomas Corte.</p>
 
@@ -852,7 +238,7 @@
     href="http://jira.qos.ch/browse/LBACCESS-17">LBACCESS-17</a>
     reported by Grzegorz Grzybek.</p>
 
-    <div class="breaking">
+    <div style="border: 1px solid #F44; background-color: #FED; padding-left: 1ex; padding-right: 1ex;">
 
     <h4>Breaking change: properties are no longer automatically
     inserted into the context</h4>
@@ -924,7 +310,7 @@
 
     <p>Logback-classic now supports printing stack traces "root cause
     first" instead of the standard "root cause last". See the
-    documentation for <a
+    documentaiton for <a
     href="manual/layouts.html#rootException">%rootException</a>
     converter for further details. The <code>%rootException</code>
     converter was contributed by Tomasz Nurkiewicz in relation with <a
@@ -949,7 +335,7 @@
 
     <p><code>LogbackMDCAdapter</code> now synchronizes over its thread
     local map. This prevents
-    <code>ConcurrentModificationException</code> from occurring while a
+    <code>ConcurrentModificationException</code> from occuring while a
     child thread copies the map from the parent. This fixes <a
     href="http://jira.qos.ch/browse/LBCLASSIC-289">LBCLASSIC-289</a>
     reported by Josh Oddman.</p>
@@ -1035,19 +421,19 @@
 
     <h3>January 25th, 2011 - Release of version 0.9.28</h3>
 
-    <div class="breaking">
- 
-      <h4>Breaking change: In the Context interface, the previously
-      misspelled property <code>bithTime</code> is now renamed as
-      <code>birthTime</code>.</h4>
-      
-      <p>In the <a
-      href="apidocs/ch/qos/logback/core/Context.html">Context</a>
-      interface, the previously misspelled property
-      <code>bithTime</code> is now renamed as
-      <code>birthTime</code>. This is a backward-incompatible
-      change. All pre-existing references to "bithTime" property now
-      need to referenced as "birthTime".</p>
+    <div style="border: 1px solid #F44; background-color: #FED; padding-left: 1ex; padding-right: 1ex;">
+  
+    <h4>Breaking change: In the Context interface, the previously
+    misspelled property <code>bithTime</code> is now renamed as
+    <code>birthTime</code>.</h4>
+
+    <p>In the <a
+    href="apidocs/ch/qos/logback/core/Context.html">Context</a>
+    interface, the previously misspelled property
+    <code>bithTime</code> is now renamed as
+    <code>birthTime</code>. This is a backward-incompatible
+    change. All pre-existing references to "bithTime" property now
+    need to referenced as "birthTime".</p>
     </div>
 
     <p>Fixed <a href="http://jira.qos.ch/browse/LBCLASSIC-238">issue
@@ -1291,7 +677,7 @@
     <h3>March 24, 2010 - Release of version 0.9.19</h3>
 
 
-    <div class="breaking">
+    <div style="border: 1px solid #F44; background-color: #FED; padding-left: 1ex; padding-right: 1ex;">
 
     <h4>Breaking change: FileAppender now expects an Encoder</h4>
 
@@ -1323,8 +709,7 @@
 
     <br/>
 
-    <div class="breaking">
-
+    <div style="border: 1px solid #F44; background-color: #FED; padding-left: 1ex; padding-right: 1ex;">
 
       <h4>Breaking change: DBAppender in logback-classic expects four
       additional columns
@@ -1754,7 +1139,7 @@ ALTER TABLE logging_event ADD arg3 VARCHAR(254);</pre>
 
     <h3>29th of December 2008 - Release of version 0.9.14</h3>
 
-    <p>Corrected a serious dead-lock problem occurring during
+    <p>Corrected a serious dead-lock problem occuring during
     configuration. It was reported in <a
     href="http://jira.qos.ch/browse/LBCLASSIC-81">LBCLASSIC-81</a> by
     Holger Mense.</p>
diff --git a/docs/project-reports.html b/docs/project-reports.html
index e2615eb..f286b6b 100644
--- a/docs/project-reports.html
+++ b/docs/project-reports.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia at Apr 2, 2014 -->
+<!-- Generated by Apache Maven Doxia at May 31, 2012 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20140402" />
+    <meta name="Date-Revision-yyyymmdd" content="20120531" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,8 +27,8 @@
             
         
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2014-04-02</span>
-                   | <span id="projectVersion">Version: 1.1.2</span>
+        <span id="publishDate">Last Published: 2012-05-31</span>
+                   | <span id="projectVersion">Version: 1.0.4</span>
                       </div>
             <div class="xright">                    <a href="./" title="Logback-Parent">Logback-Parent</a>
               
@@ -97,7 +97,7 @@
     </div>
     <div id="footer">
       <div class="xright">
-              Copyright ©                    2005-2014
+              Copyright ©                    2005-2012
                         <a href="http://www.qos.ch">QOS.ch</a>.
             All Rights Reserved.      
         
diff --git a/docs/reasonsToSwitch.html b/docs/reasonsToSwitch.html
index c6f150a..f8fd8f8 100644
--- a/docs/reasonsToSwitch.html
+++ b/docs/reasonsToSwitch.html
@@ -10,11 +10,9 @@
     <link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
 
   </head>
-  <body onload="decorate();">
+  <body>
     <script type="text/javascript">prefix='';</script>
     <script src="templates/header.js" type="text/javascript"></script>
-    <script type="text/javascript" src="js/jquery-min.js"></script>
-    <script type="text/javascript" src="js/decorator.js"></script>
     <div id="left">
       <noscript>Please turn on Javascript to view this menu</noscript>
       <script src="templates/left.js" type="text/javascript"></script>
@@ -23,24 +21,20 @@
 		
 		<h2>Reasons to prefer logback over log4j</h2>
 
-    <p>Logback brings a very large number of improvements over log4j,
-    big and small. They are too many to enumerate exhaustively.
-    Nevertheless, here is a non-exhaustive list of reasons for
-    switching to logback from log4j. Keep in mind that logback is
-    conceptually very similar to log4j as both projects were founded
-    by the same developer. If you are already familiar with log4j, you
-    will quickly feel at home using logback. If you like log4j, you
-    will probably love logback.</p>
+    <p>Here is a non-exhaustive list of reasons for switching to
+    logback from log4j. Keep in mind that logback is conceptually very
+    similar to log4j as both projects were founded by the same
+    developer. If you are already familiar with log4j, you will
+    quickly feel at home using logback.</p>
 
-
-    <h3 class="doAnchor" name="fasterImpl">Faster implementation</h3>
+    <h3><a name="fasterImpl" href="#fasterImpl">Faster implementation</a></h3>
 
     <p>Based on our previous work on log4j, logback internals have
     been re-written to perform about ten times faster on certain
     critical execution paths. Not only are logback components faster,
     they have a smaller memory footprint as well.</p>
 
-    <h3 class="doAnchor" name="tdd">Extensive battery of tests</h3>
+    <h3><a name="tdd" href="#tdd">Extensive battery of tests</a></h3>
 
     <p>Logback comes with a very extensive battery of tests developed
     over the course of several years and untold hours of work. While
@@ -51,8 +45,8 @@
     conditions.
     </p>
     
-    <h3 class="doAnchor" name="slf4j">logback-classic speaks SLF4J
-    natively</h3>
+    <h3><a name="slf4j" href="#slf4j">logback-classic speaks SLF4J
+    natively</a></h3>
 
     <p>Since the <code>Logger</code> class in logback-classic
     implements the SLF4J API natively, you incur zero overhead when
@@ -65,21 +59,21 @@
     in switching logging frameworks.
     </p>
     
-    <h3 class="doAnchor" name="docs">Extensive documentation</h3>
+    <h3><a name="docs" href="#docs">Extensive documentation</a></h3>
     
-    <p>Logback ships with detailed and constantly updated
+    <p>Logback ships with over two hundred pages of constantly updated
     documentation.</p>
 
-    <h3 class="doAnchor" name="DSL">Configuration files in XML or
-    Groovy</h3>
+    <h3><a name="DSL" href="#DSL">Configuration files in XML or
+    Groovy</a></h3>
 
     <p>The traditional way of configuring logback is via an XML
     file. Most of the examples in the documentation use this XML
     syntax. However, as of logback version 0.9.22, <a
     href="manual/groovy.html">configuration files written in
     Groovy</a> are also supported. Compared to XML, Groovy-style
-    configuration is more intuitive, consistent and has a shorter
-    syntax.
+    configuration is more intuitive, consistent and has a much
+    shorter syntax.
     </p>
 
     <p>
@@ -89,21 +83,23 @@
     logback.groovy</a>.
     </p>
 
-    <h3 class="doAnchor" name="autoScan">Automatic reloading of
-    configuration files</h3>
+    <p>We also plan to support configuration files written in
+    Scala.</p>
+    
+
+    <h3><a name="autoScan" href="#autoScan">Automatic reloading of
+    configuration files</a></h3>
 
     <p>Logback-classic can <a
     href="manual/configuration.html#autoScan">automatically reload its
     configuration file upon modification</a>. The scanning process is
-    fast, contention-free, and dynamically scales to millions of
-    invocations per second spread over hundreds of threads. It also
-    plays well within application servers and more generally within
-    the JEE environment as it does <em>not</em> involve the creation
-    of a separate thread for scanning.
-   </p>
+    both fast and safe as it does <em>not</em> involve the creation of
+    a separate thread for scanning. This technical subtlety ensures
+    that logback plays well within application servers and more
+    generally within the JEE environment.</p>
 
-    <h3 class="doAnchor" name="grace">Graceful recovery from I/O
-    failures</h3>
+    <h3><a name="grace" href="#grace">Graceful recovery from I/O
+    failures</a></h3>
 
     <p>Logback's <code>FileAppender</code> and all its sub-classes,
     including <code>RollingFileAppender</code>, can gracefully recover
@@ -114,8 +110,8 @@
     from the previous error condition.
     </p>
     
-    <h3 class="doAnchor" name="maxHistory">Automatic removal of old
-    log archives</h3>
+    <h3><a name="maxHistory" href="#maxHistory">Automatic removal of
+    old log archives</a></h3>
 
     <p>By setting the <span class="option">maxHistory</span> property
     of <a
@@ -129,8 +125,8 @@
     files older than 12 months will be automatically removed.
     </p>
 
-    <h3 class="doAnchor" name="compression">Automatic compression of
-    archived log files</h3>
+    <h3><a name="compression" href="#compression">Automatic
+    compression of archived log files</a></h3>
 
     <p><a
     href="manual/appenders.html#RollingFileAppender">RollingFileAppender</a>
@@ -140,7 +136,7 @@
     duration of the compression.
     </p>
 
-    <h3 class="doAnchor" name="prudent">Prudent mode</h3>
+    <h3><a name="prudent" href="#prudent">Prudent mode</a></h3>
 
     <p>In <a href="manual/appenders.html#prudent">prudent mode</a>,
     multiple <code>FileAppender</code> instances running on multiple
@@ -149,15 +145,15 @@
     <code>RollingFileAppender</code>.
     </p>
 
-    <h3 class="doAnchor" name="lilith">Lilith</h3>
+    <h3><a name="lilith" href="#lilith">Lilith</a></h3>
 
     <p><a href="http://lilith.huxhorn.de/">Lilith</a> is a logging and
     access event viewer for logback. It is comparable to log4j's
     chainsaw, except that Lilith is designed to handle large amounts of
     logging data without flinching.</p>
   
-    <h3 class="doAnchor" name="conditional">Conditional processing of
-    configuration files</h3>
+    <h3><a name="conditional" href="#conditional">Conditional
+    processing of configuration files</a></h3>
 
     <p>Developers often need to juggle between several logback
     configuration files targeting different environments such as
@@ -172,7 +168,7 @@
     </p>
 
 
-    <h3 class="doAnchor" name="filters">Filters</h3>
+    <h3><a name="filters" href="#filters">Filters</a></h3>
 
     <p>Logback comes with a wide array of <a
     href="manual/filters.html">filtering capabilities</a> going much
@@ -205,7 +201,7 @@
     </p>
     
 
-    <h3 class="doAnchor" name="sift">SiftingAppender</h3>
+    <h3><a name="sift" href="#sift">SiftingAppender</a></h3>
     
     <p><a
     href="manual/appenders.html#SiftingAppender">SiftingAppender</a>
@@ -216,8 +212,9 @@
     user go into distinct log files, one log file per user.
     </p>
     
-    <h3 class="doAnchor" name="packagingData">Stack traces with
-    packaging data</h3>
+    <h3><a name="packagingData" href="#packagingData">Stack traces
+    with packaging data</a>
+    </h3>
 
     <p>When logback prints an exception, the stack trace will include
     packaging data. Here is a sample stack trace generated by the <a
@@ -255,9 +252,9 @@ java.lang.Exception: 99 is invalid
     their IDE</a>.
     </p>
 
-    <h3 class="doAnchor" name="logbackAccess">Logback-access,
+    <h3><a name="logbackAccess" href="#logbackAccess">Logback-access,
     i.e. HTTP-access logging with brains, is an integral part of
-    logback</h3>
+    logback</a></h3>
 
     <p>Last but not least, the logback-access module, part of the
     logback distribution, integrates with Servlet containers such as
@@ -266,7 +263,7 @@ java.lang.Exception: 99 is invalid
     design, all the logback-classic features you love are
     available in logback-access as well.</p>
 
-    <h3 class="doAnchor" name="inSummary">In summary</h3>
+    <h3><a name="inSummary" href="#inSummary">In summary</a></h3>
 
     <p>We have listed a number of reasons for preferring logback over
     log4j. Given that logback builds upon on our previous work on
diff --git a/docs/recipes/emailPerTransaction.html b/docs/recipes/emailPerTransaction.html
index 203ec07..e6d60c1 100644
--- a/docs/recipes/emailPerTransaction.html
+++ b/docs/recipes/emailPerTransaction.html
@@ -358,7 +358,7 @@ MDC.put("txId", transactionId); </pre>
      buffers</a>.  </p>
 
      <p>To deal with this problem, we instruct SMTPAppender to discard
-     the appropriate buffer at the end of each transaction. This is done by
+     apprioate buffer at the end of each transaction. This is done by
      logging an event marked as "FINALIZE_SESSION". Here is a modified
      version of <code>PrimeAction</code> which marks the end of a
      transaction with "FINALIZE_SESSION".
@@ -415,7 +415,7 @@ public class PrimeAction extends Action {
       <defaultValue>default</defaultValue>
     </discriminator>
 
-    <b><cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker"></b>
+    <b><cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTrackerImpl"></b>
       <b><maxNumberOfBuffers>512</maxNumberOfBuffers></b>
     <b></cyclicBufferTracker></b>
 
diff --git a/docs/setup.html b/docs/setup.html
index ba83c28..b174e63 100644
--- a/docs/setup.html
+++ b/docs/setup.html
@@ -7,45 +7,40 @@
     <link rel="stylesheet" type="text/css" href="css/common.css" />
     <link rel="stylesheet" type="text/css" href="css/screen.css" media="screen" />
     <link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
-    <link rel="stylesheet" type="text/css" href="css/prettify.css" media="screen" />
+
   </head>
-  <body onload="prettyPrint(); decorate();">
+  <body>
     <script type="text/javascript">prefix='';	</script>
 
-    <script type="text/javascript" src="templates/header.js"></script>
-    <script type="text/javascript" src="js/prettify.js"></script>
-    <script type="text/javascript" src="js/jquery-min.js"></script>
-    <script type="text/javascript" src="js/decorator.js"></script>
-    
+    <script src="templates/header.js" type="text/javascript"></script>
     <div id="left">
-      <script type="text/javascript" src="templates/left.js"></script>
+      <script src="templates/left.js" type="text/javascript"></script>
     </div>
   
     <div id="content">
 	
 	
-    <h2 class="doAnchor">Classpath Setup</h2>
+    <h2>Classpath Setup</h2>
 
     <p>In order to run the examples provided in the documentation, you
     need to add the following jars to your class path:
     </p>
 
     <ul>
-      <li>logback-core-1.1.2.jar</li>
-      <li>logback-classic-1.1.2.jar</li>
-      <li>logback-examples-1.1.2.jar</li>
-      <li>slf4j-api-1.7.6.jar</li>
+      <li>logback-core-1.0.4.jar</li>
+      <li>logback-classic-1.0.4.jar</li>
+      <li>logback-examples-1.0.4.jar</li>
+      <li>slf4j-api-1.6.4.jar</li>
     </ul>
     
     <p>The <em>logback-*.jar</em> files are part of the logback
-    distribution whereas <em>slf4j-api-1.7.6.jar</em> ships
+    distribution whereas <em>slf4j-api-1.6.4.jar</em> ships
     with <a href="http://www.slf4j.org">SLF4J</a>, a separate project.
     </p>
     
 
 
-    <h3 class="doAnchor" name="commandLine">Running from the command
-    line</h3>
+    <h3><a href="">Running from the command line</a></h3>
     
     <p>Assuming your current directory is
     <em>$LOGBACK_HOME/logback-examples</em>, where
@@ -54,8 +49,8 @@
     <em>chapters.introduction.HelloWord1</em> with the following command:
     </p>
 
-    <p class="source">java -cp lib/slf4j-api-1.7.6.jar;../logback-core-1.1.2.jar;\
- ../logback-classic-1.1.2.jar;logback-examples-1.1.2.jar\
+    <p class="source">java -cp lib/slf4j-api-1.6.4.jar;../logback-core-1.0.4.jar;\
+ ../logback-classic-1.0.4.jar;logback-examples-1.0.4.jar\
  chapters.introduction.HelloWorld1</p>
 
    <p>It is more convenient to set the CLASSPATH environment variable
@@ -78,8 +73,8 @@
    <em>$LOGBACK_HOME/logback-examples</em> directory.
    </p>
 
-   <h3 class="doAnchor" name="SMTP"><code>SMTPAppender</code> requires
-   JavaMail API</h3>
+   <h3><a name="SMTP" href="#SMTP"><code>SMTPAppender</code> requires
+   JavaMail API</a></h3>
 
    <p><code>SMTPAppender</code> related examples require the JavaMail
    API version 1.4 or later. Once you <a
@@ -87,162 +82,92 @@
    JavaMail</a>, you need to place <em>mail.jar</em> on your class
    path.</p>
    
-   <p>Here is the corresponding Maven dependency declaration for your
-   convenience.</p>
-
-
 
-   <pre class="prettyprint source"><!-- The javax.activation:activation:1.1 dependency will be -->
-<!-- automatically pulled in by Maven's transitivity rules -->
-<dependency>
-  <groupId>javax.mail</groupId>
-  <artifactId>mail</artifactId>
-  <version>1.4</version>
-</dependency></pre>
-
-   <h3 class="doAnchor" name="groovy"><code>GEventEvaluator</code> and
-   <em>logback.groovy</em> configuration files require the Groovy
-   runtime</h3>
+   <h3><a name="gEventEvaluator"
+   href="#gEventEvaluator"><code>GEventEvaluator</code> requires the
+   Groovy runtime</a></h3>
    
    <p><code>GEventEvaluator</code> depends on the Groovy runtime. It
-   was tested with Groovy version 2.0.7. Similarly, as the
-   name indicates <a href="manual/groovy.html">groovy
-   configuration</a> files require the groovy runtime to be present on
-   your class path.
+   was tested with Groovy version 1.7.2.
    </p>
    
-   <p>Here is the corresponding Maven dependency declaration for your
-   convenience.
-   </p>
-
 
-   <pre class="prettyprint source"><dependency>
-  <groupId>org.codehaus.groovy</groupId>
-  <artifactId>groovy-all</artifactId>
-  <version>2.0.7</version>
-</dependency></pre>
-
-
-   <h3 class="doAnchor" name="janino">Conditional processing and
-   <code>JaninoEventEvaluator</code> require the Janino library</h3>
+   <h3><a name="janino" href="#janino">Evaluators and more
+   specifically <code>JaninoEventEvaluator</code> require
+   Janino</a></h3>
    
-   <p><a href="manual/configuration.html#conditional">Conditional
-   processing</a> in configuration files requires the <a
-   href="http://docs.codehaus.org/display/JANINO/Home"><b>Janino
-   library</b></a>. Moreover, the evaluator examples based on
-   <code>JaninoEventEvaluator</code> require Janino as well.  Once you
-   download Janino, simply place <em>commons-compiler.jar</em> and
-   <em>janino.jar</em> on your application's class path.
-   </p>
-
-   <p><span class="label notice">Don't forget</span> As of Janino
-   version 2.6.0, in addition to <em>janino.jar</em>,
-   <em>commons-compiler.jar</em> needs to be on the class path as well.</p>
-
-   <p>Here is the corresponding Maven dependency declaration for your
-   convenience.
-   </p>
-
-   <pre class="prettyprint source"><!-- The org.codehaus.janino:commons-compiler:2.6.1 dependency -->
-<!-- will be automatically pulled in by Maven's transitivity rules -->
-<dependency>
-  <groupId>org.codehaus.janino</groupId>
-  <artifactId>janino</artifactId>
-  <version>2.6.1</version>
-</dependency></pre>
-
-
-
+   <p>The evaluator examples which are mostly based on
+   <code>JaninoEventEvaluator</code> require <a
+   href="http://docs.codehaus.org/display/JANINO/Home"><b>Janino</b></a>
+   version 2.5.10 or later. Once you have downloaded Janino, you need to
+   place <em>janino.jar</em> on your class path.</p>
    
     
 
-   <h3 class="doAnchor" name="ide">Building with an IDE</h3>
+   <h3><a name="ide" href="#ide">Building with an IDE</a></h3>
    
-   <p>If you wish to contribute to the project or just hack for fun,
-   you will probably want to import logback as a project into your
-   favorite IDE. Logback uses Maven as its build tool. Logback offers
-   a Groovy-based configurator so there is a dependency on the Groovy
-   language. It follows that your IDE should have plugins for Maven
-   and Groovy in order to <em>build</em> logback from your within
-   IDE. The Groovy dependency just mentioned is a <em>build-time</em>
-   dependency. The only mandatory logback dependency at runrime is the
-   JRE, unless of course you wish to use the Groovy configurator in
-   which case Groovy runtime will be a required dependency as
+   <p>If you wish to contribute to hack to the project or just hack it
+   for your own needs, you will probably want to import logback as a
+   project into your favorite IDE. Logback uses Maven as its build
+   tool. The Scala language is used in certain logback test
+   cases. Moreover, logback offers a Groovy-based configurator so
+   there is a dependency on the Groovy language as well. It follows
+   that your IDE should have plugins for Maven, Scala and Groovy in
+   order to <em>build</em> logback from your within IDE. The
+   Scala+Groovy dependecy just mentioned are <em>build-time</em>
+   dependencies. The only mandatory logback dependency at runrime is
+   the JRE, unless of course you wish to use the Groovy configurator
+   in which case Groovy runtime will be a required dependency as
    well. Also note that building from the command line is fairly
    trivial, the command 'mvn install' given from $LOGBACK_HOME folder
    should suffice. </p>
 
-   <p><span class="label">ask for help</span> Notwithstanding the
-   instructions below, if you have trouble building logback from the
-   sources, just ask for help on the logback-dev mailing list.</p>
-
-   <h3 class="doAnchor" name="idea">Building logback with IntelliJ
-   IDEA</h3>
+   <h3>Building logback with IntelliJ IDEA</h3>
 
    <p>Assuming you have the latest version of IntelliJ IDEA installed,
-   no additional plugin installation is necessary. IntelliJ IDEA
-   supports Maven as well as Groovy out of the box. You can import
-   logback into IDEA by selecting File→ New Project → Import
-   from external model→ Maven, then select $LOGBACK_HOME as the
-   Root directory. The import should finish successfully in a few
-   seconds.</p>
-
-   <h3 class="doAnchor" name="eclipse">Building with Eclipse</h3>
+   the only required additional plugin is the Scala plugin. IntelliJ
+   IDEA supports Maven as well as Groovy out of the box. Once you have
+   the Scala plugin installed, you can import logback into
+   IDEA. Select File→ New Project → Import from external
+   model→ Maven, then select $LOGBACK_HOME as the Root
+   directory. The import should finish successfully in a few
+   seconds. If you import logback before the scala-plugin is
+   installed, you would need to re-import logback as a project after
+   the Scala plugin is installed.</p>
+
+   <h3>Building with Eclipse</h3>
 
    <p>Building logback under Eclipse is a little trickier. Here are
    instructions for building logback under Eclipse in 61 easy steps.
    </p>
 
    <p>The author does not wish to unduly disparage
-   <code>m2eclipse</code>. However, as of this writing, that is
-   October 2011, it appears that the key to building logback under
-   Eclipse is to avoid using <code>m2eclipse</code>. If you have
+   <code>m2eclipse</code>. However, as of this writing that is October
+   2011, it appears that the key to building logback under Eclipse is
+   to avoid using <code>m2eclipse</code>. If you have
    <code>m2eclipse</code> installed, you can disable it by removing
-   the Maven Nature for a given project. In later versions of Eclipse,
-   m2eclipse is installed bu default. As of logback version 1.0.7, the
-   <em>pom.xml</em> file for logback-core now deactivates m2eclipse as
-   explained in <a
-   href="http://wiki.eclipse.org/M2E_plugin_execution_not_covered#ignore_plugin_goal">M2E
-   plugin wiki</a>.
-   </p>
-
-   <p>And without further ado here are the steps:
+   the Maven Nature for a given project. And without further ado here
+   are the steps:
    </p>
    
 
    <ol>
-     <li>Install Eclipse</li>
-
-<!--     <li>in <em>eclipse.ini</em> file modify the parameter "mx",
+     <li>Install Eclipse Indigo, aka Eclipse 3.7</li>
+     <li>in <em>eclipse.ini</em> file modify the parameter "mx",
      i.e. change -Xmx384m to -Xmx1384m</li>
--->
-
-     <li>Install the Groovy plugin for Eclipse. 
-
-       <ul>
-         <li>
-           <p>You first need to determine the update site appropriate
-           for your version of Eclipse. The list of available update
-           sites is available from <a
-           href="http://groovy.codehaus.org/Eclipse+Plugin">Groovy
-           project documentation</a>.
-           </p>
-           <p>For example, for Eclipse 4.2 (Juno) the URL of the
-           update site is
-           "http://dist.springsource.org/release/GRECLIPSE/e4.2/".
-           </p>
-         </li>
-         
-         <li>In Eclipse, select Help → Intall new Software →
-         Work with the update site you chose in the previous step and
-         then Select "Groovy-Eclipse Feature". Installation of other
-         plugins in particular "m2e Configurator for Groovy-Eclipse"
-         is <b>not</b> necessary
-         </li>
-       </ul>
-    </li>
 
+     <li>In Eclipse, select Help → Intall new Software →
+     Work with <a
+     href="http://dist.springsource.org/release/GRECLIPSE/e3.7/">http://dist.springsource.org/release/GRECLIPSE/e3.7/</a>
+     and then Select "Groovy-Eclipse Feature". Installation of other
+     plugins in particular "m2e Configurator for Groovy-Eclipse" is
+     <b>not</b> necessary</li>
 
+     <li>Similar to the previous step, install Scala IDE for Eclipse
+     plugin from <a
+     href="http://download.scala-ide.org/releases-29/2.0.0-beta">http://download.scala-ide.org/releases-29/2.0.0-beta</a>. Installation
+     of "JDT Weaving" or "Scala IDE for Eclipse Source feature" are
+     not necessary.</li>
 
      <li><pre>cd $LOGBACK_HOME</pre>
 
@@ -258,12 +183,18 @@
      in $LOGBACK_HOME</li>
 
      <li>In Eclipse, import the logback project: Import→
-     General→ Existing Projects into Workspace, select
+     General→ Existing Prokects into Workspace, select
      $LOGBACK_HOME folder for the import
      </li>   
+
+    
+     <li>In Eclipse, add the scala nature to logback-core project:
+     (right click on logback-core project→ Configure→ Add
+     Scala Nature)
+     </li>   
      
      <li>In Eclipse, remove the
-     logback-classic/target/generated-sources/groovy-stubs/main
+     logback-classic/target/generated-sources/groovy-sttubs/main
      directory from the list of source folders (logback-classic→
      project properties → Java Build Path)
      </li>   
@@ -279,10 +210,13 @@
      
    </ol>
 
+   <p>The above should also work for Helios (Eclipse 3.6). The only
+   difference is that the Groovy-Eclipse feature needs to be installed
+   from <a
+   href="http://dist.springsource.org/release/GRECLIPSE/e3.6/">http://dist.springsource.org/release/GRECLIPSE/e3.6/</a>.
+   </p>
 
-   <p>The above listed procedure has been last tested by the author
-   using Eclipse Juno on April 4th 2013.</p>
-
+	
    <script src="templates/footer.js" type="text/javascript"></script>
 </div>
 </body>
diff --git a/docs/templates/creative.js b/docs/templates/creative.js
index 78b2b40..abe2078 100644
--- a/docs/templates/creative.js
+++ b/docs/templates/creative.js
@@ -3,7 +3,7 @@ document.write('           cellspacing="0" width="70%">');
 document.write('      <tr>');
 document.write('        <td>        ');
 document.write('          <p class="author">');
-document.write('            Authors: Ceki Gülcü, Sébastien Pennec, Carl Harris');
+document.write('            Authors: Ceki Gülcü, Sébastien Pennec');
 document.write('          <br/>');
 document.write('          Copyright © 2000-2012, QOS.ch</p>');
 document.write('        </td>');
diff --git a/docs/templates/footer.js b/docs/templates/footer.js
index 0f4685b..e31068f 100644
--- a/docs/templates/footer.js
+++ b/docs/templates/footer.js
@@ -3,13 +3,11 @@ document.write('<table class="footer" border="0">')
 
 document.write('<tr>')
 
-document.write('<td valign="top">Copyright © 2013  <a href="http://www.qos.ch/">QOS.ch</a></td>')
+document.write('<td valign="top">Copyright © 2012  <a href="http://www.qos.ch/">QOS.ch</a></td>')
 
-document.write('  <td rowspan="2">');
-document.write('    <a href="http://twitter.com/qos_ch">');
-document.write('      <img alt="Follow @qos_ch" src="http://www.slf4j.org/images/follow_us.png" />');
-document.write('    </a>');
-document.write('  </td>');
+document.write('  <td rowspan="2">')
+document.write('    <script type="text/javascript" src="http://www.ohloh.net/p/13616/widgets/project_users.js"></script>')
+document.write('  </td>')
 
 
 document.write('</tr>')
diff --git a/docs/templates/left.js b/docs/templates/left.js
index cf769dd..de0b705 100644
--- a/docs/templates/left.js
+++ b/docs/templates/left.js
@@ -1,5 +1,4 @@
 
-document.write('<div class="menuGroup">');
 document.write('<p class="menu_header">Logback project</p>');
 document.write('<p class="menu"><a href="' + prefix + 'index.html">Introduction</a></p>');
 document.write('<p class="menu"><a href="' + prefix + 'download.html">Download</a></p>');
@@ -24,8 +23,4 @@ document.write('<p class="menu"><a href="http://logback.qos.ch/translator/">log4
 document.write('<p class="menu"><a href="http://logback.qos.ch/translator/asGroovy.html">logback.XML to Groovy</a>');
 
 document.write('</p>');
-document.write('</div>');
 
-document.write('<p/>');
-
-document.write('<div class="jobadd"><p><a href="'+prefix +'job.html">Your career<br/>@QOS.ch</a></p></div>');
\ No newline at end of file
diff --git a/docs/volunteer.html b/docs/volunteer.html
index 5a5fd36..a0964d3 100644
--- a/docs/volunteer.html
+++ b/docs/volunteer.html
@@ -22,48 +22,26 @@
   
     <h2>Call for volunteers</h2>
 
-    <p>We are looking for volunteers in the following areas.</p>
+    <p>We are looking for volunteers in the following areas (in order
+    of decreasing priority).</p>
 
     <ol>
-      <li><span class="label">top priority</span> <b>logback in 10 minutes</b> 
+      <li><b>logback in 10 minutes</b> 
       
-      <p>We are looking for a volunteer, preferably a native English
-      speaker, to write a short document describing logback for
-      beginners, entitled say "logback in 10 minutes". This document
-      is likely to be the most widely read document of the
-      project. Writing such a document is an excellent opportunity to
-      learn logback. Obviously, there would be plenty of editorial
-      help and guidance coming from the logback developers.
+      <p>We are looking for a volunteer to write a short document
+      describing logback for beginners, entitled say "logback in 10
+      minutes". This document is likely to be the most widely read
+      document of the project. Writing such a document is an excellent
+      opportunity to learn logback. Obviously, there would be plenty
+      of editorial help and guidance coming from the logback
+      developers.
       </p>
       </li>
 
-      <li><span class="label">high priority</span> <b>Proof reading the documentation</b>
-      <p>We are always looking for volunteers to proof-read the
-      documentation. Suggestions as to the design and look-and-feel of
-      the site are also welcome.</p>
-      </li>
-
-      <li><span class="label">medium priority</span> <b>Decoder:
-      parse log files and transform them into logging events</b>
-      
-      <p>This effort has been started under the <a
-      href="https://github.com/qos-ch/logback-decoder">logback-decoder</a>
-      project but has stalled. This problem is technically
-      interesting, has a well-defined scope and mostly independent of
-      the logback framework.
-      </p>
-      
-      </li>
+      <li><b>Write a tool for parsing log files</b>
 
-      <li><span class="label">medium priority</span> <b>Maintain the
-      groovy configurator</b>
-
-      <p>The Groovy configurator, aka Gaffer, although pretty cool, is
-      not getting the attention it deserves. The amount of code
-      involved, although not completely trivial, is far from
-      insurmountable. We are looking for a volunteer to take over
-      Gaffer.
-       </p>
+      <p>We are looking for a volunteer to write a tool for parsing
+      log files.</p>
       </li>
 
       <li><b>Improve OSGi support</b>
@@ -76,61 +54,16 @@
       <p>We are looking for volunteers for fixing logback
       bugs. Volunteering to solve bugs is a good way to learn about
       any project.
-      </p> 
-
-      <p>For those looking for highly technical challenges with
-      limited scope, have a look at various build failures observable
-      on <a href="http://logback.qos.ch/jenkins/">our Jenkins
-      instance</a>.
-      </p>
-
-      <p>Our build is quite stable but failures occur from time to
-      time on our Jenkins instance hosted on a relatively old
-      computer.</p>
-
-      <ul>
-
-        <li><a
-        href="http://logback.qos.ch/jenkins/job/logback/149/">build
-        #149</a> with test failure in <a
-        href="http://logback.qos.ch/jenkins/job/logback/ch.qos.logback$logback-classic/149/testReport/junit/ch.qos.logback.classic.joran/JoranConfiguratorTest/levelChangePropagator1/">JoranConfiguratorTest.levelChangePropagator1</a>
-        probable cause: parallel execution, j.u.l. shared-state
-        overridden by levelChangePropagator0 while levelChangePropagator1 is running
-        </li>
-
-        <li><a
-        href="http://logback.qos.ch/jenkins/job/logback/298/">build
-        #298</a> with test failure in <a
-        href="http://logback.qos.ch/jenkins/job/logback/ch.qos.logback$logback-core/298/testReport/junit/ch.qos.logback.core/AsyncAppenderBaseTest/workerShouldStopEvenIfInterruptExceptionConsumedWithinSubappender/">AsyncAppenderBaseTest</a>
-        probable cause: race condition
-        </li>
-
-
-        <li><a
-        href="http://logback.qos.ch/jenkins/job/logback/91/">build
-        #91</a> with test failure in <a
-        href="http://logback.qos.ch/jenkins/job/logback/ch.qos.logback$logback-classic/91/testReport/junit/ch.qos.logback.classic.net/SMTPAppender_GreenTest/testMultipleTo/">SMTPAppender_GreenTest</a>
-        probable cause: race condition, GreenMail server not running
-        at time of message transmission</li>
-
-
-      </ul>
-
-      <p>These build failures are quite hard to reproduce. If you
-      intend to work on these problems, you will probably first need
-      to make changes to logback code so that the problem becomes
-      easily reproducible. One the problem is identified and
-      reproducible, solving it should be much easier.
-      </p>
+      </p>      
+      </li>
 
-    <h3>Setting up the project</h3>
+      <li><b>Proof reading the documentation</b>
+      <p>We are always looking for volunteers to proof-read the
+      documentation. Suggestions as to the design and look-and-feel of
+      the site are also welcome.</p>
+      </li>
+    </ol>
     
-    <p>If you wish to contribute to the project or just hack for fun,
-    you will probably want to import logback as a project into your
-    favorite IDE. See the instructions for <a
-    href="setup.html#ide">building logback in Eclipse or IntelliJ
-    IDEA</a> for details.</p>
-
     <script src="templates/footer.js" type="text/javascript"></script>
   </div>
   </body>
diff --git a/logback-access/pom.xml b/logback-access/pom.xml
index 12639e1..b01c9a9 100644
--- a/logback-access/pom.xml
+++ b/logback-access/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>ch.qos.logback</groupId>
     <artifactId>logback-parent</artifactId>
-    <version>1.1.2</version>
+    <version>1.0.4</version>
   </parent>
 
   <artifactId>logback-access</artifactId>
@@ -50,12 +50,13 @@
       <optional>true</optional>
     </dependency>
 
-    <dependency>
-      <groupId>org.apache.tomcat</groupId>
-      <artifactId>tomcat-coyote</artifactId>
-      <scope>compile</scope>
-      <optional>true</optional>
-    </dependency>
+    <!--<dependency>-->
+    <!--<groupId>org.mortbay.jetty</groupId>-->
+    <!--<artifactId>jetty</artifactId>-->
+    <!--<scope>compile</scope>-->
+    <!--<optional>true</optional>-->
+    <!--</dependency>-->
+
 
     <dependency>
       <groupId>org.eclipse.jetty</groupId>
@@ -64,8 +65,15 @@
       <optional>true</optional>
     </dependency>
 
+    <!--<dependency>-->
+    <!--<groupId>org.mortbay.jetty</groupId>-->
+    <!--<artifactId>servlet-api-2.5</artifactId>-->
+    <!--<scope>compile</scope>-->
+    <!--<optional>true</optional>-->
+    <!--</dependency>-->
+
     <dependency>
-      <groupId>org.codehaus.janino</groupId>
+       <groupId>org.codehaus.janino</groupId>
       <artifactId>janino</artifactId>
       <scope>compile</scope>
       <optional>true</optional>
@@ -83,6 +91,13 @@
       <scope>compile</scope>
       <optional>true</optional>
     </dependency>
+
+    <dependency>
+      <groupId>org.scala-lang</groupId>
+      <artifactId>scala-library</artifactId>
+      <scope>test</scope>
+    </dependency>
+
   </dependencies>
 
   <build>
@@ -91,10 +106,8 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
-        <version>${maven-surefire-plugin.version}</version>
         <configuration>
-          <forkMode>once</forkMode>
-          <!--<parallel>classes</parallel>-->
+          <fork>once</fork>
           <reportFormat>plain</reportFormat>
           <disableXmlReport>true</disableXmlReport>
           <excludes>
@@ -108,7 +121,6 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-jar-plugin</artifactId>
-        <version>${maven-jar-plugin.version}</version>
         <configuration>
           <archive>
             <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF
@@ -142,20 +154,6 @@
         <configuration>
           <instructions>
             <Export-Package>ch.qos.logback.access.*</Export-Package>
-            <!--
-                It is necessary to specify the rolling file packages as classes
-                are created via IOC (xml config files). They won't be found by
-                Bnd's analysis of java code.
-            -->
-            <Import-Package>
-              ch.qos.logback.core.rolling,
-              ch.qos.logback.core.rolling.helper,
-              javax.servlet.*;version="2.5",
-              javax.*;resolution:=optional,
-              org.apache.catalina.*;version="${tomcat.version}";resolution:=optional,
-              org.eclipse.jetty.*;version="${jetty.version}";resolution:=optional,
-              *
-            </Import-Package>
             <Bundle-RequiredExecutionEnvironment>J2SE-1.5
             </Bundle-RequiredExecutionEnvironment>
           </instructions>
diff --git a/logback-access/src/main/java/ch/qos/logback/access/AccessConstants.java b/logback-access/src/main/java/ch/qos/logback/access/AccessConstants.java
index 8b82174..4722250 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/AccessConstants.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/AccessConstants.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/PatternLayout.java b/logback-access/src/main/java/ch/qos/logback/access/PatternLayout.java
index 3a58f4d..66f3eea 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/PatternLayout.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/PatternLayout.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,9 +13,11 @@
  */
 package ch.qos.logback.access;
 
+import java.util.HashMap;
+import java.util.Map;
+
 import ch.qos.logback.access.pattern.ContentLengthConverter;
 import ch.qos.logback.access.pattern.DateConverter;
-import ch.qos.logback.access.pattern.ElapsedTimeConverter;
 import ch.qos.logback.access.pattern.EnsureLineSeparation;
 import ch.qos.logback.access.pattern.FullRequestConverter;
 import ch.qos.logback.access.pattern.FullResponseConverter;
@@ -41,12 +43,8 @@ import ch.qos.logback.access.pattern.ServerNameConverter;
 import ch.qos.logback.access.pattern.StatusCodeConverter;
 import ch.qos.logback.access.spi.IAccessEvent;
 import ch.qos.logback.core.pattern.PatternLayoutBase;
-import ch.qos.logback.core.pattern.color.*;
 import ch.qos.logback.core.pattern.parser.Parser;
 
-import java.util.HashMap;
-import java.util.Map;
-
 /**
  * <p>
  * This class is a module-specific implementation of
@@ -55,10 +53,10 @@ import java.util.Map;
  * way to format the logging output that is just as easy and flexible as the
  * usual <code>PatternLayout</code>.
  * </p>
- * <p/>
+ * <p>
  * For more information about this layout, please refer to the online manual at
  * http://logback.qos.ch/manual/layouts.html#AccessPatternLayout
- *
+ * 
  * @author Ceki Gülcü
  * @author Sébastien Pennec
  */
@@ -67,11 +65,11 @@ public class PatternLayout extends PatternLayoutBase<IAccessEvent> {
   public static final Map<String, String> defaultConverterMap = new HashMap<String, String>();
   public static final String HEADER_PREFIX = "#logback.access pattern: ";
 
-  public static final String CLF_PATTERN = "%h %l %u [%t] \"%r\" %s %b";
-  public static final String CLF_PATTERN_NAME = "common";
-  public static final String CLF_PATTERN_NAME_2 = "clf";
-  public static final String COMBINED_PATTERN = "%h %l %u [%t] \"%r\" %s %b \"%i{Referer}\" \"%i{User-Agent}\"";
-  public static final String COMBINED_PATTERN_NAME = "combined";
+  public static String CLF_PATTERN = "%h %l %u [%t] \"%r\" %s %b";
+  public static String CLF_PATTERN_NAME = "common";
+  public static String CLF_PATTERN_NAME_2 = "clf";
+  public static String COMBINED_PATTERN = "%h %l %u [%t] \"%r\" %s %b \"%i{Referer}\" \"%i{User-Agent}\"";
+  public static String COMBINED_PATTERN_NAME = "combined";
 
   static {
     defaultConverterMap.putAll(Parser.DEFAULT_COMPOSITE_CONVERTER_MAP);
@@ -123,22 +121,22 @@ public class PatternLayout extends PatternLayoutBase<IAccessEvent> {
     defaultConverterMap.put("server", ServerNameConverter.class.getName());
 
     defaultConverterMap.put("localPort", LocalPortConverter.class.getName());
-
+    
     defaultConverterMap.put("requestAttribute", RequestAttributeConverter.class
         .getName());
     defaultConverterMap.put("reqAttribute", RequestAttributeConverter.class
         .getName());
-
+    
     defaultConverterMap
         .put("reqCookie", RequestCookieConverter.class.getName());
     defaultConverterMap
-        .put("requestCookie", RequestCookieConverter.class.getName());
-
+    .put("requestCookie", RequestCookieConverter.class.getName());
 
+    
     defaultConverterMap.put("responseHeader", ResponseHeaderConverter.class
         .getName());
-
-
+    
+    
     defaultConverterMap.put("requestParameter", RequestParameterConverter.class
         .getName());
     defaultConverterMap.put("reqParameter", RequestParameterConverter.class
@@ -151,30 +149,11 @@ public class PatternLayout extends PatternLayoutBase<IAccessEvent> {
     defaultConverterMap.put("fullRequest", FullRequestConverter.class.getName());
     defaultConverterMap.put("fullResponse", FullResponseConverter.class.getName());
 
-    defaultConverterMap.put("elapsedTime", ElapsedTimeConverter.class.getName());
-    defaultConverterMap.put("D", ElapsedTimeConverter.class.getName());
-
+    
     defaultConverterMap.put("n", LineSeparatorConverter.class.getName());
-
-    defaultConverterMap.put("black", BlackCompositeConverter.class.getName());
-    defaultConverterMap.put("red", RedCompositeConverter.class.getName());
-    defaultConverterMap.put("green", GreenCompositeConverter.class.getName());
-    defaultConverterMap.put("yellow", YellowCompositeConverter.class.getName());
-    defaultConverterMap.put("blue", BlueCompositeConverter.class.getName());
-    defaultConverterMap.put("magenta", MagentaCompositeConverter.class.getName());
-    defaultConverterMap.put("cyan", CyanCompositeConverter.class.getName());
-    defaultConverterMap.put("white", WhiteCompositeConverter.class.getName());
-    defaultConverterMap.put("gray", GrayCompositeConverter.class.getName());
-    defaultConverterMap.put("boldRed", BoldRedCompositeConverter.class.getName());
-    defaultConverterMap.put("boldGreen", BoldGreenCompositeConverter.class.getName());
-    defaultConverterMap.put("boldYellow", BoldYellowCompositeConverter.class.getName());
-    defaultConverterMap.put("boldBlue", BoldBlueCompositeConverter.class.getName());
-    defaultConverterMap.put("boldMagenta", BoldMagentaCompositeConverter.class.getName());
-    defaultConverterMap.put("boldCyan", BoldCyanCompositeConverter.class.getName());
-    defaultConverterMap.put("boldWhite", BoldWhiteCompositeConverter.class.getName());
   }
 
-
+  
   public PatternLayout() {
     // set a default value for pattern
     setPattern(CLF_PATTERN);
diff --git a/logback-access/src/main/java/ch/qos/logback/access/PatternLayoutEncoder.java b/logback-access/src/main/java/ch/qos/logback/access/PatternLayoutEncoder.java
index f49270b..1081ac5 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/PatternLayoutEncoder.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/PatternLayoutEncoder.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/ViewStatusMessagesServlet.java b/logback-access/src/main/java/ch/qos/logback/access/ViewStatusMessagesServlet.java
index d43ce1e..6b4bda9 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/ViewStatusMessagesServlet.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/ViewStatusMessagesServlet.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/boolex/JaninoEventEvaluator.java b/logback-access/src/main/java/ch/qos/logback/access/boolex/JaninoEventEvaluator.java
index 7ac0a75..cf02751 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/boolex/JaninoEventEvaluator.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/boolex/JaninoEventEvaluator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/db/DBAppender.java b/logback-access/src/main/java/ch/qos/logback/access/db/DBAppender.java
index 2383566..8b4c964 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/db/DBAppender.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/db/DBAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -41,7 +41,7 @@ public class DBAppender extends DBAppenderBase<IAccessEvent> {
   private boolean insertHeaders = false;
   
   static {
-    StringBuilder sql = new StringBuilder();
+    StringBuffer sql = new StringBuffer();
     sql.append("INSERT INTO access_event (");
     sql.append("timestmp, ");
     sql.append("requestURI, ");
@@ -104,7 +104,7 @@ public class DBAppender extends DBAppenderBase<IAccessEvent> {
     Enumeration names = event.getRequestHeaderNames();
     if (names.hasMoreElements()) {
       PreparedStatement insertHeaderStatement = connection
-        .prepareStatement(insertHeaderSQL);
+          .prepareStatement(insertHeaderSQL);
 
       
       while (names.hasMoreElements()) {
diff --git a/logback-access/src/main/java/ch/qos/logback/access/db/script/mysql.sql b/logback-access/src/main/java/ch/qos/logback/access/db/script/mysql.sql
index 3fc21ad..3f62b08 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/db/script/mysql.sql
+++ b/logback-access/src/main/java/ch/qos/logback/access/db/script/mysql.sql
@@ -6,7 +6,7 @@
 
 # This SQL script creates the required tables by ch.qos.logback.access.db.DBAppender.
 #
-# It is intended for MySQL databases. It has been tested on MySQL 5.5.31 with 
+# It is intended for MySQL databases. It has been tested on MySQL 5.0.22 with 
 # INNODB tables.
 
 
@@ -16,7 +16,7 @@ DROP TABLE IF EXISTS access_event;
 COMMIT;
 
 BEGIN;
-CREATE TABLE access_event 
+CREATE TABLE ACCESS_EVENT 
   (
     timestmp          BIGINT NOT NULL,
     requestURI        VARCHAR(254),
diff --git a/logback-access/src/main/java/ch/qos/logback/access/filter/CountingFilter.java b/logback-access/src/main/java/ch/qos/logback/access/filter/CountingFilter.java
index 6ae1a46..bde0dc8 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/filter/CountingFilter.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/filter/CountingFilter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/filter/PeriodicStats.java b/logback-access/src/main/java/ch/qos/logback/access/filter/PeriodicStats.java
index 6b7e6e1..56fa1ae 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/filter/PeriodicStats.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/filter/PeriodicStats.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/filter/StatisticalView.java b/logback-access/src/main/java/ch/qos/logback/access/filter/StatisticalView.java
index efe21d0..c2fc609 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/filter/StatisticalView.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/filter/StatisticalView.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/filter/StatisticalViewImpl.java b/logback-access/src/main/java/ch/qos/logback/access/filter/StatisticalViewImpl.java
index 4217a12..ddd6bc9 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/filter/StatisticalViewImpl.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/filter/StatisticalViewImpl.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/filter/StatsByDay.java b/logback-access/src/main/java/ch/qos/logback/access/filter/StatsByDay.java
index 65a4ab0..ccd3d56 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/filter/StatsByDay.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/filter/StatsByDay.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/filter/StatsByHour.java b/logback-access/src/main/java/ch/qos/logback/access/filter/StatsByHour.java
index f38af02..22e9e48 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/filter/StatsByHour.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/filter/StatsByHour.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/filter/StatsByMinute.java b/logback-access/src/main/java/ch/qos/logback/access/filter/StatsByMinute.java
index c7d0d61..9c61d04 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/filter/StatsByMinute.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/filter/StatsByMinute.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/filter/StatsByMonth.java b/logback-access/src/main/java/ch/qos/logback/access/filter/StatsByMonth.java
index 009e9c3..c0fd61b 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/filter/StatsByMonth.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/filter/StatsByMonth.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/filter/StatsByWeek.java b/logback-access/src/main/java/ch/qos/logback/access/filter/StatsByWeek.java
index 2ecf8cb..ab434c4 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/filter/StatsByWeek.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/filter/StatsByWeek.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/html/DefaultCssBuilder.java b/logback-access/src/main/java/ch/qos/logback/access/html/DefaultCssBuilder.java
index 5dc00af..d16e2e8 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/html/DefaultCssBuilder.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/html/DefaultCssBuilder.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/html/HTMLLayout.java b/logback-access/src/main/java/ch/qos/logback/access/html/HTMLLayout.java
index 057dbd2..d499435 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/html/HTMLLayout.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/html/HTMLLayout.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/html/UrlCssBuilder.java b/logback-access/src/main/java/ch/qos/logback/access/html/UrlCssBuilder.java
index 05aa000..2e8c6b8 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/html/UrlCssBuilder.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/html/UrlCssBuilder.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/jetty/JettyServerAdapter.java b/logback-access/src/main/java/ch/qos/logback/access/jetty/JettyServerAdapter.java
index 6889706..4bb55d1 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/jetty/JettyServerAdapter.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/jetty/JettyServerAdapter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,18 +13,19 @@
  */
 package ch.qos.logback.access.jetty;
 
-import ch.qos.logback.access.spi.ServerAdapter;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
+
 import org.eclipse.jetty.http.HttpFields;
 import org.eclipse.jetty.server.Request;
 import org.eclipse.jetty.server.Response;
 
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Map;
+import ch.qos.logback.access.spi.ServerAdapter;
 
 /**
  * A jetty specific implementation of the {@link ServerAdapter} interface.
- *
+ * 
  * @author Sébastien Pennec
  * @author Ceki Gulcu
  */
@@ -32,7 +33,7 @@ public class JettyServerAdapter implements ServerAdapter {
 
   Request request;
   Response response;
-
+  
   public JettyServerAdapter(Request jettyRequest, Response jettyResponse) {
     this.request = jettyRequest;
     this.response = jettyResponse;
@@ -46,10 +47,6 @@ public class JettyServerAdapter implements ServerAdapter {
     return response.getStatus();
   }
 
-  public long getRequestTimestamp() {
-    return request.getTimeStamp();
-  }
-
   public Map<String, String> buildResponseHeaderMap() {
     Map<String, String> responseHeaderMap = new HashMap<String, String>();
     HttpFields httpFields = response.getHttpFields();
@@ -61,5 +58,5 @@ public class JettyServerAdapter implements ServerAdapter {
     }
     return responseHeaderMap;
   }
-
+  
 }
diff --git a/logback-access/src/main/java/ch/qos/logback/access/jetty/RequestLogImpl.java b/logback-access/src/main/java/ch/qos/logback/access/jetty/RequestLogImpl.java
index 656f8f1..c700cb6 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/jetty/RequestLogImpl.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/jetty/RequestLogImpl.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/jetty/RequestLogRegistry.java b/logback-access/src/main/java/ch/qos/logback/access/jetty/RequestLogRegistry.java
index 9491abd..76cf729 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/jetty/RequestLogRegistry.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/jetty/RequestLogRegistry.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/joran/JoranConfigurator.java b/logback-access/src/main/java/ch/qos/logback/access/joran/JoranConfigurator.java
index 1538797..7812680 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/joran/JoranConfigurator.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/joran/JoranConfigurator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -31,9 +31,8 @@ import ch.qos.logback.core.joran.conditional.ElseAction;
 import ch.qos.logback.core.joran.conditional.IfAction;
 import ch.qos.logback.core.joran.conditional.ThenAction;
 import ch.qos.logback.core.joran.spi.DefaultNestedComponentRegistry;
-import ch.qos.logback.core.joran.spi.ElementSelector;
+import ch.qos.logback.core.joran.spi.Pattern;
 import ch.qos.logback.core.joran.spi.RuleStore;
-import ch.qos.logback.core.net.ssl.SSLNestedComponentRegistryRules;
 
 
 
@@ -48,22 +47,22 @@ public class JoranConfigurator extends JoranConfiguratorBase {
   public void addInstanceRules(RuleStore rs) {
     super.addInstanceRules(rs);
     
-    rs.addRule(new ElementSelector("configuration"), new ConfigurationAction());
-    rs.addRule(new ElementSelector("configuration/appender-ref"), new AppenderRefAction());
+    rs.addRule(new Pattern("configuration"), new ConfigurationAction());
+    rs.addRule(new Pattern("configuration/appender-ref"), new AppenderRefAction());
     
-    rs.addRule(new ElementSelector("configuration/appender/sift"), new SiftAction());
-    rs.addRule(new ElementSelector("configuration/appender/sift/*"), new NOPAction());
+    rs.addRule(new Pattern("configuration/appender/sift"), new SiftAction());
+    rs.addRule(new Pattern("configuration/appender/sift/*"), new NOPAction());
     
-    rs.addRule(new ElementSelector("configuration/evaluator"), new EvaluatorAction());
+    rs.addRule(new Pattern("configuration/evaluator"), new EvaluatorAction());
 
     // add if-then-else support
-    rs.addRule(new ElementSelector("*/if"), new IfAction());
-    rs.addRule(new ElementSelector("*/if/then"), new ThenAction());
-    rs.addRule(new ElementSelector("*/if/then/*"), new NOPAction());
-    rs.addRule(new ElementSelector("*/if/else"), new ElseAction());
-    rs.addRule(new ElementSelector("*/if/else/*"), new NOPAction());
+    rs.addRule(new Pattern("*/if"), new IfAction());
+    rs.addRule(new Pattern("*/if/then"), new ThenAction());
+    rs.addRule(new Pattern("*/if/then/*"), new NOPAction());
+    rs.addRule(new Pattern("*/if/else"), new ElseAction());
+    rs.addRule(new Pattern("*/if/else/*"), new NOPAction());
 
-    rs.addRule(new ElementSelector("configuration/include"), new IncludeAction());
+    rs.addRule(new Pattern("configuration/include"), new IncludeAction());
   }
 
   @Override
@@ -75,7 +74,6 @@ public class JoranConfigurator extends JoranConfiguratorBase {
 
     registry.add(AppenderBase.class, "encoder", PatternLayoutEncoder.class);
     registry.add(UnsynchronizedAppenderBase.class, "encoder", PatternLayoutEncoder.class);
-    SSLNestedComponentRegistryRules.addDefaultNestedComponentRegistryRules(registry);
   }
 
 }
diff --git a/logback-access/src/main/java/ch/qos/logback/access/joran/action/ConfigurationAction.java b/logback-access/src/main/java/ch/qos/logback/access/joran/action/ConfigurationAction.java
index f9383a2..223c7de 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/joran/action/ConfigurationAction.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/joran/action/ConfigurationAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/joran/action/EvaluatorAction.java b/logback-access/src/main/java/ch/qos/logback/access/joran/action/EvaluatorAction.java
index 471e4c5..b4e4beb 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/joran/action/EvaluatorAction.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/joran/action/EvaluatorAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/net/AccessEventPreSerializationTransformer.java b/logback-access/src/main/java/ch/qos/logback/access/net/AccessEventPreSerializationTransformer.java
index 066bfe3..6bd0bc4 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/net/AccessEventPreSerializationTransformer.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/net/AccessEventPreSerializationTransformer.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/net/SMTPAppender.java b/logback-access/src/main/java/ch/qos/logback/access/net/SMTPAppender.java
index 11e2c9e..98ff420 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/net/SMTPAppender.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/net/SMTPAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -86,7 +86,7 @@ public class SMTPAppender extends SMTPAppenderBase<IAccessEvent> {
     return pl;
   }
 
-  protected boolean eventMarksEndOfLife(IAccessEvent eventObject) {
+  protected boolean isEventMarkedForBufferRemoval(IAccessEvent eventObject) {
     return false;
   }
 
diff --git a/logback-access/src/main/java/ch/qos/logback/access/net/SSLSocketAppender.java b/logback-access/src/main/java/ch/qos/logback/access/net/SSLSocketAppender.java
deleted file mode 100644
index 0595dca..0000000
--- a/logback-access/src/main/java/ch/qos/logback/access/net/SSLSocketAppender.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.access.net;
-
-import java.net.InetAddress;
-
-import ch.qos.logback.access.spi.IAccessEvent;
-import ch.qos.logback.core.net.AbstractSSLSocketAppender;
-import ch.qos.logback.core.spi.PreSerializationTransformer;
-
-/**
- * A {@link SocketAppender} that supports SSL.
- * <p>
- * For more information on this appender, please refer to the online manual
- * at http://logback.qos.ch/manual/appenders.html#SSLSocketAppender
- * 
- * @author Carl Harris
- */
-public class SSLSocketAppender extends AbstractSSLSocketAppender<IAccessEvent> {
-
-  private final PreSerializationTransformer<IAccessEvent> pst = 
-      new AccessEventPreSerializationTransformer();
-
-  public SSLSocketAppender() {
-  }
-
-  @Override
-  protected void postProcessEvent(IAccessEvent event) {
-    event.prepareForDeferredProcessing();
-  }
-
-  public PreSerializationTransformer<IAccessEvent> getPST() {
-    return pst;
-  }
-   
-}
diff --git a/logback-access/src/main/java/ch/qos/logback/access/net/SimpleSocketServer.java b/logback-access/src/main/java/ch/qos/logback/access/net/SimpleSocketServer.java
index d485778..3138cbf 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/net/SimpleSocketServer.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/net/SimpleSocketServer.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/net/SocketAppender.java b/logback-access/src/main/java/ch/qos/logback/access/net/SocketAppender.java
index 6376eb0..8da9688 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/net/SocketAppender.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/net/SocketAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -17,7 +17,7 @@ package ch.qos.logback.access.net;
 import java.net.InetAddress;
 
 import ch.qos.logback.access.spi.IAccessEvent;
-import ch.qos.logback.core.net.AbstractSocketAppender;
+import ch.qos.logback.core.net.SocketAppenderBase;
 import ch.qos.logback.core.spi.PreSerializationTransformer;
 
 /**
@@ -32,13 +32,31 @@ import ch.qos.logback.core.spi.PreSerializationTransformer;
  * 
  */
 
-public class SocketAppender extends AbstractSocketAppender<IAccessEvent> {
+public class SocketAppender extends SocketAppenderBase<IAccessEvent> {
   
   PreSerializationTransformer<IAccessEvent> pst = new AccessEventPreSerializationTransformer();
   
   public SocketAppender() {
   }
 
+  /**
+   * Connects to remote server at <code>address</code> and <code>port</code>.
+   */
+  public SocketAppender(InetAddress address, int port) {
+    this.address = address;
+    this.remoteHost = address.getHostName();
+    this.port = port;
+  }
+
+  /**
+   * Connects to remote server at <code>host</code> and <code>port</code>.
+   */
+  public SocketAppender(String host, int port) {
+    this.port = port;
+    this.address = getAddressByName(host);
+    this.remoteHost = host;
+  }
+  
   @Override
   protected void postProcessEvent(IAccessEvent event) {
     event.prepareForDeferredProcessing();
diff --git a/logback-access/src/main/java/ch/qos/logback/access/net/SocketNode.java b/logback-access/src/main/java/ch/qos/logback/access/net/SocketNode.java
index 32c6654..d4c1265 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/net/SocketNode.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/net/SocketNode.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/net/URLEvaluator.java b/logback-access/src/main/java/ch/qos/logback/access/net/URLEvaluator.java
index ddc5b7b..1dc9eb4 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/net/URLEvaluator.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/net/URLEvaluator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/net/server/SSLServerSocketAppender.java b/logback-access/src/main/java/ch/qos/logback/access/net/server/SSLServerSocketAppender.java
deleted file mode 100644
index 70bbbfd..0000000
--- a/logback-access/src/main/java/ch/qos/logback/access/net/server/SSLServerSocketAppender.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.access.net.server;
-
-import ch.qos.logback.access.net.AccessEventPreSerializationTransformer;
-import ch.qos.logback.access.spi.IAccessEvent;
-import ch.qos.logback.core.net.server.SSLServerSocketAppenderBase;
-import ch.qos.logback.core.spi.PreSerializationTransformer;
-
-/**
- * An appender that listens on a TCP port for connections from remote
- * loggers.  Each event delivered to this appender is delivered to all
- * connected remote loggers. 
- *
- * @author Carl Harris
- */
-public class SSLServerSocketAppender
-    extends SSLServerSocketAppenderBase<IAccessEvent> {
-
-  private static final PreSerializationTransformer<IAccessEvent> pst =
-      new AccessEventPreSerializationTransformer();
-
-  @Override
-  protected void postProcessEvent(IAccessEvent event) {
-    event.prepareForDeferredProcessing();
-  }
-
-  @Override
-  protected PreSerializationTransformer<IAccessEvent> getPST() {
-    return pst;
-  }
-
-}
diff --git a/logback-access/src/main/java/ch/qos/logback/access/net/server/ServerSocketAppender.java b/logback-access/src/main/java/ch/qos/logback/access/net/server/ServerSocketAppender.java
deleted file mode 100644
index c003001..0000000
--- a/logback-access/src/main/java/ch/qos/logback/access/net/server/ServerSocketAppender.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.access.net.server;
-
-import ch.qos.logback.access.net.AccessEventPreSerializationTransformer;
-import ch.qos.logback.access.spi.IAccessEvent;
-import ch.qos.logback.core.net.server.AbstractServerSocketAppender;
-import ch.qos.logback.core.spi.PreSerializationTransformer;
-
-/**
- * An appender that listens on a TCP port for connections from remote
- * loggers.  Each event delivered to this appender is delivered to all
- * connected remote loggers. 
- *
- * @author Carl Harris
- */
-public class ServerSocketAppender
-    extends AbstractServerSocketAppender<IAccessEvent> {
-
-  private static final PreSerializationTransformer<IAccessEvent> pst =
-      new AccessEventPreSerializationTransformer();
-
-  @Override
-  protected void postProcessEvent(IAccessEvent event) {
-    event.prepareForDeferredProcessing();
-  }
-
-  @Override
-  protected PreSerializationTransformer<IAccessEvent> getPST() {
-    return pst;
-  }
-
-}
diff --git a/logback-access/src/main/java/ch/qos/logback/access/net/server/package.html b/logback-access/src/main/java/ch/qos/logback/access/net/server/package.html
deleted file mode 100644
index 1d4fd82..0000000
--- a/logback-access/src/main/java/ch/qos/logback/access/net/server/package.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html> 
-  <head>
-    <title></title>
-  </head>
-  <body>    
-    <p>Provides a robust appender that serves logging events to remote clients</p>
-    <p>The <a href="ServerSocketAppender.html"><code>ServerSocketAppender</code></a>
-       listens on a configurable TCP port for connections from remote
-       loggers.  Events that are delivered to the appender are serialized
-       and sent to each connected remote logger.
-    </p>
-  </body> 
-</html>
diff --git a/logback-access/src/main/java/ch/qos/logback/access/pattern/AccessConverter.java b/logback-access/src/main/java/ch/qos/logback/access/pattern/AccessConverter.java
index d12f4b7..ae20806 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/pattern/AccessConverter.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/pattern/AccessConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/pattern/ContentLengthConverter.java b/logback-access/src/main/java/ch/qos/logback/access/pattern/ContentLengthConverter.java
index d8c2e80..12a5b5a 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/pattern/ContentLengthConverter.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/pattern/ContentLengthConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/pattern/DateConverter.java b/logback-access/src/main/java/ch/qos/logback/access/pattern/DateConverter.java
index eacb63d..efd2d89 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/pattern/DateConverter.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/pattern/DateConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -41,8 +41,9 @@ public class DateConverter extends AccessConverter {
       cachingDateFormatter = new CachingDateFormatter(datePattern);
       //maximumCacheValidity = CachedDateFormat.getMaximumCacheValidity(pattern);
     } catch (IllegalArgumentException e) {
-      addWarn("Could not instantiate SimpleDateFormat with pattern " + datePattern, e);
-      addWarn("Defaulting to  " + CoreConstants.CLF_DATE_PATTERN);
+      addWarn(
+        "Could not instantiate SimpleDateFormat with pattern " + datePattern, e);
+      // default to the ISO8601 format
       cachingDateFormatter = new CachingDateFormatter(CoreConstants.CLF_DATE_PATTERN);
     }
     
diff --git a/logback-access/src/main/java/ch/qos/logback/access/pattern/ElapsedTimeConverter.java b/logback-access/src/main/java/ch/qos/logback/access/pattern/ElapsedTimeConverter.java
deleted file mode 100644
index 54a7569..0000000
--- a/logback-access/src/main/java/ch/qos/logback/access/pattern/ElapsedTimeConverter.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.access.pattern;
-
-import ch.qos.logback.access.spi.IAccessEvent;
-
-public class ElapsedTimeConverter extends AccessConverter {
-
-  public String convert(IAccessEvent accessEvent) {
-    return Long.toString(accessEvent.getElapsedTime());
-  }
-
-}
diff --git a/logback-access/src/main/java/ch/qos/logback/access/pattern/EnsureLineSeparation.java b/logback-access/src/main/java/ch/qos/logback/access/pattern/EnsureLineSeparation.java
index 25c9ad2..5f87eb0 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/pattern/EnsureLineSeparation.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/pattern/EnsureLineSeparation.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -25,14 +25,14 @@ public class EnsureLineSeparation implements PostCompileProcessor<IAccessEvent>
    * line.
    */
   public void process(Converter<IAccessEvent> head) {
-    if(head == null)
-      throw new IllegalArgumentException("Empty converter chain");
-
-    // if head != null, then tail != null as well
     Converter<IAccessEvent> tail = ConverterUtil.findTail(head);
     Converter<IAccessEvent> newLineConverter = new LineSeparatorConverter();
-    if (!(tail instanceof LineSeparatorConverter)) {
+    if (tail == null) {
+      head = newLineConverter;
+    } else {
+      if (!(tail instanceof LineSeparatorConverter)) {
         tail.setNext(newLineConverter);
+      }
     }
   }
 }
diff --git a/logback-access/src/main/java/ch/qos/logback/access/pattern/FullRequestConverter.java b/logback-access/src/main/java/ch/qos/logback/access/pattern/FullRequestConverter.java
index 10c443f..75845de 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/pattern/FullRequestConverter.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/pattern/FullRequestConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -31,7 +31,7 @@ public class FullRequestConverter extends AccessConverter {
 
   @Override
   public String convert(IAccessEvent ae) {
-    StringBuilder buf = new StringBuilder();
+    StringBuffer buf = new StringBuffer();
     buf.append(ae.getRequestURL());
     buf.append(CoreConstants.LINE_SEPARATOR);
     
diff --git a/logback-access/src/main/java/ch/qos/logback/access/pattern/FullResponseConverter.java b/logback-access/src/main/java/ch/qos/logback/access/pattern/FullResponseConverter.java
index c5c7dc2..38daf06 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/pattern/FullResponseConverter.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/pattern/FullResponseConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -22,7 +22,7 @@ public class FullResponseConverter extends AccessConverter {
 
   @Override
   public String convert(IAccessEvent ae) {
-    StringBuilder buf = new StringBuilder();
+    StringBuffer buf = new StringBuffer();
     
     buf.append("HTTP/1.1 ");
     int statusCode = ae.getStatusCode();
diff --git a/logback-access/src/main/java/ch/qos/logback/access/pattern/LineSeparatorConverter.java b/logback-access/src/main/java/ch/qos/logback/access/pattern/LineSeparatorConverter.java
index 63974dd..057c637 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/pattern/LineSeparatorConverter.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/pattern/LineSeparatorConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/pattern/LocalIPAddressConverter.java b/logback-access/src/main/java/ch/qos/logback/access/pattern/LocalIPAddressConverter.java
index ba26284..abe6278 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/pattern/LocalIPAddressConverter.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/pattern/LocalIPAddressConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/pattern/LocalPortConverter.java b/logback-access/src/main/java/ch/qos/logback/access/pattern/LocalPortConverter.java
index cc0b516..8238fc3 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/pattern/LocalPortConverter.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/pattern/LocalPortConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/pattern/NAConverter.java b/logback-access/src/main/java/ch/qos/logback/access/pattern/NAConverter.java
index 1d6923c..1fab28e 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/pattern/NAConverter.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/pattern/NAConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/pattern/RemoteHostConverter.java b/logback-access/src/main/java/ch/qos/logback/access/pattern/RemoteHostConverter.java
index 381dbcc..fe61787 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/pattern/RemoteHostConverter.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/pattern/RemoteHostConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/pattern/RemoteIPAddressConverter.java b/logback-access/src/main/java/ch/qos/logback/access/pattern/RemoteIPAddressConverter.java
index eb25007..f2b3eaf 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/pattern/RemoteIPAddressConverter.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/pattern/RemoteIPAddressConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/pattern/RemoteUserConverter.java b/logback-access/src/main/java/ch/qos/logback/access/pattern/RemoteUserConverter.java
index 28f5013..070836c 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/pattern/RemoteUserConverter.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/pattern/RemoteUserConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestAttributeConverter.java b/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestAttributeConverter.java
index 1624883..7f01a5e 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestAttributeConverter.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestAttributeConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestContentConverter.java b/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestContentConverter.java
index 258eb64..d7412f5 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestContentConverter.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestContentConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestCookieConverter.java b/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestCookieConverter.java
index 0cb855e..af4c918 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestCookieConverter.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestCookieConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestHeaderConverter.java b/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestHeaderConverter.java
index 840e319..7d7f9ab 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestHeaderConverter.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestHeaderConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestMethodConverter.java b/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestMethodConverter.java
index de8f163..f1df611 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestMethodConverter.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestMethodConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestParameterConverter.java b/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestParameterConverter.java
index 9cc8458..cbb6820 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestParameterConverter.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestParameterConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestProtocolConverter.java b/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestProtocolConverter.java
index 12ddb52..32c66a5 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestProtocolConverter.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestProtocolConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestURIConverter.java b/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestURIConverter.java
index dc67cb2..902f1a9 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestURIConverter.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestURIConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestURLConverter.java b/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestURLConverter.java
index da60908..1faf5a9 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestURLConverter.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/pattern/RequestURLConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/pattern/ResponseContentConverter.java b/logback-access/src/main/java/ch/qos/logback/access/pattern/ResponseContentConverter.java
index 55ee5c8..b156e74 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/pattern/ResponseContentConverter.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/pattern/ResponseContentConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/pattern/ResponseHeaderConverter.java b/logback-access/src/main/java/ch/qos/logback/access/pattern/ResponseHeaderConverter.java
index d018063..276103c 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/pattern/ResponseHeaderConverter.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/pattern/ResponseHeaderConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/pattern/ServerNameConverter.java b/logback-access/src/main/java/ch/qos/logback/access/pattern/ServerNameConverter.java
index 1c27c23..e62db88 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/pattern/ServerNameConverter.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/pattern/ServerNameConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/pattern/StatusCodeConverter.java b/logback-access/src/main/java/ch/qos/logback/access/pattern/StatusCodeConverter.java
index 1f65264..24ff7ac 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/pattern/StatusCodeConverter.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/pattern/StatusCodeConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/servlet/TeeFilter.java b/logback-access/src/main/java/ch/qos/logback/access/servlet/TeeFilter.java
index 24e3af9..b05e35a 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/servlet/TeeFilter.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/servlet/TeeFilter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/servlet/TeeHttpServletRequest.java b/logback-access/src/main/java/ch/qos/logback/access/servlet/TeeHttpServletRequest.java
index 3d734a9..93727f2 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/servlet/TeeHttpServletRequest.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/servlet/TeeHttpServletRequest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/servlet/TeeHttpServletResponse.java b/logback-access/src/main/java/ch/qos/logback/access/servlet/TeeHttpServletResponse.java
index 8c62c5e..2bbd730 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/servlet/TeeHttpServletResponse.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/servlet/TeeHttpServletResponse.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/servlet/TeeServletInputStream.java b/logback-access/src/main/java/ch/qos/logback/access/servlet/TeeServletInputStream.java
index 60efd95..c7e6185 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/servlet/TeeServletInputStream.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/servlet/TeeServletInputStream.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/servlet/TeeServletOutputStream.java b/logback-access/src/main/java/ch/qos/logback/access/servlet/TeeServletOutputStream.java
index 5e782b1..01d46c3 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/servlet/TeeServletOutputStream.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/servlet/TeeServletOutputStream.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/servlet/Util.java b/logback-access/src/main/java/ch/qos/logback/access/servlet/Util.java
index cb840c5..91471ca 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/servlet/Util.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/servlet/Util.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,29 +13,26 @@
  */
 package ch.qos.logback.access.servlet;
 
-import ch.qos.logback.access.AccessConstants;
-
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import ch.qos.logback.access.AccessConstants;
+
 public class Util {
 
   public static boolean isFormUrlEncoded(HttpServletRequest request) {
-
-    String contentTypeStr = request.getContentType();
     if ("POST".equalsIgnoreCase(request.getMethod())
-            && contentTypeStr != null
-            && contentTypeStr.startsWith(AccessConstants.X_WWW_FORM_URLECODED)) {
+        && AccessConstants.X_WWW_FORM_URLECODED.equals(request.getContentType())) {
       return true;
     } else {
       return false;
     }
   }
-
+  
   public static boolean isImageResponse(HttpServletResponse response) {
-
+    
     String responseType = response.getContentType();
-
+    
     if (responseType != null && responseType.startsWith(AccessConstants.IMAGE_CONTENT_TYPE)) {
       return true;
     } else {
diff --git a/logback-access/src/main/java/ch/qos/logback/access/sift/AccessEventDiscriminator.java b/logback-access/src/main/java/ch/qos/logback/access/sift/AccessEventDiscriminator.java
index 2b50f52..525887c 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/sift/AccessEventDiscriminator.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/sift/AccessEventDiscriminator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -17,7 +17,8 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
 
 import ch.qos.logback.access.spi.IAccessEvent;
-import ch.qos.logback.core.sift.AbstractDiscriminator;
+import ch.qos.logback.core.sift.Discriminator;
+import ch.qos.logback.core.spi.ContextAwareBase;
 
 /**
  * 
@@ -29,7 +30,10 @@ import ch.qos.logback.core.sift.AbstractDiscriminator;
  * @author Ceki Gülcü
  * 
  */
-public class AccessEventDiscriminator extends AbstractDiscriminator<IAccessEvent> {
+public class AccessEventDiscriminator extends ContextAwareBase implements
+    Discriminator<IAccessEvent> {
+
+  boolean started = false;
 
   /**
    * At present time the followed fields can be designated: COOKIE,
@@ -116,7 +120,10 @@ public class AccessEventDiscriminator extends AbstractDiscriminator<IAccessEvent
     return null;
   }
 
-  @Override
+  public boolean isStarted() {
+    return started;
+  }
+
   public void start() {
 
     int errorCount = 0;
@@ -145,6 +152,10 @@ public class AccessEventDiscriminator extends AbstractDiscriminator<IAccessEvent
     }
   }
 
+  public void stop() {
+    started = false;
+  }
+
   public void setFieldName(FieldName fieldName) {
     this.fieldName = fieldName;
   }
diff --git a/logback-access/src/main/java/ch/qos/logback/access/sift/AppenderFactoryUsingJoran.java b/logback-access/src/main/java/ch/qos/logback/access/sift/AppenderFactory.java
similarity index 59%
rename from logback-access/src/main/java/ch/qos/logback/access/sift/AppenderFactoryUsingJoran.java
rename to logback-access/src/main/java/ch/qos/logback/access/sift/AppenderFactory.java
index 0bd2ad5..1e7e137 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/sift/AppenderFactoryUsingJoran.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/sift/AppenderFactory.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -14,22 +14,24 @@
 package ch.qos.logback.access.sift;
 
 import java.util.List;
-import java.util.Map;
 
 import ch.qos.logback.access.spi.IAccessEvent;
 import ch.qos.logback.core.joran.event.SaxEvent;
-import ch.qos.logback.core.sift.AbstractAppenderFactoryUsingJoran;
+import ch.qos.logback.core.sift.AppenderFactoryBase;
 import ch.qos.logback.core.sift.SiftingJoranConfiguratorBase;
 
-public class AppenderFactoryUsingJoran extends AbstractAppenderFactoryUsingJoran<IAccessEvent> {
+public class AppenderFactory extends AppenderFactoryBase<IAccessEvent> {
 
-  AppenderFactoryUsingJoran(List<SaxEvent> eventList, String key, Map<String, String> parentPropertyMap) {
-    super(eventList, key, parentPropertyMap);
+  String keyName;
+
+  AppenderFactory(List<SaxEvent> eventList, String keyName) {
+    super(eventList);
+    this.keyName = keyName;
   }
 
   public SiftingJoranConfiguratorBase<IAccessEvent> getSiftingJoranConfigurator(
       String keyValue) {
-    return new SiftingJoranConfigurator(key, keyValue, parentPropertyMap);
+    return new SiftingJoranConfigurator(keyName, keyValue);
   }
 
 }
diff --git a/logback-access/src/main/java/ch/qos/logback/access/sift/SiftAction.java b/logback-access/src/main/java/ch/qos/logback/access/sift/SiftAction.java
index 36f292c..c6b94d0 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/sift/SiftAction.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/sift/SiftAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -15,7 +15,6 @@ package ch.qos.logback.access.sift;
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
 
 import org.xml.sax.Attributes;
 
@@ -40,9 +39,8 @@ public class SiftAction  extends Action implements InPlayListener {
     ic.removeInPlayListener(this);
     Object o = ic.peekObject();
     if (o instanceof SiftingAppender) {
-      SiftingAppender siftingAppender = (SiftingAppender) o;
-      Map<String, String> propertyMap = ic.getCopyOfPropertyMap();
-      AppenderFactoryUsingJoran appenderFactory = new AppenderFactoryUsingJoran(seList, siftingAppender.getDiscriminatorKey(), propertyMap);
+      SiftingAppender siftingAppender = (SiftingAppender) o; 
+      AppenderFactory appenderFactory = new AppenderFactory(seList, siftingAppender.getDiscriminatorKey());
       siftingAppender.setAppenderFactory(appenderFactory);
     }
   }
diff --git a/logback-access/src/main/java/ch/qos/logback/access/sift/SiftingAppender.java b/logback-access/src/main/java/ch/qos/logback/access/sift/SiftingAppender.java
index f3f8998..5b2ec6e 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/sift/SiftingAppender.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/sift/SiftingAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -41,11 +41,6 @@ public class SiftingAppender extends SiftingAppenderBase<IAccessEvent> {
   }
 
   @Override
-  protected boolean eventMarksEndOfLife(IAccessEvent event) {
-    return false;
-  }
-
-  @Override
   @DefaultClass(AccessEventDiscriminator.class)
   public void setDiscriminator(Discriminator<IAccessEvent> discriminator) {
     super.setDiscriminator(discriminator);
diff --git a/logback-access/src/main/java/ch/qos/logback/access/sift/SiftingJoranConfigurator.java b/logback-access/src/main/java/ch/qos/logback/access/sift/SiftingJoranConfigurator.java
index 65ae986..f4f0806 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/sift/SiftingJoranConfigurator.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/sift/SiftingJoranConfigurator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -21,28 +21,29 @@ import ch.qos.logback.access.spi.IAccessEvent;
 import ch.qos.logback.core.Appender;
 import ch.qos.logback.core.joran.action.ActionConst;
 import ch.qos.logback.core.joran.action.AppenderAction;
-import ch.qos.logback.core.joran.spi.ElementPath;
-import ch.qos.logback.core.joran.spi.ElementSelector;
+import ch.qos.logback.core.joran.spi.Pattern;
 import ch.qos.logback.core.joran.spi.RuleStore;
 import ch.qos.logback.core.sift.SiftingJoranConfiguratorBase;
 
 public class SiftingJoranConfigurator extends
     SiftingJoranConfiguratorBase<IAccessEvent> {
 
+  String key;
+  String value;
 
-
-  SiftingJoranConfigurator(String key, String value, Map<String, String> parentPropertyMap) {
-    super(key, value, parentPropertyMap);
+  SiftingJoranConfigurator(String key, String value) {
+    this.key = key;
+    this.value = value;
   }
 
   @Override
-  protected ElementPath initialElementPath() {
-    return new ElementPath("configuration");
+  protected Pattern initialPattern() {
+    return new Pattern("configuration");
   }
 
   @Override
   protected void addInstanceRules(RuleStore rs) {
-    rs.addRule(new ElementSelector("configuration/appender"), new AppenderAction());
+    rs.addRule(new Pattern("configuration/appender"), new AppenderAction());
   }
 
   @Override
@@ -53,7 +54,6 @@ public class SiftingJoranConfigurator extends
     omap.put(ActionConst.APPENDER_BAG, new HashMap());
     omap.put(ActionConst.FILTER_CHAIN_BAG, new HashMap());
     Map<String, String> propertiesMap = new HashMap<String, String>();
-    propertiesMap.putAll(parentPropertyMap);
     propertiesMap.put(key, value);
     interpreter.setInterpretationContextPropertiesMap(propertiesMap);
   }
diff --git a/logback-access/src/main/java/ch/qos/logback/access/spi/AccessContext.java b/logback-access/src/main/java/ch/qos/logback/access/spi/AccessContext.java
index c22e258..3a39930 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/spi/AccessContext.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/spi/AccessContext.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/spi/AccessEvent.java b/logback-access/src/main/java/ch/qos/logback/access/spi/AccessEvent.java
index 53d7bfa..f9f0752 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/spi/AccessEvent.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/spi/AccessEvent.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,13 +13,6 @@
  */
 package ch.qos.logback.access.spi;
 
-import ch.qos.logback.access.AccessConstants;
-import ch.qos.logback.access.pattern.AccessConverter;
-import ch.qos.logback.access.servlet.Util;
-
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Enumeration;
@@ -29,6 +22,14 @@ import java.util.Map;
 import java.util.TreeMap;
 import java.util.Vector;
 
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import ch.qos.logback.access.AccessConstants;
+import ch.qos.logback.access.pattern.AccessConverter;
+import ch.qos.logback.access.servlet.Util;
+
 // Contributors:  Joern Huxhorn (see also bug #110)
 
 /**
@@ -36,15 +37,15 @@ import java.util.Vector;
  * logging component instance is called in the container to log then a
  * <code>AccessEvent</code> instance is created. This instance is passed
  * around to the different logback components.
- *
+ * 
  * @author Ceki Gülcü
  * @author Sébastien Pennec
  */
 public class AccessEvent implements Serializable, IAccessEvent {
 
-
+  
   private static final long serialVersionUID = 866718993618836343L;
-
+  
   private static final String EMPTY = "";
 
   private transient final HttpServletRequest httpRequest;
@@ -60,7 +61,6 @@ public class AccessEvent implements Serializable, IAccessEvent {
   String serverName;
   String requestContent;
   String responseContent;
-  long elapsedTime;
 
   Map<String, String> requestHeaderMap;
   Map<String, String[]> requestParameterMap;
@@ -79,18 +79,17 @@ public class AccessEvent implements Serializable, IAccessEvent {
   private long timeStamp = 0;
 
   public AccessEvent(HttpServletRequest httpRequest,
-                     HttpServletResponse httpResponse, ServerAdapter adapter) {
+      HttpServletResponse httpResponse, ServerAdapter adapter) {
     this.httpRequest = httpRequest;
     this.httpResponse = httpResponse;
     this.timeStamp = System.currentTimeMillis();
     this.serverAdapter = adapter;
-    this.elapsedTime = calculateElapsedTime();
   }
 
   /**
-   * Returns the underlying HttpServletRequest. After serialization the returned
-   * value will be null.
-   *
+   * Returns the underlying HttpServletRequest. After serialization the returned 
+   * value will be null. 
+   * 
    * @return
    */
   public HttpServletRequest getRequest() {
@@ -98,9 +97,9 @@ public class AccessEvent implements Serializable, IAccessEvent {
   }
 
   /**
-   * Returns the underlying HttpServletResponse. After serialization the returned
-   * value will be null.
-   *
+   * Returns the underlying HttpServletResponse. After serialization the returned 
+   * value will be null. 
+   * 
    * @return
    */
   public HttpServletResponse getResponse() {
@@ -137,7 +136,7 @@ public class AccessEvent implements Serializable, IAccessEvent {
   public String getRequestURL() {
     if (requestURL == null) {
       if (httpRequest != null) {
-        StringBuilder buf = new StringBuilder();
+        StringBuffer buf = new StringBuffer();
         buf.append(httpRequest.getMethod());
         buf.append(AccessConverter.SPACE_CHAR);
         buf.append(httpRequest.getRequestURI());
@@ -294,7 +293,7 @@ public class AccessEvent implements Serializable, IAccessEvent {
 
   /**
    * Attributes are not serialized
-   *
+   * 
    * @param key
    */
   public String getAttribute(String key) {
@@ -314,12 +313,12 @@ public class AccessEvent implements Serializable, IAccessEvent {
     if (httpRequest != null) {
       String[] value = httpRequest.getParameterValues(key);
       if (value == null) {
-        return new String[]{ NA };
+        return new String[] { NA };
       } else {
         return value;
       }
     } else {
-      return new String[]{ NA };
+      return new String[] { NA };
     }
   }
 
@@ -359,24 +358,13 @@ public class AccessEvent implements Serializable, IAccessEvent {
     return statusCode;
   }
 
-  public long getElapsedTime() {
-    return elapsedTime;
-  }
-
-  private long calculateElapsedTime() {
-    if (serverAdapter.getRequestTimestamp() < 0) {
-      return -1;
-    }
-    return getTimeStamp() - serverAdapter.getRequestTimestamp();
-  }
-
   public String getRequestContent() {
     if (requestContent != null) {
       return requestContent;
     }
 
     if (Util.isFormUrlEncoded(httpRequest)) {
-      StringBuilder buf = new StringBuilder();
+      StringBuffer buf = new StringBuffer();
 
       Enumeration pramEnumeration = httpRequest.getParameterNames();
 
@@ -405,7 +393,8 @@ public class AccessEvent implements Serializable, IAccessEvent {
       }
       requestContent = buf.toString();
     } else {
-      // retrieve the byte array placed by TeeFilter
+
+      // retreive the byte array placed by TeeFilter
       byte[] inputBuffer = (byte[]) httpRequest
           .getAttribute(AccessConstants.LB_INPUT_BUFFER);
 
@@ -494,7 +483,6 @@ public class AccessEvent implements Serializable, IAccessEvent {
     getRequestURL();
     getServerName();
     getTimeStamp();
-    getElapsedTime();
 
     getStatusCode();
     getContentLength();
diff --git a/logback-access/src/main/java/ch/qos/logback/access/spi/IAccessEvent.java b/logback-access/src/main/java/ch/qos/logback/access/spi/IAccessEvent.java
index c79e7ad..58b0c04 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/spi/IAccessEvent.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/spi/IAccessEvent.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,13 +13,13 @@
  */
 package ch.qos.logback.access.spi;
 
-import ch.qos.logback.core.spi.DeferredProcessingAware;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 import java.util.Enumeration;
 import java.util.List;
 import java.util.Map;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import ch.qos.logback.core.spi.DeferredProcessingAware;
 
 // Contributors:  Joern Huxhorn (see also bug #110)
 
@@ -60,11 +60,6 @@ public interface IAccessEvent extends DeferredProcessingAware {
    */
   long getTimeStamp();
 
-  /**
-   * The time elapsed between receiving the request and logging it.
-   */
-  long getElapsedTime();
-
   String getRequestURI();
 
   /**
diff --git a/logback-access/src/main/java/ch/qos/logback/access/spi/ServerAdapter.java b/logback-access/src/main/java/ch/qos/logback/access/spi/ServerAdapter.java
index 3fd900c..6625316 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/spi/ServerAdapter.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/spi/ServerAdapter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -24,7 +24,6 @@ import java.util.Map;
  */
 public interface ServerAdapter {
 
-  long getRequestTimestamp();
   long getContentLength();
   int getStatusCode();
   Map<String, String> buildResponseHeaderMap();
diff --git a/logback-access/src/main/java/ch/qos/logback/access/spi/Util.java b/logback-access/src/main/java/ch/qos/logback/access/spi/Util.java
index 0456cc4..6426fdd 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/spi/Util.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/spi/Util.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/main/java/ch/qos/logback/access/tomcat/LogbackValve.java b/logback-access/src/main/java/ch/qos/logback/access/tomcat/LogbackValve.java
index 4bfc1fd..1515481 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/tomcat/LogbackValve.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/tomcat/LogbackValve.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -19,11 +19,14 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.concurrent.ExecutorService;
+import java.util.concurrent.*;
 
 import javax.servlet.ServletContext;
 import javax.servlet.ServletException;
 
+import ch.qos.logback.access.spi.IAccessEvent;
+//import org.apache.catalina.Lifecycle;
+import ch.qos.logback.core.spi.*;
 import org.apache.catalina.Lifecycle;
 import org.apache.catalina.LifecycleException;
 import org.apache.catalina.LifecycleListener;
@@ -35,28 +38,17 @@ import org.apache.catalina.valves.ValveBase;
 import ch.qos.logback.access.AccessConstants;
 import ch.qos.logback.access.joran.JoranConfigurator;
 import ch.qos.logback.access.spi.AccessEvent;
-import ch.qos.logback.access.spi.IAccessEvent;
 import ch.qos.logback.core.Appender;
 import ch.qos.logback.core.BasicStatusManager;
 import ch.qos.logback.core.Context;
 import ch.qos.logback.core.CoreConstants;
-import ch.qos.logback.core.LifeCycleManager;
 import ch.qos.logback.core.filter.Filter;
 import ch.qos.logback.core.joran.spi.JoranException;
-import ch.qos.logback.core.spi.AppenderAttachable;
-import ch.qos.logback.core.spi.AppenderAttachableImpl;
-import ch.qos.logback.core.spi.FilterAttachable;
-import ch.qos.logback.core.spi.FilterAttachableImpl;
-import ch.qos.logback.core.spi.FilterReply;
-import ch.qos.logback.core.spi.LifeCycle;
-import ch.qos.logback.core.spi.LogbackLock;
 import ch.qos.logback.core.status.InfoStatus;
 import ch.qos.logback.core.status.StatusManager;
 import ch.qos.logback.core.status.WarnStatus;
-import ch.qos.logback.core.util.ExecutorServiceUtil;
 import ch.qos.logback.core.util.OptionHelper;
 import ch.qos.logback.core.util.StatusPrinter;
-//import org.apache.catalina.Lifecycle;
 
 /**
  * This class is an implementation of tomcat's Valve interface, by extending
@@ -76,8 +68,6 @@ public class LogbackValve extends ValveBase implements Lifecycle, Context,
   public final static String DEFAULT_CONFIG_FILE = "conf" + File.separatorChar
       + "logback-access.xml";
 
-  private final LifeCycleManager lifeCycleManager = new LifeCycleManager();
-  
   private long birthTime = System.currentTimeMillis();
   LogbackLock configurationLock = new LogbackLock();
 
@@ -97,7 +87,10 @@ public class LogbackValve extends ValveBase implements Lifecycle, Context,
   boolean started;
   boolean alreadySetLogbackStatusManager = false;
 
-  private ExecutorService executorService; 
+    // 0 idle threads, 2 maximum threads, no idle waiting
+  ExecutorService executorService = new ThreadPoolExecutor(0, 2,
+          0L, TimeUnit.MILLISECONDS,
+          new LinkedBlockingQueue<Runnable>());
 
   public LogbackValve() {
     putObject(CoreConstants.EVALUATOR_MAP, new HashMap());
@@ -108,23 +101,12 @@ public class LogbackValve extends ValveBase implements Lifecycle, Context,
   }
 
   public void startInternal() throws LifecycleException {
-    executorService = ExecutorServiceUtil.newExecutorService();
+    System.out.println("***startInternal() called");
     if (filename == null) {
-    	String tomcatBaseProperty = OptionHelper
-          .getSystemProperty("catalina.base");
-
-      filename = tomcatBaseProperty + File.separatorChar + DEFAULT_CONFIG_FILE;
-      
-    	File baseConfigFile = new File(filename);
-    	if (!baseConfigFile.exists()) {
-    	
-        String tomcatHomeProperty = OptionHelper
-            .getSystemProperty("catalina.home");
-
-        filename = tomcatHomeProperty + File.separatorChar
-            + DEFAULT_CONFIG_FILE;
-      }
-      
+      String tomcatHomeProperty = OptionHelper
+          .getSystemProperty("catalina.home");
+
+      filename = tomcatHomeProperty + File.separatorChar + DEFAULT_CONFIG_FILE;
       getStatusManager().add(
           new InfoStatus("filename property not set. Assuming [" + filename
               + "]", this));
@@ -133,6 +115,7 @@ public class LogbackValve extends ValveBase implements Lifecycle, Context,
 
     if (configFile.exists()) {
       try {
+        System.out.println("***startInternal() JoranConfigurator");
         JoranConfigurator jc = new JoranConfigurator();
         jc.setContext(this);
         jc.doConfigure(filename);
@@ -205,11 +188,6 @@ public class LogbackValve extends ValveBase implements Lifecycle, Context,
   protected void stopInternal() throws LifecycleException {
     started = false;
     setState(LifecycleState.STOPPING);
-    lifeCycleManager.reset();
-    if (executorService != null) {
-      ExecutorServiceUtil.shutdown(executorService);
-      executorService = null;
-    }
   }
 
   public void addAppender(Appender<IAccessEvent> newAppender) {
@@ -314,10 +292,6 @@ public class LogbackValve extends ValveBase implements Lifecycle, Context,
     return configurationLock;
   }
 
-  public void register(LifeCycle component) {
-    lifeCycleManager.register(component);
-  }
-
   // ====== Methods from catalina Lifecycle =====
 
   public void addLifecycleListener(LifecycleListener arg0) {
diff --git a/logback-access/src/main/java/ch/qos/logback/access/tomcat/TomcatServerAdapter.java b/logback-access/src/main/java/ch/qos/logback/access/tomcat/TomcatServerAdapter.java
index b5f300d..6c0ea6e 100644
--- a/logback-access/src/main/java/ch/qos/logback/access/tomcat/TomcatServerAdapter.java
+++ b/logback-access/src/main/java/ch/qos/logback/access/tomcat/TomcatServerAdapter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,23 +13,24 @@
  */
 package ch.qos.logback.access.tomcat;
 
-import ch.qos.logback.access.spi.ServerAdapter;
+import java.util.HashMap;
+import java.util.Map;
+
 import org.apache.catalina.connector.Request;
 import org.apache.catalina.connector.Response;
 
-import java.util.HashMap;
-import java.util.Map;
+import ch.qos.logback.access.spi.ServerAdapter;
 
 /**
  * A tomcat specific implementation of the {@link ServerAdapter} interface.
- *
+ * 
  * @author Sébastien Pennec
  */
 public class TomcatServerAdapter implements ServerAdapter {
 
   Request request;
   Response response;
-
+  
   public TomcatServerAdapter(Request tomcatRequest, Response tomcatResponse) {
     this.request = tomcatRequest;
     this.response = tomcatResponse;
@@ -43,10 +44,7 @@ public class TomcatServerAdapter implements ServerAdapter {
     return response.getStatus();
   }
 
-  public long getRequestTimestamp() {
-    return request.getCoyoteRequest().getStartTime();
-  }
-
+  
   public Map<String, String> buildResponseHeaderMap() {
     Map<String, String> responseHeaderMap = new HashMap<String, String>();
     for (String key : response.getHeaderNames()) {
diff --git a/logback-access/src/test/java/ch/qos/logback/access/AllAccessTest.java b/logback-access/src/test/java/ch/qos/logback/access/AllAccessTest.java
index e78cfe4..ac331ed 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/AllAccessTest.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/AllAccessTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -18,16 +18,15 @@ import org.junit.runners.Suite;
 import org.junit.runners.Suite.SuiteClasses;
 
 @RunWith(Suite.class)
- at SuiteClasses({ch.qos.logback.access.spi.PackageTest.class,
-        ch.qos.logback.access.boolex.PackageTest.class,
-        ch.qos.logback.access.net.PackageTest.class,
-        ch.qos.logback.access.db.PackageTest.class,
-        ch.qos.logback.access.pattern.PackageTest.class,
-        ch.qos.logback.access.joran.PackageTest.class,
-        ch.qos.logback.access.jetty.PackageTest.class,
-        ch.qos.logback.access.filter.PackageTest.class,
-        ch.qos.logback.access.servlet.PackageTest.class,
-        ch.qos.logback.access.sift.PackageTest.class})
+ at SuiteClasses( { ch.qos.logback.access.spi.PackageTest.class,
+    ch.qos.logback.access.boolex.PackageTest.class,
+    ch.qos.logback.access.net.PackageTest.class,
+    ch.qos.logback.access.pattern.PackageTest.class,
+    ch.qos.logback.access.joran.PackageTest.class,
+    ch.qos.logback.access.jetty.PackageTest.class,
+    ch.qos.logback.access.filter.PackageTest.class,
+    ch.qos.logback.access.servlet.PackageTest.class,
+    ch.qos.logback.access.sift.PackageTest.class })
 public class AllAccessTest {
 
 }
diff --git a/logback-access/src/test/java/ch/qos/logback/access/TeztConstants.java b/logback-access/src/test/java/ch/qos/logback/access/TeztConstants.java
index 880efa9..445bc3a 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/TeztConstants.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/TeztConstants.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/test/java/ch/qos/logback/access/boolex/JaninoEventEvaluatorTest.java b/logback-access/src/test/java/ch/qos/logback/access/boolex/JaninoEventEvaluatorTest.java
index f1c2127..99f2868 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/boolex/JaninoEventEvaluatorTest.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/boolex/JaninoEventEvaluatorTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/test/java/ch/qos/logback/access/boolex/PackageTest.java b/logback-access/src/test/java/ch/qos/logback/access/boolex/PackageTest.java
index 465ec57..009f210 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/boolex/PackageTest.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/boolex/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/test/java/ch/qos/logback/access/db/DBAppenderIntegrationTest.java b/logback-access/src/test/java/ch/qos/logback/access/db/DBAppenderIntegrationTest.java
index 61ab69e..8ad78c9 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/db/DBAppenderIntegrationTest.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/db/DBAppenderIntegrationTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -19,8 +19,6 @@ import java.util.Random;
 
 import ch.qos.logback.access.spi.IAccessEvent;
 import ch.qos.logback.core.status.StatusChecker;
-import ch.qos.logback.core.testUtil.EnvUtilForTests;
-import ch.qos.logback.core.util.EnvUtil;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Before;
@@ -34,11 +32,12 @@ import ch.qos.logback.access.spi.AccessContext;
 import ch.qos.logback.core.Appender;
 import ch.qos.logback.core.joran.spi.JoranException;
 import ch.qos.logback.core.status.Status;
+import ch.qos.logback.core.testUtil.Env;
 import ch.qos.logback.core.util.StatusPrinter;
 
 public class DBAppenderIntegrationTest {
 
-  static String LOCAL_HOST_NAME = EnvUtilForTests.getLocalHostName();
+  static String LOCAL_HOST_NAME = Env.getLocalHostName();
   static String[] CONFORMING_HOST_LIST = new String[] { "Orion" };
 
   int diff = new Random(System.nanoTime()).nextInt(10000);
@@ -82,10 +81,10 @@ public class DBAppenderIntegrationTest {
   }
   
   static boolean isConformingHostAndJDK16OrHigher() {
-    if(!EnvUtil.isJDK6OrHigher()) {
+    if(!Env.isJDK6OrHigher()) {
       return false;
     }
-    return EnvUtilForTests.isLocalHostNameInList(CONFORMING_HOST_LIST);
+    return Env.isLocalHostNameInList(CONFORMING_HOST_LIST);
   }
 
   @Test
diff --git a/logback-access/src/test/java/ch/qos/logback/access/db/DBAppenderHSQLTest.java b/logback-access/src/test/java/ch/qos/logback/access/db/DBAppenderTest.java
similarity index 76%
rename from logback-access/src/test/java/ch/qos/logback/access/db/DBAppenderHSQLTest.java
rename to logback-access/src/test/java/ch/qos/logback/access/db/DBAppenderTest.java
index 8d38892..5ebca9d 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/db/DBAppenderHSQLTest.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/db/DBAppenderTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -37,28 +37,25 @@ import ch.qos.logback.access.spi.AccessEvent;
 import ch.qos.logback.core.db.DriverManagerConnectionSource;
 import ch.qos.logback.core.util.StatusPrinter;
 
-public class DBAppenderHSQLTest {
-  static DBAppenderHSQLTestFixture DB_APPENDER_HSQL_TEST_FIXTURE;
-
+public class DBAppenderTest  {
 
   AccessContext context;
   DBAppender appender;
   DriverManagerConnectionSource connectionSource;
 
-  int existingEventTableRowCount;
-  Statement stmt;
-
+  static DBAppenderTestFixture DB_APPENDER_TEST_FIXTURE;
+  
   @BeforeClass
   static public void fixtureSetUp() throws SQLException {
-    DB_APPENDER_HSQL_TEST_FIXTURE = new DBAppenderHSQLTestFixture();
-    DB_APPENDER_HSQL_TEST_FIXTURE.setUp();
-  }
-
+    DB_APPENDER_TEST_FIXTURE = new DBAppenderTestFixture();
+    DB_APPENDER_TEST_FIXTURE.setUp();
+  } 
+  
   @AfterClass
-  static public void fixtureTearDown() throws SQLException {
-    DB_APPENDER_HSQL_TEST_FIXTURE.tearDown();
+  static public  void fixtureTearDown()  throws SQLException {
+    DB_APPENDER_TEST_FIXTURE.tearDown();
   }
-
+  
   @Before
   public void setUp() throws SQLException {
     context = new AccessContext();
@@ -68,15 +65,17 @@ public class DBAppenderHSQLTest {
     appender.setContext(context);
     connectionSource = new DriverManagerConnectionSource();
     connectionSource.setContext(context);
-    connectionSource.setDriverClass(DBAppenderHSQLTestFixture.DRIVER_CLASS);
-    connectionSource.setUrl(DB_APPENDER_HSQL_TEST_FIXTURE.url);
-    connectionSource.setUser(DB_APPENDER_HSQL_TEST_FIXTURE.user);
-    connectionSource.setPassword(DB_APPENDER_HSQL_TEST_FIXTURE.password);
+    connectionSource.setDriverClass(DBAppenderTestFixture.DRIVER_CLASS);
+    connectionSource.setUrl(DB_APPENDER_TEST_FIXTURE.url);
+    connectionSource.setUser(DB_APPENDER_TEST_FIXTURE.user);
+    connectionSource.setPassword(DB_APPENDER_TEST_FIXTURE.password);
     connectionSource.start();
     appender.setConnectionSource(connectionSource);
-
-    stmt = connectionSource.getConnection().createStatement();
-    existingEventTableRowCount = existingEventTableRowCount(stmt);
+  }
+  
+  private void setInsertHeadersAndStart(boolean insert) {
+    appender.setInsertHeaders(insert);
+    appender.start();
   }
 
   @After
@@ -84,35 +83,18 @@ public class DBAppenderHSQLTest {
     context = null;
     appender = null;
     connectionSource = null;
-    stmt.close();
-  }
-
-  int existingEventTableRowCount(Statement stmt) throws SQLException {
-    ResultSet rs = stmt.executeQuery("SELECT count(*) FROM access_event");
-    int result = -1;
-    if (rs.next()) {
-      result = rs.getInt(1);
-    }
-    rs.close();
-    return result;
-  }
-
-  private void setInsertHeadersAndStart(boolean insert) {
-    appender.setInsertHeaders(insert);
-    appender.start();
   }
 
-
   @Test
   public void testAppendAccessEvent() throws SQLException {
     setInsertHeadersAndStart(false);
 
     IAccessEvent event = createAccessEvent();
     appender.append(event);
-
+    
     Statement stmt = connectionSource.getConnection().createStatement();
     ResultSet rs = null;
-    rs = stmt.executeQuery("SELECT * FROM access_event where EVENT_ID = " + existingEventTableRowCount);
+    rs = stmt.executeQuery("SELECT * FROM access_event");
     if (rs.next()) {
       assertEquals(event.getTimeStamp(), rs.getLong(1));
       assertEquals(event.getRequestURI(), rs.getString(2));
@@ -127,36 +109,37 @@ public class DBAppenderHSQLTest {
     } else {
       fail("No row was inserted in the database");
     }
+
     rs.close();
     stmt.close();
   }
-
-
+  
+  
   @Test
   public void testCheckNoHeadersAreInserted() throws Exception {
     setInsertHeadersAndStart(false);
-
+    
     IAccessEvent event = createAccessEvent();
     appender.append(event);
     StatusPrinter.print(context.getStatusManager());
-
+    
     //Check that no headers were inserted
     Statement stmt = connectionSource.getConnection().createStatement();
     ResultSet rs = null;
-    rs = stmt.executeQuery("SELECT * FROM access_event_header where EVENT_ID = " + existingEventTableRowCount);
-
+    rs = stmt.executeQuery("SELECT * FROM access_event_header");
+    
     assertFalse(rs.next());
     rs.close();
     stmt.close();
   }
 
   @Test
-  public void testAppendHeaders() throws SQLException {
+  public void testAppendHeaders() throws SQLException {   
     setInsertHeadersAndStart(true);
-
+    
     IAccessEvent event = createAccessEvent();
     appender.append(event);
-
+    
     Statement stmt = connectionSource.getConnection().createStatement();
     ResultSet rs = null;
     rs = stmt.executeQuery("SELECT * FROM access_event_header");
@@ -195,10 +178,10 @@ public class DBAppenderHSQLTest {
     }
 
     StatusPrinter.print(context);
-
+    
     Statement stmt = connectionSource.getConnection().createStatement();
     ResultSet rs = null;
-    rs = stmt.executeQuery("SELECT * FROM access_event where requestURI='" + uri + "'");
+    rs = stmt.executeQuery("SELECT * FROM access_event where requestURI='"+uri+"'");
     int count = 0;
     while (rs.next()) {
       count++;
@@ -210,9 +193,9 @@ public class DBAppenderHSQLTest {
   }
 
   private IAccessEvent createAccessEvent() {
-    return createAccessEvent("");
+     return createAccessEvent(""); 
   }
-
+  
   private IAccessEvent createAccessEvent(String uri) {
     DummyRequest request = new DummyRequest();
     request.setRequestUri(uri);
diff --git a/logback-access/src/test/java/ch/qos/logback/access/db/DBAppenderHSQLTestFixture.java b/logback-access/src/test/java/ch/qos/logback/access/db/DBAppenderTestFixture.java
similarity index 90%
rename from logback-access/src/test/java/ch/qos/logback/access/db/DBAppenderHSQLTestFixture.java
rename to logback-access/src/test/java/ch/qos/logback/access/db/DBAppenderTestFixture.java
index 38bfb1a..fb0eedd 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/db/DBAppenderHSQLTestFixture.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/db/DBAppenderTestFixture.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -20,7 +20,7 @@ import java.sql.Statement;
 
 import org.hsqldb.Server;
 
-public class DBAppenderHSQLTestFixture {
+public class DBAppenderTestFixture  {
 
   public static final String DRIVER_CLASS = "org.hsqldb.jdbcDriver";
   String serverProps;
@@ -77,7 +77,7 @@ public class DBAppenderHSQLTestFixture {
 
   private void createTables() throws SQLException {
     Connection conn = newConnection();
-    StringBuilder buf = new StringBuilder();
+    StringBuffer buf = new StringBuffer();
     buf.append("CREATE TABLE access_event (");
     buf.append("timestmp BIGINT NOT NULL,");
     buf.append("requestURI VARCHAR(254),");
@@ -92,7 +92,7 @@ public class DBAppenderHSQLTestFixture {
     buf.append("event_id INT NOT NULL IDENTITY);");
     query(conn, buf.toString());
 
-    buf = new StringBuilder();
+    buf = new StringBuffer();
     buf.append("CREATE TABLE access_event_header (");
     buf.append("event_id INT NOT NULL,");
     buf.append("header_key  VARCHAR(254) NOT NULL,");
@@ -105,11 +105,11 @@ public class DBAppenderHSQLTestFixture {
   private  void dropTables() throws SQLException {
     Connection conn = newConnection();
     
-    StringBuilder buf = new StringBuilder();
+    StringBuffer buf = new StringBuffer();
     buf.append("DROP TABLE access_event_header IF EXISTS;");
     query(conn, buf.toString());
     
-    buf = new StringBuilder();
+    buf = new StringBuffer();
     buf.append("DROP TABLE access_event IF EXISTS;");
     query(conn, buf.toString());
   }
diff --git a/logback-access/src/test/java/ch/qos/logback/access/db/PackageTest.java b/logback-access/src/test/java/ch/qos/logback/access/db/PackageTest.java
index 46f0d1b..7e00371 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/db/PackageTest.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/db/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,11 +13,14 @@
  */
 package ch.qos.logback.access.db;
 
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
+import junit.framework.*;
 
- at RunWith(Suite.class)
- at Suite.SuiteClasses({DBAppenderHSQLTest.class, DBAppenderIntegrationTest.class})
-public class PackageTest  {
+public class PackageTest extends TestCase {
 
+  public static Test suite() {
+    TestSuite suite = new TestSuite();
+    suite.addTest(new JUnit4TestAdapter(DBAppenderTest.class));
+    suite.addTest(new JUnit4TestAdapter(DBAppenderIntegrationTest.class));
+    return suite;
+  }
 }
\ No newline at end of file
diff --git a/logback-access/src/test/java/ch/qos/logback/access/dummy/DummyAccessEventBuilder.java b/logback-access/src/test/java/ch/qos/logback/access/dummy/DummyAccessEventBuilder.java
index 05d9963..7f85316 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/dummy/DummyAccessEventBuilder.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/dummy/DummyAccessEventBuilder.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/test/java/ch/qos/logback/access/dummy/DummyRequest.java b/logback-access/src/test/java/ch/qos/logback/access/dummy/DummyRequest.java
index 4674f64..feef2bc 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/dummy/DummyRequest.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/dummy/DummyRequest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/test/java/ch/qos/logback/access/dummy/DummyResponse.java b/logback-access/src/test/java/ch/qos/logback/access/dummy/DummyResponse.java
index 8331db0..1ca51e4 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/dummy/DummyResponse.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/dummy/DummyResponse.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/test/java/ch/qos/logback/access/dummy/DummyServerAdapter.java b/logback-access/src/test/java/ch/qos/logback/access/dummy/DummyServerAdapter.java
index 2bae5f8..94e74b3 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/dummy/DummyServerAdapter.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/dummy/DummyServerAdapter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,20 +13,20 @@
  */
 package ch.qos.logback.access.dummy;
 
-import ch.qos.logback.access.spi.ServerAdapter;
-
 import java.util.Map;
 
+import ch.qos.logback.access.spi.ServerAdapter;
+
 public class DummyServerAdapter implements ServerAdapter {
 
   DummyRequest request;
   DummyResponse response;
-
+  
   public DummyServerAdapter(DummyRequest dummyRequest, DummyResponse dummyResponse) {
     this.request = dummyRequest;
     this.response = dummyResponse;
   }
-
+  
   public long getContentLength() {
     return response.getContentCount();
   }
@@ -34,11 +34,7 @@ public class DummyServerAdapter implements ServerAdapter {
   public int getStatusCode() {
     return response.getStatus();
   }
-
-  public long getRequestTimestamp() {
-    return -1;
-  }
-
+  
   public Map<String, String> buildResponseHeaderMap() {
     return response.headerMap;
   }
diff --git a/logback-access/src/test/java/ch/qos/logback/access/filter/PackageTest.java b/logback-access/src/test/java/ch/qos/logback/access/filter/PackageTest.java
index 7160e7f..70d4322 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/filter/PackageTest.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/filter/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/test/java/ch/qos/logback/access/filter/StatsByDayTest.java b/logback-access/src/test/java/ch/qos/logback/access/filter/StatsByDayTest.java
index 06c038d..aa3c971 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/filter/StatsByDayTest.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/filter/StatsByDayTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/test/java/ch/qos/logback/access/jetty/JettyBasicTest.java b/logback-access/src/test/java/ch/qos/logback/access/jetty/JettyBasicTest.java
index 0172850..cdfe618 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/jetty/JettyBasicTest.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/jetty/JettyBasicTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/test/java/ch/qos/logback/access/jetty/JettyFixtureBase.java b/logback-access/src/test/java/ch/qos/logback/access/jetty/JettyFixtureBase.java
index eeb269b..7c63ed2 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/jetty/JettyFixtureBase.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/jetty/JettyFixtureBase.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/test/java/ch/qos/logback/access/jetty/JettyFixtureWithListAndConsoleAppenders.java b/logback-access/src/test/java/ch/qos/logback/access/jetty/JettyFixtureWithListAndConsoleAppenders.java
index bf04d51..9f40a10 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/jetty/JettyFixtureWithListAndConsoleAppenders.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/jetty/JettyFixtureWithListAndConsoleAppenders.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/test/java/ch/qos/logback/access/jetty/PackageTest.java b/logback-access/src/test/java/ch/qos/logback/access/jetty/PackageTest.java
index 3d3aebd..c85fec8 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/jetty/PackageTest.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/jetty/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/test/java/ch/qos/logback/access/joran/ConditionalTest.java b/logback-access/src/test/java/ch/qos/logback/access/joran/ConditionalTest.java
index 2d7dee1..9ab337a 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/joran/ConditionalTest.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/joran/ConditionalTest.java
@@ -1,16 +1,3 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
 package ch.qos.logback.access.joran;
 
 import ch.qos.logback.access.TeztConstants;
diff --git a/logback-access/src/test/java/ch/qos/logback/access/joran/JoranConfiguratorTest.java b/logback-access/src/test/java/ch/qos/logback/access/joran/JoranConfiguratorTest.java
index de5d00a..77a81f6 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/joran/JoranConfiguratorTest.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/joran/JoranConfiguratorTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/test/java/ch/qos/logback/access/joran/PackageTest.java b/logback-access/src/test/java/ch/qos/logback/access/joran/PackageTest.java
index 229e44e..b79b7ca 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/joran/PackageTest.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/joran/PackageTest.java
@@ -1,16 +1,3 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
 package ch.qos.logback.access.joran;
 
 import org.junit.runner.RunWith;
diff --git a/logback-access/src/test/java/ch/qos/logback/access/net/MockSocketServer.java b/logback-access/src/test/java/ch/qos/logback/access/net/MockSocketServer.java
new file mode 100644
index 0000000..b77f9e7
--- /dev/null
+++ b/logback-access/src/test/java/ch/qos/logback/access/net/MockSocketServer.java
@@ -0,0 +1,77 @@
+/**
+ * Logback: the reliable, generic, fast and flexible logging framework.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
+ *
+ * This program and the accompanying materials are dual-licensed under
+ * either the terms of the Eclipse Public License v1.0 as published by
+ * the Eclipse Foundation
+ *
+ *   or (per the licensee's choosing)
+ *
+ * under the terms of the GNU Lesser General Public License version 2.1
+ * as published by the Free Software Foundation.
+ */
+package ch.qos.logback.access.net;
+
+import java.io.BufferedInputStream;
+import java.io.ObjectInputStream;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.util.ArrayList;
+import java.util.List;
+
+//import ch.qos.logback.access.spi.AccessEvent;
+import ch.qos.logback.access.spi.IAccessEvent;
+
+
+/**
+ * @author Sébastien Pennec
+ */
+public class MockSocketServer extends Thread {
+
+  static final int PORT = 4560;
+
+  final int loopLen;
+
+  List<IAccessEvent> accessEventList = new ArrayList<IAccessEvent>();
+  boolean finished = false;
+
+  MockSocketServer(int loopLen) {
+    super();
+    this.loopLen = loopLen;
+  }
+
+  @Override
+  public void run() {
+    ObjectInputStream ois = null;
+    ServerSocket serverSocket = null;
+    // Object readObject;
+    try {
+      serverSocket = new ServerSocket(PORT);
+      Socket socket = serverSocket.accept();
+      ois = new ObjectInputStream(new BufferedInputStream(socket
+          .getInputStream()));
+      for (int i = 0; i < loopLen; i++) {
+        IAccessEvent event = (IAccessEvent) ois.readObject();
+        accessEventList.add(event);
+      }
+    } catch (Exception se) {
+      se.printStackTrace();
+    } finally {
+
+      if (ois != null) {
+        try {
+          ois.close();
+        } catch (Exception e) {
+        }
+      }
+      if (serverSocket != null) {
+        try {
+          serverSocket.close();
+        } catch (Exception e) {
+        }
+      }
+    }
+    finished = true;
+  }
+}
diff --git a/logback-access/src/test/java/ch/qos/logback/access/net/NOPOutputStream.java b/logback-access/src/test/java/ch/qos/logback/access/net/NOPOutputStream.java
index 7f956d2..fd4cf55 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/net/NOPOutputStream.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/net/NOPOutputStream.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/test/java/ch/qos/logback/access/net/PackageTest.java b/logback-access/src/test/java/ch/qos/logback/access/net/PackageTest.java
index fa85904..83cf2e0 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/net/PackageTest.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/net/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -20,6 +20,6 @@ import org.junit.runners.Suite;
 import org.junit.runners.Suite.SuiteClasses;
 
 @RunWith(Suite.class)
- at SuiteClasses({URLEvaluatorTest.class})
+ at SuiteClasses({URLEvaluatorTest.class, SocketAppenderTest.class})
 public class PackageTest extends TestCase {
 }
\ No newline at end of file
diff --git a/logback-access/src/test/java/ch/qos/logback/access/net/SerializationPerfTest.java b/logback-access/src/test/java/ch/qos/logback/access/net/SerializationPerfTest.java
index f9f8c2e..cdc0b3c 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/net/SerializationPerfTest.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/net/SerializationPerfTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/test/java/ch/qos/logback/access/net/SocketAppenderTest.java b/logback-access/src/test/java/ch/qos/logback/access/net/SocketAppenderTest.java
new file mode 100644
index 0000000..c9be4dc
--- /dev/null
+++ b/logback-access/src/test/java/ch/qos/logback/access/net/SocketAppenderTest.java
@@ -0,0 +1,89 @@
+/**
+ * Logback: the reliable, generic, fast and flexible logging framework.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
+ *
+ * This program and the accompanying materials are dual-licensed under
+ * either the terms of the Eclipse Public License v1.0 as published by
+ * the Eclipse Foundation
+ *
+ *   or (per the licensee's choosing)
+ *
+ * under the terms of the GNU Lesser General Public License version 2.1
+ * as published by the Free Software Foundation.
+ */
+package ch.qos.logback.access.net;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import ch.qos.logback.access.spi.IAccessEvent;
+import org.junit.Test;
+
+import ch.qos.logback.access.dummy.DummyRequest;
+import ch.qos.logback.access.dummy.DummyResponse;
+import ch.qos.logback.access.dummy.DummyServerAdapter;
+import ch.qos.logback.access.spi.AccessContext;
+import ch.qos.logback.access.spi.AccessEvent;
+
+
+public class SocketAppenderTest {
+
+  private AccessContext context;
+  private MockSocketServer mockSocketServer;
+
+  @Test
+  public void testStartFailNoRemoteHost() {
+    context = new AccessContext();
+    SocketAppender appender = new SocketAppender();
+    appender.setContext(context);
+    appender.setPort(123);
+    appender.start();
+    assertEquals(1, context.getStatusManager().getCount());
+  }
+
+  @Test
+  public void testRecieveMessage() throws InterruptedException {
+    startServer(1);
+    configureClient();
+    
+    context.callAppenders(buildNewAccessEvent());
+    // Wait max 2 seconds for mock server to finish. However, it should
+    // finish much sooner than that.
+    mockSocketServer.join(2000);
+    assertTrue(mockSocketServer.finished);
+    assertEquals(1, mockSocketServer.accessEventList.size());
+
+    IAccessEvent remoteEvent = mockSocketServer.accessEventList.get(0);
+    //check that the values are available although the request and response
+    //objects did not survive serialization
+    assertEquals("headerValue1", remoteEvent.getRequestHeader("headerName1"));
+    assertEquals("testHost", remoteEvent.getRemoteHost());
+  }
+
+  private void startServer(int expectedEventNumber) throws InterruptedException {
+    mockSocketServer = new MockSocketServer(expectedEventNumber);
+    mockSocketServer.start();
+    // give MockSocketServer head start
+    Thread.sleep(100);
+  }
+
+  private void configureClient() {
+    context = new AccessContext();
+    context.setName("test");
+    SocketAppender socketAppender = new SocketAppender();
+    socketAppender.setContext(context);
+    socketAppender.setName("socket");
+    socketAppender.setPort(MockSocketServer.PORT);
+    socketAppender.setRemoteHost("localhost");
+    context.addAppender(socketAppender);
+    socketAppender.start();
+  }
+  
+  private IAccessEvent buildNewAccessEvent() {
+    DummyRequest request = new DummyRequest();
+    DummyResponse response = new DummyResponse();
+    DummyServerAdapter adapter = new DummyServerAdapter(request, response);
+    
+    return new AccessEvent(request, response, adapter);
+  }
+}
diff --git a/logback-access/src/test/java/ch/qos/logback/access/net/URLEvaluatorTest.java b/logback-access/src/test/java/ch/qos/logback/access/net/URLEvaluatorTest.java
index 0ed1450..707dd50 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/net/URLEvaluatorTest.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/net/URLEvaluatorTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/test/java/ch/qos/logback/access/pattern/ConverterTest.java b/logback-access/src/test/java/ch/qos/logback/access/pattern/ConverterTest.java
index 9cf6992..de7f87d 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/pattern/ConverterTest.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/pattern/ConverterTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/test/java/ch/qos/logback/access/pattern/PackageTest.java b/logback-access/src/test/java/ch/qos/logback/access/pattern/PackageTest.java
index 71bff21..38bebd9 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/pattern/PackageTest.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/pattern/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/test/java/ch/qos/logback/access/servlet/PackageTest.java b/logback-access/src/test/java/ch/qos/logback/access/servlet/PackageTest.java
index 4c8acbd..0e51f16 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/servlet/PackageTest.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/servlet/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/test/java/ch/qos/logback/access/servlet/TeeFilterTest.java b/logback-access/src/test/java/ch/qos/logback/access/servlet/TeeFilterTest.java
index 8bcac42..8ba9cd8 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/servlet/TeeFilterTest.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/servlet/TeeFilterTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/test/java/ch/qos/logback/access/sift/PackageTest.java b/logback-access/src/test/java/ch/qos/logback/access/sift/PackageTest.java
index 99e6af0..4a4d673 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/sift/PackageTest.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/sift/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/test/java/ch/qos/logback/access/sift/SiftingAppenderTest.java b/logback-access/src/test/java/ch/qos/logback/access/sift/SiftingAppenderTest.java
index 31fd02e..91019a0 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/sift/SiftingAppenderTest.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/sift/SiftingAppenderTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -17,8 +17,8 @@ import static org.junit.Assert.assertEquals;
 
 import java.net.HttpURLConnection;
 import java.net.URL;
-import java.util.LinkedHashSet;
-import java.util.Set;
+import java.util.ArrayList;
+import java.util.List;
 
 import ch.qos.logback.access.jetty.JettyFixtureBase;
 import org.junit.After;
@@ -55,31 +55,33 @@ public class SiftingAppenderTest {
   public void invokingDifferentPathShouldBeSiftedAccordingly() throws Exception {
     rli.setFileName(PREFIX + "sifting.xml");
     jettyFixture.start();
+    StatusPrinter.print(rli);
     invokeServer("/");
     invokeServer("/x");
     invokeServer("/x");
     invokeServer("/y");
 
-    StatusPrinter.print(rli);
     SiftingAppender siftingAppender = (SiftingAppender) rli
         .getAppender("SIFTING");
-    Set<String> keySet = siftingAppender.getAppenderTracker().allKeys();
-    assertEquals(3, keySet.size());
+    List<String> keyList = siftingAppender.getAppenderTracker().keyList();
+    assertEquals(3, keyList.size());
+
+    List<String> witnessList = new ArrayList<String>();
+    witnessList.add("NA");
+    witnessList.add("x");
+    witnessList.add("y");
+    assertEquals(witnessList, keyList);
 
-    Set<String> witnessSet = new LinkedHashSet<String>();
-    witnessSet.add("NA");
-    witnessSet.add("x");
-    witnessSet.add("y");
-    assertEquals(witnessSet, keySet);
+    long now = System.currentTimeMillis();
+    check(siftingAppender, "NA", 1, now);
+    check(siftingAppender, "x", 2, now);
+    check(siftingAppender, "y", 1, now);
 
-    check(siftingAppender, "NA", 1);
-    check(siftingAppender, "x", 2);
-    check(siftingAppender, "y", 1);
   }
 
-  private void check(SiftingAppender siftingAppender, String key, int expectedCount) {
+  private void check(SiftingAppender siftingAppender, String key, int expectedCount, long now) {
     ListAppender<IAccessEvent> listAppender = (ListAppender<IAccessEvent>) siftingAppender
-      .getAppenderTracker().find(key);
+      .getAppenderTracker().get(key, now);
     assertEquals(expectedCount, listAppender.list.size());
   }
 
diff --git a/logback-access/src/test/java/ch/qos/logback/access/spi/AccessEventSerializationTest.java b/logback-access/src/test/java/ch/qos/logback/access/spi/AccessEventSerializationTest.java
index be4d257..8e94a8b 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/spi/AccessEventSerializationTest.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/spi/AccessEventSerializationTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/test/java/ch/qos/logback/access/spi/PackageTest.java b/logback-access/src/test/java/ch/qos/logback/access/spi/PackageTest.java
index f9ea0d8..c3de057 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/spi/PackageTest.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/spi/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-access/src/test/java/ch/qos/logback/access/testUtil/NotifyingListAppender.java b/logback-access/src/test/java/ch/qos/logback/access/testUtil/NotifyingListAppender.java
index e296995..048c8a9 100644
--- a/logback-access/src/test/java/ch/qos/logback/access/testUtil/NotifyingListAppender.java
+++ b/logback-access/src/test/java/ch/qos/logback/access/testUtil/NotifyingListAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/integration.xml b/logback-classic/integration.xml
index 1aa7327..ae95f69 100644
--- a/logback-classic/integration.xml
+++ b/logback-classic/integration.xml
@@ -21,11 +21,14 @@
 	</path >
 
 
+
+
 	<target name="testAll" depends="testWithoutGroovy, testConditionalsWithoutJanino" 
           unless="maven.test.skip">
 	</target>
 
 
+
 	<target name="testWithoutGroovy" unless="maven.test.skip">
 		<junit printsummary="yes" fork="no" haltonfailure="yes">
 			<classpath refid="basicClasspath" />
@@ -36,6 +39,7 @@
 		</junit>
 	</target>
 
+
 	<target name="testConditionalsWithoutJanino" unless="maven.test.skip">
 		<junit printsummary="yes" fork="no" haltonfailure="yes">
 			<classpath refid="basicClasspath" />
diff --git a/logback-classic/pom.xml b/logback-classic/pom.xml
index dbeebbb..e5970d4 100644
--- a/logback-classic/pom.xml
+++ b/logback-classic/pom.xml
@@ -1,13 +1,13 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
     <groupId>ch.qos.logback</groupId>
     <artifactId>logback-parent</artifactId>
-    <version>1.1.2</version>
+    <version>1.0.4</version>
   </parent>
 
   <artifactId>logback-classic</artifactId>
@@ -64,13 +64,6 @@
       <scope>test</scope>
     </dependency>
 
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>jul-to-slf4j</artifactId>
-      <version>${slf4j.version}</version>
-      <scope>test</scope>
-    </dependency>
-
 
     <dependency>
       <groupId>dom4j</groupId>
@@ -93,14 +86,14 @@
     <dependency>
       <groupId>postgresql</groupId>
       <artifactId>postgresql</artifactId>
-      <scope>test</scope>
+      <scope>test</scope>      
     </dependency>
 
     <dependency>
       <groupId>mysql</groupId>
       <artifactId>mysql-connector-java</artifactId>
       <version>5.1.9</version>
-      <scope>test</scope>
+      <scope>test</scope>      
     </dependency>
 
     <dependency>
@@ -131,7 +124,7 @@
       <type>test-jar</type>
       <scope>test</scope>
     </dependency>
-
+    
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>integration</artifactId>
@@ -180,9 +173,31 @@
       <scope>test</scope>
     </dependency>
 
+    <dependency>
+      <groupId>org.scala-lang</groupId>
+      <artifactId>scala-library</artifactId>
+      <scope>test</scope>
+    </dependency>
+
+    <!--<dependency>-->
+      <!--<groupId>org.apache.zookeeper</groupId>-->
+      <!--<artifactId>zookeeper</artifactId>-->
+      <!--<version>3.4.0-SVN</version>-->
+      <!--<scope>test</scope>-->
+    <!--</dependency>-->
+
+    <!--<dependency>-->
+      <!--<groupId>org.apache.zookeeper</groupId>-->
+      <!--<artifactId>zookeeper</artifactId>-->
+      <!--<version>3.4.0-SVN</version>-->
+      <!--<scope>test</scope>-->
+      <!--<classifier>test</classifier>-->
+    <!--</dependency>-->
+
   </dependencies>
 
 
+
   <build>
 
     <resources>
@@ -194,24 +209,22 @@
       </resource>
     </resources>
 
-
+  
     <plugins>
       <plugin>
-        <groupId>org.codehaus.gmaven</groupId>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <source>1.5</source>
+          <target>1.5</target>
+        </configuration>
+      </plugin>
+
+      <plugin>
+      <groupId>org.codehaus.groovy.maven</groupId>
         <artifactId>gmaven-plugin</artifactId>
-        <version>1.4</version>
-        <dependencies>
-          <dependency>
-            <groupId>org.codehaus.groovy</groupId>
-            <artifactId>groovy-all</artifactId>
-            <version>${groovy.version}</version>
-          </dependency>
-        </dependencies>
         <executions>
           <execution>
-            <configuration>
-              <providerSelection>1.8</providerSelection>
-            </configuration>
             <goals>
               <goal>generateStubs</goal>
               <goal>compile</goal>
@@ -220,13 +233,29 @@
             </goals>
           </execution>
         </executions>
+      </plugin>
 
+      <plugin>
+         <groupId>org.scala-tools</groupId>
+         <artifactId>maven-scala-plugin</artifactId>
+         <version>2.14.3</version>
+         <configuration>
+           <testSourceDir>src/test/scala</testSourceDir>
+         </configuration>
+         <executions>
+           <execution>
+             <id>scala-test-compile</id>
+             <phase>process-test-resources</phase>
+             <goals>
+               <goal>testCompile</goal>
+             </goals>
+           </execution>
+        </executions>
       </plugin>
 
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-jar-plugin</artifactId>
-        <version>${maven-jar-plugin.version}</version>
         <configuration>
           <archive>
             <manifestFile>
@@ -246,7 +275,7 @@
         </executions>
       </plugin>
 
-
+      
       <plugin>
         <artifactId>maven-antrun-plugin</artifactId>
         <version>1.4</version>
@@ -263,14 +292,14 @@
           </dependency>
 
         </dependencies>
-
+        
         <executions>
           <execution>
             <id>ant-osgi-test</id>
             <phase>package</phase>
             <configuration>
-              <tasks>
-                <property name="currentVersion" value="${project.version}"/>
+              <tasks>      
+                <property name="currentVersion" value="${project.version}" />
                 <property name="slf4j.version" value="${slf4j.version}"/>
                 <property name="basedir" value="${basedir}"/>
                 <ant antfile="${basedir}/osgi-build.xml"/>
@@ -285,7 +314,7 @@
             <id>ant-integration-test</id>
             <phase>package</phase>
             <configuration>
-              <tasks>
+              <tasks>      
                 <property name="slf4j.version" value="${slf4j.version}"/>
                 <ant antfile="${basedir}/integration.xml"/>
               </tasks>
@@ -300,11 +329,9 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
-        <version>${maven-surefire-plugin.version}</version>
         <configuration>
           <!-- once, never, pertest, always -->
           <forkMode>once</forkMode>
-          <!--<parallel>classes</parallel>-->
           <reportFormat>plain</reportFormat>
           <trimStackTrace>false</trimStackTrace>
           <excludes>
@@ -313,8 +340,12 @@
             <exclude>**/TestConstants.java</exclude>
             <exclude>**/test_osgi/BundleTest.java</exclude>
             <exclude>**/ch/qos/logback/classic/util/InitializationIntegrationTest.java</exclude>
-            <!-- skip performance tests -->
-            <exclude>**/*PerfTest.java</exclude>
+            <!-- next test requires a running simple server -->
+            <exclude>**/SerializationPerfTest.java</exclude>
+            <!-- next test is fragile and anyhow will run as part of PackageTest -->
+            <exclude>**/LoggerPerfTest.java</exclude>
+            <!-- next test is fragile and anyhow will run as part of PackageTest -->
+            <exclude>**/LoggingEventSerializationPerfTest.java</exclude>
           </excludes>
         </configuration>
       </plugin>
@@ -342,7 +373,7 @@
                  of java code. -->
 
             <Import-Package>
-              sun.reflect;resolution:=optional,
+              sun.reflect;resolution:=optional, 
               javax.*;resolution:=optional,
               org.xml.*;resolution:=optional,
               org.slf4j,
diff --git a/logback-classic/src/main/groovy/ch/qos/logback/classic/gaffer/AppenderDelegate.groovy b/logback-classic/src/main/groovy/ch/qos/logback/classic/gaffer/AppenderDelegate.groovy
index 5f24a53..0539b00 100644
--- a/logback-classic/src/main/groovy/ch/qos/logback/classic/gaffer/AppenderDelegate.groovy
+++ b/logback-classic/src/main/groovy/ch/qos/logback/classic/gaffer/AppenderDelegate.groovy
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2010, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -12,7 +12,10 @@
  * as published by the Free Software Foundation.
  */
 package ch.qos.logback.classic.gaffer
+
 import ch.qos.logback.core.Appender
+import ch.qos.logback.core.spi.ContextAwareBase
+
 /**
  * @author Ceki Gücü
  */
diff --git a/logback-classic/src/main/groovy/ch/qos/logback/classic/gaffer/AsyncAppenderDelegate.groovy b/logback-classic/src/main/groovy/ch/qos/logback/classic/gaffer/AsyncAppenderDelegate.groovy
deleted file mode 100644
index cccb0ff..0000000
--- a/logback-classic/src/main/groovy/ch/qos/logback/classic/gaffer/AsyncAppenderDelegate.groovy
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.gaffer
-
-import ch.qos.logback.core.Appender
-
-class AsyncAppenderDelegate extends AppenderDelegate {
-
-  Map<String, Appender<?>> appendersByName = [:]
-
-  AsyncAppenderDelegate(Appender appender, List<Appender<?>> appenders) {
-    super(appender)
-    appendersByName = appenders.collectEntries { [(it.name) : it]}
-  }
-
-  void appenderRef(String name){
-    component.addAppender(appendersByName[name])
-  }
-}
diff --git a/logback-classic/src/main/groovy/ch/qos/logback/classic/gaffer/ComponentDelegate.groovy b/logback-classic/src/main/groovy/ch/qos/logback/classic/gaffer/ComponentDelegate.groovy
index 6cefd21..445ca1b 100644
--- a/logback-classic/src/main/groovy/ch/qos/logback/classic/gaffer/ComponentDelegate.groovy
+++ b/logback-classic/src/main/groovy/ch/qos/logback/classic/gaffer/ComponentDelegate.groovy
@@ -25,7 +25,7 @@ class ComponentDelegate extends ContextAwareBase {
 
   final Object component;
 
-  final List fieldsToCascade = [];
+  final List fieldsToCaccade = [];
 
   ComponentDelegate(Object component) {
     this.component = component;
@@ -74,7 +74,7 @@ class ComponentDelegate extends ContextAwareBase {
   }
 
   void cascadeFields(ComponentDelegate subDelegate) {
-    for (String k: fieldsToCascade) {
+    for (String k: fieldsToCaccade) {
       subDelegate.metaClass."${k}" = this."${k}"
     }
   }
diff --git a/logback-classic/src/main/groovy/ch/qos/logback/classic/gaffer/ConfigurationDelegate.groovy b/logback-classic/src/main/groovy/ch/qos/logback/classic/gaffer/ConfigurationDelegate.groovy
index 78cf705..4f8a011 100644
--- a/logback-classic/src/main/groovy/ch/qos/logback/classic/gaffer/ConfigurationDelegate.groovy
+++ b/logback-classic/src/main/groovy/ch/qos/logback/classic/gaffer/ConfigurationDelegate.groovy
@@ -13,27 +13,25 @@
  */
 package ch.qos.logback.classic.gaffer;
 
+import ch.qos.logback.core.util.Duration;
+import groovy.lang.Closure;
 
+import java.util.Map
+import ch.qos.logback.core.Context
+import ch.qos.logback.classic.turbo.ReconfigureOnChangeFilter
+import ch.qos.logback.classic.LoggerContext
+import ch.qos.logback.core.spi.ContextAwareImpl
+import ch.qos.logback.core.spi.ContextAwareBase
 import ch.qos.logback.classic.Level
 import ch.qos.logback.classic.Logger
-import ch.qos.logback.classic.LoggerContext
-import ch.qos.logback.classic.jmx.JMXConfigurator
-import ch.qos.logback.classic.jmx.MBeanUtil
-import ch.qos.logback.classic.net.ReceiverBase
-import ch.qos.logback.classic.turbo.ReconfigureOnChangeFilter
-import ch.qos.logback.classic.turbo.TurboFilter
 import ch.qos.logback.core.Appender
-import ch.qos.logback.core.CoreConstants
-import ch.qos.logback.core.spi.ContextAwareBase
 import ch.qos.logback.core.status.StatusListener
-import ch.qos.logback.core.util.CachingDateFormatter
-import ch.qos.logback.core.util.Duration
-import ch.qos.logback.core.spi.LifeCycle
-import ch.qos.logback.core.spi.ContextAware
-
-import javax.management.MalformedObjectNameException
-import javax.management.ObjectName
-import java.lang.management.ManagementFactory
+import java.text.SimpleDateFormat
+import ch.qos.logback.classic.turbo.TurboFilter
+import ch.qos.logback.core.CoreConstants
+import ch.qos.logback.core.util.ContextUtil
+import ch.qos.logback.core.joran.action.TimestampAction
+import ch.qos.logback.core.util.CachingDateFormatter;
 
 /**
  * @author Ceki Gücü
@@ -47,9 +45,6 @@ public class ConfigurationDelegate extends ContextAwareBase {
     return this;
   }
 
-
-
-
   void scan(String scanPeriodStr = null) {
     ReconfigureOnChangeFilter rocf = new ReconfigureOnChangeFilter();
     rocf.setContext(context);
@@ -71,12 +66,6 @@ public class ConfigurationDelegate extends ContextAwareBase {
   void statusListener(Class listenerClass) {
     StatusListener statusListener = listenerClass.newInstance()
     context.statusManager.add(statusListener)
-    if(statusListener instanceof ContextAware) {
-      ((ContextAware) statusListener).setContext(context);
-    }
-    if(statusListener instanceof LifeCycle) {
-      ((LifeCycle) statusListener).start();
-    }
     addInfo("Added status listener of type [${listenerClass.canonicalName}]");
   }
 
@@ -104,16 +93,16 @@ public class ConfigurationDelegate extends ContextAwareBase {
   void logger(String name, Level level, List<String> appenderNames = [], Boolean additivity = null) {
     if (name) {
       Logger logger = ((LoggerContext) context).getLogger(name);
-      addInfo("Setting level of logger [${name}] to " + level);
       logger.level = level;
 
-      for (aName in appenderNames) {
-        Appender appender = appenderList.find { it -> it.name == aName };
-        if (appender != null) {
-          addInfo("Attaching appender named [${aName}] to " + logger);
-          logger.addAppender(appender);
-        } else {
-          addError("Failed to find appender named [${aName}]");
+      if (appenderNames) {
+        appenderNames.each { aName ->
+          Appender appender = appenderList.find { it -> it.name == aName };
+          if (appender != null) {
+            logger.addAppender(appender);
+          } else {
+            addError("Failed to find appender named [${aName}]");
+          }
         }
       }
 
@@ -133,43 +122,21 @@ public class ConfigurationDelegate extends ContextAwareBase {
     appender.context = context
     appenderList.add(appender)
     if (closure != null) {
-      AppenderDelegate ad = clazz.name == 'ch.qos.logback.classic.AsyncAppender' ? new AsyncAppenderDelegate(appender, appenderList) : new AppenderDelegate(appender);
+      AppenderDelegate ad = new AppenderDelegate(appender);
       copyContributions(ad, appender)
       ad.context = context;
       closure.delegate = ad;
       closure.resolveStrategy = Closure.DELEGATE_FIRST
       closure();
     }
-    try {
-      appender.start()
-    } catch (RuntimeException e) {
-      addError("Failed to start apppender named [" + name + "]", e)
-    }
-  }
-
-  void receiver(String name, Class aClass, Closure closure = null) {
-    addInfo("About to instantiate receiver of type [" + clazz.name + "]");
-    ReceiverBase receiver = aClass.newInstance();
-    receiver.context = context;
-    if(closure != null) {
-      ComponentDelegate componentDelegate = new ComponentDelegate(receiver);
-      componentDelegate.context = context;
-      closure.delegate = componentDelegate;
-      closure.resolveStrategy = Closure.DELEGATE_FIRST
-      closure();
-    }
-    try {
-      receiver.start()
-    } catch (RuntimeException e) {
-      addError("Failed to start receiver of type [" + aClass.getName() + "]", e)
-    }
+    appender.start();
   }
 
   private void copyContributions(AppenderDelegate appenderDelegate, Appender appender) {
-    if (appender instanceof ConfigurationContributor) {
+    if(appender instanceof ConfigurationContributor) {
       ConfigurationContributor cc = (ConfigurationContributor) appender;
       cc.getMappings().each() { oldName, newName ->
-        appenderDelegate.metaClass."${newName}" = appender.&"$oldName"
+         appenderDelegate.metaClass."${newName}" = appender.&"$oldName"
       }
     }
   }
@@ -194,53 +161,15 @@ public class ConfigurationDelegate extends ContextAwareBase {
   String timestamp(String datePattern, long timeReference = -1) {
     long now = -1;
 
-    if (timeReference == -1) {
+    if(timeReference == -1) {
       addInfo("Using current interpretation time, i.e. now, as time reference.");
       now = System.currentTimeMillis()
     } else {
       now = timeReference
-      addInfo("Using " + now + " as time reference.");
+      addInfo("Using " + now +" as time reference.");
     }
     CachingDateFormatter sdf = new CachingDateFormatter(datePattern);
     sdf.format(now)
   }
-
-    /**
-     * Creates and registers a {@link JMXConfigurator} with the platform MBean Server.
-     * Allows specifying a custom context name to derive the used ObjectName, or a complete
-     * ObjectName string representation to determine your own (the syntax automatically determines the intent).
-     *
-     * @param name custom context name or full ObjectName string representation (defaults to null)
-     */
-  void jmxConfigurator(String name = null) {
-    def objectName = null
-    def contextName = context.name
-    if (name != null) {
-      // check if this is a valid ObjectName
-      try {
-        objectName = new ObjectName(name)
-      } catch (MalformedObjectNameException e) {
-        contextName = name
-      }
-    }
-    if (objectName == null) {
-      def objectNameAsStr = MBeanUtil.getObjectNameFor(contextName, JMXConfigurator.class)
-      objectName = MBeanUtil.string2ObjectName(context, this, objectNameAsStr)
-      if (objectName == null) {
-        addError("Failed to construct ObjectName for [${objectNameAsStr}]")
-        return
-      }
-    }
-
-    def platformMBeanServer = ManagementFactory.platformMBeanServer
-    if (!MBeanUtil.isRegistered(platformMBeanServer, objectName)) {
-      JMXConfigurator jmxConfigurator = new JMXConfigurator((LoggerContext) context, platformMBeanServer, objectName)
-      try {
-        platformMBeanServer.registerMBean(jmxConfigurator, objectName)
-      } catch (all) {
-        addError("Failed to create mbean", all)
-      }
-    }
-  }
-
 }
+
diff --git a/logback-classic/src/main/groovy/ch/qos/logback/classic/gaffer/GafferConfigurator.groovy b/logback-classic/src/main/groovy/ch/qos/logback/classic/gaffer/GafferConfigurator.groovy
index 391f0ff..983534c 100644
--- a/logback-classic/src/main/groovy/ch/qos/logback/classic/gaffer/GafferConfigurator.groovy
+++ b/logback-classic/src/main/groovy/ch/qos/logback/classic/gaffer/GafferConfigurator.groovy
@@ -13,26 +13,19 @@
  */
 package ch.qos.logback.classic.gaffer
 
-import ch.qos.logback.classic.Level
 import ch.qos.logback.classic.LoggerContext
-import ch.qos.logback.classic.encoder.PatternLayoutEncoder
-import ch.qos.logback.classic.sift.SiftingAppender
-import ch.qos.logback.core.status.OnConsoleStatusListener
 import ch.qos.logback.core.util.ContextUtil
-import ch.qos.logback.core.util.OptionHelper
 
 import ch.qos.logback.core.joran.util.ConfigurationWatchListUtil
-import org.codehaus.groovy.control.CompilerConfiguration
-import org.codehaus.groovy.control.customizers.ImportCustomizer
 
 class GafferConfigurator {
 
   LoggerContext context
+  //ConfigurationDelegate configurationDelegate = new ConfigurationDelegate();
                          
-  static final String DEBUG_SYSTEM_PROPERTY_KEY = "logback.debug";
-
   GafferConfigurator(LoggerContext context) {
     this.context = context
+    //configurationDelegate.context = context;
   }
 
   protected void informContextOfURLUsedForConfiguration(URL url) {
@@ -51,53 +44,19 @@ class GafferConfigurator {
 
   void run(String dslText) {
     Binding binding = new Binding();
-    binding.setProperty("hostname", ContextUtil.localHostName);
-
-    def configuration = new CompilerConfiguration()
-    configuration.addCompilationCustomizers(importCustomizer())
-
-    String debugAttrib = System.getProperty(DEBUG_SYSTEM_PROPERTY_KEY);
-    if (OptionHelper.isEmpty(debugAttrib) || debugAttrib.equalsIgnoreCase("false")
-            || debugAttrib.equalsIgnoreCase("null")) {
-      // For now, Groovy/Gaffer configuration DSL does not support "debug" attribute. But in order to keep
-      // the conditional logic identical to that in XML/Joran, we have this empty block.
-    } else {
-      OnConsoleStatusListener.addNewInstanceToContext(context);
-    }
-
-    // caller data should take into account groovy frames
-    new ContextUtil(context).addGroovyPackages(context.getFrameworkPackages());
-
-    Script dslScript = new GroovyShell(binding, configuration).parse(dslText)
+    binding.setProperty("hostname", ContextUtil.getLocalHostName());
+    Script dslScript = new GroovyShell(binding).parse(dslText)
 
     dslScript.metaClass.mixin(ConfigurationDelegate)
     dslScript.setContext(context)
     dslScript.metaClass.getDeclaredOrigin = { dslScript }
+//    metaClass.statusListener = configurationDelegate.&statusListener
+//    dslScript.metaClass.scan = configurationDelegate.&scan
+//    dslScript.metaClass.appender = configurationDelegate.&appender
+//    dslScript.metaClass.root = configurationDelegate.&root
+//    dslScript.metaClass.logger = configurationDelegate.&logger
 
     dslScript.run()
   }
 
-  protected ImportCustomizer importCustomizer() {
-    def customizer = new ImportCustomizer()
-
-
-    def core = 'ch.qos.logback.core'
-    customizer.addStarImports(core, "${core}.encoder", "${core}.read", "${core}.rolling", "${core}.status",
-            "ch.qos.logback.classic.net")
-
-    customizer.addImports(PatternLayoutEncoder.class.name)
-
-    customizer.addStaticStars(Level.class.name)
-
-    customizer.addStaticImport('off', Level.class.name, 'OFF')
-    customizer.addStaticImport('error', Level.class.name, 'ERROR')
-    customizer.addStaticImport('warn', Level.class.name, 'WARN')
-    customizer.addStaticImport('info', Level.class.name, 'INFO')
-    customizer.addStaticImport('debug', Level.class.name, 'DEBUG')
-    customizer.addStaticImport('trace', Level.class.name, 'TRACE')
-    customizer.addStaticImport('all', Level.class.name, 'ALL')
-
-    customizer
-  }
-
 }
\ No newline at end of file
diff --git a/logback-classic/src/main/groovy/ch/qos/logback/classic/sift/GSiftingAppender.groovy b/logback-classic/src/main/groovy/ch/qos/logback/classic/sift/GSiftingAppender.groovy
new file mode 100644
index 0000000..bcaacdf
--- /dev/null
+++ b/logback-classic/src/main/groovy/ch/qos/logback/classic/sift/GSiftingAppender.groovy
@@ -0,0 +1,156 @@
+/**
+ * Logback: the reliable, generic, fast and flexible logging framework.
+ * Copyright (C) 1999-2010, QOS.ch. All rights reserved.
+ *
+ * This program and the accompanying materials are dual-licensed under
+ * either the terms of the Eclipse Public License v1.0 as published by
+ * the Eclipse Foundation
+ *
+ *   or (per the licensee's choosing)
+ *
+ * under the terms of the GNU Lesser General Public License version 2.1
+ * as published by the Free Software Foundation.
+ */
+package ch.qos.logback.classic.sift
+
+import ch.qos.logback.core.AppenderBase
+import ch.qos.logback.classic.spi.ILoggingEvent
+import ch.qos.logback.core.sift.AppenderTrackerImpl
+import ch.qos.logback.core.sift.Discriminator
+import ch.qos.logback.core.sift.AppenderTracker
+import ch.qos.logback.core.Appender
+
+import ch.qos.logback.classic.gaffer.ConfigurationContributor
+import ch.qos.logback.core.CoreConstants
+import ch.qos.logback.core.helpers.NOPAppender
+
+/**
+ * @author Ceki Gücü
+ */
+
+// The GMaven plugin does not support generics, so we use   AppenderBase instead of AppenderBase<ILoggingEvent>
+class GSiftingAppender extends AppenderBase implements ConfigurationContributor {
+
+
+  protected AppenderTracker<ILoggingEvent> appenderTracker = new AppenderTrackerImpl<ILoggingEvent>();
+  Discriminator<ILoggingEvent> discriminator;
+  Closure builderClosure;
+
+  def Map<String, String> getMappings() {
+    return [sift: "sift"]
+  }
+
+  @Override
+  public void start() {
+    int errors = 0;
+    if (discriminator == null) {
+      addError("Missing discriminator. Aborting");
+      errors++;
+    }
+    if (!discriminator?.isStarted()) {
+      addError("Discriminator has not started successfully. Aborting");
+      errors++;
+    }
+
+    if (builderClosure == null) {
+      addError("Missing builder closure. Aborting");
+      errors++;
+    }
+    if (errors == 0) {
+      super.start();
+    }
+  }
+
+  @Override
+  public void stop() {
+    for (Appender<ILoggingEvent> appender: appenderTracker.valueList()) {
+      appender.stop();
+    }
+  }
+
+  @Override
+  protected long getTimestamp(ILoggingEvent event) {
+    return event.getTimeStamp();
+  }
+
+
+  Appender buildAppender(String value) {
+    String key = getDiscriminatorKey()
+
+    ZSiftingDelegate zd = new ZSiftingDelegate(getDiscriminatorKey(), value)
+    zd.context = context
+    zd.metaClass."$key" = value
+
+    //Closure newBuilder = builderClosure.clone()
+    builderClosure.delegate = zd;
+    builderClosure.resolveStrategy = Closure.DELEGATE_FIRST
+    Appender a = builderClosure()
+    return a
+  }
+
+  @Override
+  public void append(Object object) {
+    ILoggingEvent event = (ILoggingEvent) object;
+    if (!isStarted()) {
+      return;
+    }
+
+    String discriminatingValue = discriminator.getDiscriminatingValue(event);
+    long timestamp = getTimestamp(event);
+
+    Appender<ILoggingEvent> appender = appenderTracker.get(discriminatingValue, timestamp);
+    if (appender == null) {
+      try {
+        appender = buildAppender(discriminatingValue);
+        if (appender == null) {
+          appender = buildNOPAppender(discriminatingValue);
+        }
+        appenderTracker.put(discriminatingValue, appender, timestamp);
+
+      } catch (Throwable e) {
+        addError("Failed to build appender for [" + discriminatingValue + "]",
+                e);
+        return;
+      }
+    }
+    appenderTracker.stopStaleAppenders(timestamp);
+
+    appender.doAppend(event);
+  }
+
+  int nopaWarningCount = 0;
+
+  NOPAppender<ILoggingEvent> buildNOPAppender(String discriminatingValue) {
+    if (nopaWarningCount < CoreConstants.MAX_ERROR_COUNT) {
+      nopaWarningCount++;
+      addError("Failed to build an appender for discriminating value [" + discriminatingValue + "]");
+    }
+    NOPAppender<ILoggingEvent> nopa = new NOPAppender<ILoggingEvent>();
+    nopa.setContext(context);
+    nopa.start();
+    return nopa;
+  }
+
+  void build() {
+    int r = builderClosure();
+    println "r=$r"
+
+  }
+
+  void sift(Closure clo) {
+    builderClosure = clo;
+  }
+
+
+  public AppenderTracker getAppenderTracker() {
+    return appenderTracker;
+  }
+
+  public String getDiscriminatorKey() {
+    if (discriminator != null) {
+      return discriminator.getKey();
+    } else {
+      return null;
+    }
+  }
+}
diff --git a/logback-classic/src/main/groovy/ch/qos/logback/classic/sift/ZSiftingDelegate.groovy b/logback-classic/src/main/groovy/ch/qos/logback/classic/sift/ZSiftingDelegate.groovy
new file mode 100644
index 0000000..17496b3
--- /dev/null
+++ b/logback-classic/src/main/groovy/ch/qos/logback/classic/sift/ZSiftingDelegate.groovy
@@ -0,0 +1,39 @@
+package ch.qos.logback.classic.sift
+
+import ch.qos.logback.core.spi.ContextAwareBase
+import ch.qos.logback.core.Appender
+import ch.qos.logback.classic.gaffer.AppenderDelegate
+import ch.qos.logback.core.util.StatusPrinter
+
+/**
+ * @author Ceki Gücü
+ */
+class ZSiftingDelegate extends ContextAwareBase {
+
+  String key
+  String value
+
+  ZSiftingDelegate(String key, String value) {
+    this.key = key
+    this.value = value
+  }
+
+  Appender appender(String name, Class clazz, Closure closure = null) {
+    addInfo("About to instantiate appender of type [" + clazz.name + "]");
+    Appender appender = clazz.newInstance();
+    addInfo("Naming appender as [" + name + "]");
+    appender.name = name
+    appender.context = context
+    if (closure != null) {
+      AppenderDelegate ad = new AppenderDelegate(appender);
+      ad.metaClass."${key}" = value
+      ad.fieldsToCaccade << "${key}"
+      ad.context = context;
+      closure.delegate = ad;
+      closure.resolveStrategy = Closure.DELEGATE_FIRST
+      closure();
+    }
+    appender.start();
+    return appender;
+  }
+}
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/AsyncAppender.java b/logback-classic/src/main/java/ch/qos/logback/classic/AsyncAppender.java
index 075bed3..9bd8bf6 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/AsyncAppender.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/AsyncAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2012, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/BasicConfigurator.java b/logback-classic/src/main/java/ch/qos/logback/classic/BasicConfigurator.java
index d5df37e..cae66c1 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/BasicConfigurator.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/BasicConfigurator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/ClassicConstants.java b/logback-classic/src/main/java/ch/qos/logback/classic/ClassicConstants.java
index e28fe0e..7e66708 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/ClassicConstants.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/ClassicConstants.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -45,6 +45,5 @@ public class ClassicConstants {
 
   public static final String GAFFER_CONFIGURATOR_FQCN = "ch.qos.logback.classic.gaffer.GafferConfigurator";
 
-  public static final String FINALIZE_SESSION = "FINALIZE_SESSION";
-  public static final Marker FINALIZE_SESSION_MARKER = MarkerFactory.getMarker(FINALIZE_SESSION);
+  public static final Marker FINALIZE_SESSION_MARKER = MarkerFactory.getMarker("FINALIZE_SESSION");
 }
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/Level.java b/logback-classic/src/main/java/ch/qos/logback/classic/Level.java
index bd2ec82..c373854 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/Level.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/Level.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -277,7 +277,7 @@ public final class Level implements java.io.Serializable {
    * @return int An integer corresponding to this level as defined in LocationAwareLogger
    * @since 1.0.1
    */
-  public static int toLocationAwareLoggerInteger(Level level) {
+  public int toLocationAwareLoggerInteger(Level level) {
     if (level == null)
       throw new IllegalArgumentException("null level parameter is not admitted");
     switch (level.toInt()) {
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/Logger.java b/logback-classic/src/main/java/ch/qos/logback/classic/Logger.java
index f4fb4a9..60983ab 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/Logger.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/Logger.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -20,12 +20,12 @@ import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 
-import ch.qos.logback.classic.util.LoggerNameUtil;
 import org.slf4j.LoggerFactory;
 import org.slf4j.Marker;
 import org.slf4j.spi.LocationAwareLogger;
 
 import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.classic.spi.LoggerRemoteView;
 import ch.qos.logback.classic.spi.LoggingEvent;
 import ch.qos.logback.core.Appender;
 import ch.qos.logback.core.CoreConstants;
@@ -36,7 +36,10 @@ import ch.qos.logback.core.spi.FilterReply;
 public final class Logger implements org.slf4j.Logger, LocationAwareLogger,
     AppenderAttachable<ILoggingEvent>, Serializable {
 
-  private static final long serialVersionUID = 5454405123156820674L; //8745934908040027998L;
+  /**
+   * 
+   */
+  private static final long serialVersionUID = 5454405123156820674L;
 
   /**
    * The fully qualified name of this class. Used in gathering caller
@@ -51,22 +54,22 @@ public final class Logger implements org.slf4j.Logger, LocationAwareLogger,
   private String name;
 
   // The assigned levelInt of this logger. Can be null.
-  transient private Level level;
+  private Level level;
 
   // The effective levelInt is the assigned levelInt and if null, a levelInt is
   // inherited form a parent.
-  transient private int effectiveLevelInt;
+  private int effectiveLevelInt;
 
   /**
    * The parent of this category. All categories have at least one ancestor
    * which is the root category.
    */
-  transient private Logger parent;
+  private Logger parent;
 
   /**
    * The children of this logger. A logger may have zero or more children.
    */
-  transient private List<Logger> childrenList;
+  private List<Logger> childrenList;
 
   /**
    * It is assumed that once the 'aai' variable is set to a non-null value, it
@@ -88,7 +91,7 @@ public final class Logger implements org.slf4j.Logger, LocationAwareLogger,
    * <p>
    * 4) AppenderAttachableImpl is thread safe
    */
-  transient private AppenderAttachableImpl<ILoggingEvent> aai;
+  private transient AppenderAttachableImpl<ILoggingEvent> aai;
   /**
    * Additivity is set to true by default, that is children inherit the
    * appenders of their ancestors by default. If this variable is set to
@@ -97,14 +100,18 @@ public final class Logger implements org.slf4j.Logger, LocationAwareLogger,
    * its appenders, unless the children have their additivity flag set to
    * <code>false</code> too. See the user manual for more details.
    */
-  transient private boolean additive = true;
+  private boolean additive = true;
 
   final transient LoggerContext loggerContext;
+  // loggerRemoteView cannot be final because it may change as a consequence
+  // of changes in LoggerContext
+  LoggerRemoteView loggerRemoteView;
 
   Logger(String name, Logger parent, LoggerContext loggerContext) {
     this.name = name;
     this.parent = parent;
     this.loggerContext = loggerContext;
+    buildRemoteView();
   }
 
   public Level getEffectiveLevel() {
@@ -128,6 +135,9 @@ public final class Logger implements org.slf4j.Logger, LocationAwareLogger,
     return parent == null;
   }
 
+  // Logger getChildBySuffix(final String suffix) method was here and got
+  // removed.
+
   Logger getChildByName(final String childName) {
     if (childrenList == null) {
       return null;
@@ -159,7 +169,6 @@ public final class Logger implements org.slf4j.Logger, LocationAwareLogger,
     level = newLevel;
     if (newLevel == null) {
       effectiveLevelInt = parent.effectiveLevelInt;
-      newLevel = parent.getEffectiveLevel();
     } else {
       effectiveLevelInt = newLevel.levelInt;
     }
@@ -286,7 +295,26 @@ public final class Logger implements org.slf4j.Logger, LocationAwareLogger,
     return aai.detachAppender(appender);
   }
 
+  static int getSeparatorIndexOf(String name) {
+    return getSeparatorIndexOf(name, 0);
+  }
 
+  /**
+   * Get the position of the separator character, if any, starting at position
+   * 'fromIndex'.
+   * 
+   * @param name
+   * @param fromIndex
+   * @return
+   */
+  static int getSeparatorIndexOf(String name, int fromIndex) {
+    int i = name.indexOf(CoreConstants.DOT, fromIndex);
+    if (i != -1) {
+      return i;
+    } else {
+      return name.indexOf(CoreConstants.DOLLAR, fromIndex);
+    }
+  }
 
   /**
    * Create a child of this logger by suffix, that is, the part of the name
@@ -304,7 +332,7 @@ public final class Logger implements org.slf4j.Logger, LocationAwareLogger,
    * @return
    */
   Logger createChildByLastNamePart(final String lastPart) {
-    int i_index = LoggerNameUtil.getFirstSeparatorIndexOf(lastPart);
+    int i_index = getSeparatorIndexOf(lastPart);
     if (i_index != -1) {
       throw new IllegalArgumentException("Child name [" + lastPart
           + " passed as parameter, may not include [" + CoreConstants.DOT + "]");
@@ -353,7 +381,7 @@ public final class Logger implements org.slf4j.Logger, LocationAwareLogger,
   private static final int DEFAULT_CHILD_ARRAY_SIZE = 5;
 
   Logger createChildByName(final String childName) {
-    int i_index = LoggerNameUtil.getSeparatorIndexOf(childName, this.name.length() + 1);
+    int i_index = getSeparatorIndexOf(childName, this.name.length() + 1);
     if (i_index != -1) {
       throw new IllegalArgumentException("For logger [" + this.name
           + "] child name [" + childName
@@ -782,6 +810,14 @@ public final class Logger implements org.slf4j.Logger, LocationAwareLogger,
     return loggerContext;
   }
 
+  public LoggerRemoteView getLoggerRemoteView() {
+    return loggerRemoteView;
+  }
+
+  void buildRemoteView() {
+    this.loggerRemoteView = new LoggerRemoteView(name, loggerContext);
+  }
+
   public void log(Marker marker, String fqcn, int levelInt, String message,
       Object[] argArray, Throwable t) {
     Level level = Level.fromLocationAwareLoggerInteger(levelInt);
@@ -790,8 +826,8 @@ public final class Logger implements org.slf4j.Logger, LocationAwareLogger,
 
   /**
    * After serialization, the logger instance does not know its LoggerContext.
-   * The best we can do here, is to return a logger with the same name
-   * returned by org.slf4j.LoggerFactory.
+   * The best we can do here, is to return a logger with the same name as
+   * generated by LoggerFactory.
    * 
    * @return Logger instance with the same name
    * @throws ObjectStreamException
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/LoggerContext.java b/logback-classic/src/main/java/ch/qos/logback/classic/LoggerContext.java
index 49fbd97..a8a5e1e 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/LoggerContext.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/LoggerContext.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,10 +13,13 @@
  */
 package ch.qos.logback.classic;
 
-import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.List;
 
-import ch.qos.logback.classic.util.LoggerNameUtil;
 import org.slf4j.ILoggerFactory;
 import org.slf4j.Marker;
 
@@ -39,18 +42,22 @@ import ch.qos.logback.core.status.WarnStatus;
  * directly or indirectly to a LoggerContext instance. Just as importantly
  * LoggerContext implements the {@link ILoggerFactory} acting as the
  * manufacturing source of {@link Logger} instances.
- *
+ * 
  * @author Ceki Gulcu
  */
 public class LoggerContext extends ContextBase implements ILoggerFactory,
-        LifeCycle {
+    LifeCycle {
 
   final Logger root;
   private int size;
   private int noAppenderWarning = 0;
   final private List<LoggerContextListener> loggerContextListenerList = new ArrayList<LoggerContextListener>();
 
-  private Map<String, Logger> loggerCache;
+  // We want loggerCache to be synchronized so Hashtable is a good choice. In
+  // practice, it performs a little faster than the map returned by
+  // Collections.synchronizedMap at the cost of a very slightly higher memory
+  // footprint.
+  private Hashtable<String, Logger> loggerCache;
 
   private LoggerContextVO loggerContextRemoteView;
   private final TurboFilterList turboFilterList = new TurboFilterList();
@@ -58,44 +65,46 @@ public class LoggerContext extends ContextBase implements ILoggerFactory,
 
   private int maxCallerDataDepth = ClassicConstants.DEFAULT_MAX_CALLEDER_DATA_DEPTH;
 
+  boolean started = false;
+
   int resetCount = 0;
-  private List<String> frameworkPackages;
 
   public LoggerContext() {
     super();
-    this.loggerCache = new ConcurrentHashMap<String, Logger>();
-
+    this.loggerCache = new Hashtable<String, Logger>();
     this.loggerContextRemoteView = new LoggerContextVO(this);
     this.root = new Logger(Logger.ROOT_LOGGER_NAME, null, this);
     this.root.setLevel(Level.DEBUG);
     loggerCache.put(Logger.ROOT_LOGGER_NAME, root);
     initEvaluatorMap();
     size = 1;
-    this.frameworkPackages = new ArrayList<String>();
   }
 
   void initEvaluatorMap() {
     putObject(CoreConstants.EVALUATOR_MAP, new HashMap());
   }
-
+  
   /**
    * A new instance of LoggerContextRemoteView needs to be created each time the
    * name or propertyMap (including keys or values) changes.
    */
-  private void updateLoggerContextVO() {
+  private void syncRemoteView() {
     loggerContextRemoteView = new LoggerContextVO(this);
+    for (Logger logger : loggerCache.values()) {
+      logger.buildRemoteView();
+    }
   }
 
   @Override
   public void putProperty(String key, String val) {
     super.putProperty(key, val);
-    updateLoggerContextVO();
+    syncRemoteView();
   }
 
   @Override
   public void setName(String name) {
     super.setName(name);
-    updateLoggerContextVO();
+    syncRemoteView();
   }
 
   public final Logger getLogger(final Class clazz) {
@@ -129,7 +138,7 @@ public class LoggerContext extends ContextBase implements ILoggerFactory,
     // in between as well (if they don't already exist)
     String childName;
     while (true) {
-      int h = LoggerNameUtil.getSeparatorIndexOf(name, i);
+      int h = Logger.getSeparatorIndexOf(name, i);
       if (h == -1) {
         childName = name;
       } else {
@@ -163,8 +172,9 @@ public class LoggerContext extends ContextBase implements ILoggerFactory,
   /**
    * Check if the named logger exists in the hierarchy. If so return its
    * reference, otherwise returns <code>null</code>.
-   *
-   * @param name the name of the logger to search for.
+   * 
+   * @param name
+   *          the name of the logger to search for.
    */
   public Logger exists(String name) {
     return (Logger) loggerCache.get(name);
@@ -173,8 +183,8 @@ public class LoggerContext extends ContextBase implements ILoggerFactory,
   final void noAppenderDefinedWarning(final Logger logger) {
     if (noAppenderWarning++ == 0) {
       getStatusManager().add(
-              new WarnStatus("No appenders present in context [" + getName()
-                      + "] for logger [" + logger.getName() + "].", logger));
+          new WarnStatus("No appenders present in context [" + getName()
+              + "] for logger [" + logger.getName() + "].", logger));
     }
   }
 
@@ -202,9 +212,9 @@ public class LoggerContext extends ContextBase implements ILoggerFactory,
    * closes all appenders, removes any turboFilters, fires an OnReset event,
    * removes all status listeners, removes all context listeners
    * (except those which are reset resistant).
-   * <p/>
+   * <p>
    * As mentioned above, internal status messages survive resets.
-   */
+   * */
   @Override
   public void reset() {
     resetCount++;
@@ -233,7 +243,7 @@ public class LoggerContext extends ContextBase implements ILoggerFactory,
   }
 
   /**
-   * First processPriorToRemoval all registered turbo filters and then clear the registration
+   * First stop all registered turbo filters and then clear the registration
    * list.
    */
   public void resetTurboFilterList() {
@@ -244,33 +254,33 @@ public class LoggerContext extends ContextBase implements ILoggerFactory,
   }
 
   final FilterReply getTurboFilterChainDecision_0_3OrMore(final Marker marker,
-                                                          final Logger logger, final Level level, final String format,
-                                                          final Object[] params, final Throwable t) {
+      final Logger logger, final Level level, final String format,
+      final Object[] params, final Throwable t) {
     if (turboFilterList.size() == 0) {
       return FilterReply.NEUTRAL;
     }
     return turboFilterList.getTurboFilterChainDecision(marker, logger, level,
-            format, params, t);
+        format, params, t);
   }
 
   final FilterReply getTurboFilterChainDecision_1(final Marker marker,
-                                                  final Logger logger, final Level level, final String format,
-                                                  final Object param, final Throwable t) {
+      final Logger logger, final Level level, final String format,
+      final Object param, final Throwable t) {
     if (turboFilterList.size() == 0) {
       return FilterReply.NEUTRAL;
     }
     return turboFilterList.getTurboFilterChainDecision(marker, logger, level,
-            format, new Object[]{param}, t);
+        format, new Object[] { param }, t);
   }
 
   final FilterReply getTurboFilterChainDecision_2(final Marker marker,
-                                                  final Logger logger, final Level level, final String format,
-                                                  final Object param1, final Object param2, final Throwable t) {
+      final Logger logger, final Level level, final String format,
+      final Object param1, final Object param2, final Throwable t) {
     if (turboFilterList.size() == 0) {
       return FilterReply.NEUTRAL;
     }
     return turboFilterList.getTurboFilterChainDecision(marker, logger, level,
-            format, new Object[]{param1, param2}, t);
+        format, new Object[] { param1, param2 }, t);
   }
 
   // === start listeners ==============================================
@@ -327,8 +337,12 @@ public class LoggerContext extends ContextBase implements ILoggerFactory,
 
   // === end listeners ==============================================
 
+  public boolean isStarted() {
+    return started;
+  }
+
   public void start() {
-    super.start();
+    started = true;
     fireOnStart();
   }
 
@@ -336,7 +350,7 @@ public class LoggerContext extends ContextBase implements ILoggerFactory,
     reset();
     fireOnStop();
     resetAllListeners();
-    super.stop();
+    started = false;
   }
 
   @Override
@@ -351,17 +365,4 @@ public class LoggerContext extends ContextBase implements ILoggerFactory,
   public void setMaxCallerDataDepth(int maxCallerDataDepth) {
     this.maxCallerDataDepth = maxCallerDataDepth;
   }
-
-  /**
-   * List of packages considered part of the logging framework such that they are never considered
-   * as callers of the logging framework. This list used to compute the caller for logging events.
-   * <p/>
-   * To designate package "com.foo" as well as all its subpackages as being part of the logging framework, simply add
-   * "com.foo" to this list.
-   *
-   * @return list of framework packages
-   */
-  public List<String> getFrameworkPackages() {
-    return frameworkPackages;
-  }
 }
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/PatternLayout.java b/logback-classic/src/main/java/ch/qos/logback/classic/PatternLayout.java
index 70e5612..7a893c6 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/PatternLayout.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/PatternLayout.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -16,12 +16,31 @@ package ch.qos.logback.classic;
 import java.util.HashMap;
 import java.util.Map;
 
-import ch.qos.logback.classic.pattern.*;
-import ch.qos.logback.classic.pattern.color.HighlightingCompositeConverter;
+import ch.qos.logback.classic.joran.action.ContextNameAction;
+import ch.qos.logback.classic.pattern.CallerDataConverter;
+import ch.qos.logback.classic.pattern.ClassOfCallerConverter;
+import ch.qos.logback.classic.pattern.ContextNameConverter;
+import ch.qos.logback.classic.pattern.PropertyConverter;
+import ch.qos.logback.classic.pattern.DateConverter;
+import ch.qos.logback.classic.pattern.EnsureExceptionHandling;
+import ch.qos.logback.classic.pattern.ExtendedThrowableProxyConverter;
+import ch.qos.logback.classic.pattern.FileOfCallerConverter;
+import ch.qos.logback.classic.pattern.LevelConverter;
+import ch.qos.logback.classic.pattern.LineOfCallerConverter;
+import ch.qos.logback.classic.pattern.LineSeparatorConverter;
+import ch.qos.logback.classic.pattern.LoggerConverter;
+import ch.qos.logback.classic.pattern.MDCConverter;
+import ch.qos.logback.classic.pattern.MarkerConverter;
+import ch.qos.logback.classic.pattern.MessageConverter;
+import ch.qos.logback.classic.pattern.MethodOfCallerConverter;
+import ch.qos.logback.classic.pattern.NopThrowableInformationConverter;
+import ch.qos.logback.classic.pattern.RelativeTimeConverter;
+import ch.qos.logback.classic.pattern.RootCauseFirstThrowableProxyConverter;
+import ch.qos.logback.classic.pattern.ThreadConverter;
+import ch.qos.logback.classic.pattern.ThrowableProxyConverter;
 import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.CoreConstants;
 import ch.qos.logback.core.pattern.PatternLayoutBase;
-import ch.qos.logback.core.pattern.color.*;
 import ch.qos.logback.core.pattern.parser.Parser;
 
 /**
@@ -100,7 +119,7 @@ public class PatternLayout extends PatternLayoutBase<ILoggingEvent> {
     defaultConverterMap.put("nopexception",
         NopThrowableInformationConverter.class.getName());
 
-    defaultConverterMap.put("cn", ContextNameConverter.class.getName());
+    defaultConverterMap.put("cn", ContextNameAction.class.getName());
     defaultConverterMap.put("contextName", ContextNameConverter.class.getName());
     
     defaultConverterMap.put("caller", CallerDataConverter.class.getName());
@@ -109,29 +128,8 @@ public class PatternLayout extends PatternLayoutBase<ILoggingEvent> {
 
     defaultConverterMap.put("property", PropertyConverter.class.getName());
 
+    
     defaultConverterMap.put("n", LineSeparatorConverter.class.getName());
-
-    defaultConverterMap.put("black", BlackCompositeConverter.class.getName());
-    defaultConverterMap.put("red", RedCompositeConverter.class.getName());
-    defaultConverterMap.put("green", GreenCompositeConverter.class.getName());
-    defaultConverterMap.put("yellow", YellowCompositeConverter.class.getName());
-    defaultConverterMap.put("blue", BlueCompositeConverter.class.getName());
-    defaultConverterMap.put("magenta", MagentaCompositeConverter.class.getName());
-    defaultConverterMap.put("cyan", CyanCompositeConverter.class.getName());
-    defaultConverterMap.put("white", WhiteCompositeConverter.class.getName());
-    defaultConverterMap.put("gray", GrayCompositeConverter.class.getName());
-    defaultConverterMap.put("boldRed", BoldRedCompositeConverter.class.getName());
-    defaultConverterMap.put("boldGreen", BoldGreenCompositeConverter.class.getName());
-    defaultConverterMap.put("boldYellow", BoldYellowCompositeConverter.class.getName());
-    defaultConverterMap.put("boldBlue", BoldBlueCompositeConverter.class.getName());
-    defaultConverterMap.put("boldMagenta", BoldMagentaCompositeConverter.class.getName());
-    defaultConverterMap.put("boldCyan", BoldCyanCompositeConverter.class.getName());
-    defaultConverterMap.put("boldWhite", BoldWhiteCompositeConverter.class.getName());
-    defaultConverterMap.put("highlight", HighlightingCompositeConverter.class.getName());
-
-    defaultConverterMap.put("lsn", LocalSequenceNumberConverter.class.getName());
-
-
   }
 
   public PatternLayout() {
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/ViewStatusMessagesServlet.java b/logback-classic/src/main/java/ch/qos/logback/classic/ViewStatusMessagesServlet.java
index 8839126..ba5cc67 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/ViewStatusMessagesServlet.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/ViewStatusMessagesServlet.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/boolex/GEventEvaluator.java b/logback-classic/src/main/java/ch/qos/logback/classic/boolex/GEventEvaluator.java
index 0ff0631..f2996cf 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/boolex/GEventEvaluator.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/boolex/GEventEvaluator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -52,8 +52,7 @@ public class GEventEvaluator extends EventEvaluatorBase<ILoggingEvent> {
     String currentPackageName = this.getClass().getPackage().getName();
     currentPackageName = currentPackageName.replace('.', '/');
 
-    FileUtil fileUtil = new FileUtil(getContext());
-    String scriptText = fileUtil.resourceAsString(classLoader, currentPackageName + "/EvaluatorTemplate.groovy");
+    String scriptText = FileUtil.resourceAsString(this, classLoader, currentPackageName + "/EvaluatorTemplate.groovy");
     if (scriptText == null) {
       return;
     }
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/boolex/IEvaluator.java b/logback-classic/src/main/java/ch/qos/logback/classic/boolex/IEvaluator.java
index 3185506..f1b9c8b 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/boolex/IEvaluator.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/boolex/IEvaluator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/boolex/JaninoEventEvaluator.java b/logback-classic/src/main/java/ch/qos/logback/classic/boolex/JaninoEventEvaluator.java
index 78fd338..6d61d58 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/boolex/JaninoEventEvaluator.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/boolex/JaninoEventEvaluator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/boolex/OnErrorEvaluator.java b/logback-classic/src/main/java/ch/qos/logback/classic/boolex/OnErrorEvaluator.java
index 8d9cdba..8bb6a52 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/boolex/OnErrorEvaluator.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/boolex/OnErrorEvaluator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/boolex/OnMarkerEvaluator.java b/logback-classic/src/main/java/ch/qos/logback/classic/boolex/OnMarkerEvaluator.java
index b04b980..71248db 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/boolex/OnMarkerEvaluator.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/boolex/OnMarkerEvaluator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/db/DBAppender.java b/logback-classic/src/main/java/ch/qos/logback/classic/db/DBAppender.java
index 4c758e1..d2f796f 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/db/DBAppender.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/db/DBAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,29 +13,31 @@
  */
 package ch.qos.logback.classic.db;
 
-import static ch.qos.logback.core.db.DBHelper.closeStatement;
-
 import java.lang.reflect.Method;
 import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.SQLException;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
 
 import ch.qos.logback.classic.db.names.DBNameResolver;
 import ch.qos.logback.classic.db.names.DefaultDBNameResolver;
-import ch.qos.logback.classic.spi.*;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.classic.spi.IThrowableProxy;
+import ch.qos.logback.classic.spi.StackTraceElementProxy;
+import ch.qos.logback.classic.spi.ThrowableProxyUtil;
 import ch.qos.logback.core.CoreConstants;
 import ch.qos.logback.core.db.DBAppenderBase;
 
 /**
  * The DBAppender inserts logging events into three database tables in a format
  * independent of the Java programming language.
- *
+ * 
  * For more information about this appender, please refer to the online manual
  * at http://logback.qos.ch/manual/appenders.html#DBAppender
- *
+ * 
  * @author Ceki Gülcü
  * @author Ray DeCampo
  * @author Sébastien Pennec
@@ -63,9 +65,7 @@ public class DBAppender extends DBAppenderBase<ILoggingEvent> {
   static final int  CALLER_METHOD_INDEX = 13;
   static final int  CALLER_LINE_INDEX = 14;
   static final int  EVENT_ID_INDEX  = 15;
-
-  static final StackTraceElement EMPTY_CALLER_DATA = CallerData.naInstance();
-
+  
   static {
     // PreparedStatement.getGeneratedKeys() method was added in JDK 1.4
     Method getGeneratedKeysMethod;
@@ -99,7 +99,7 @@ public class DBAppender extends DBAppenderBase<ILoggingEvent> {
 
     bindLoggingEventWithInsertStatement(insertStatement, event);
     bindLoggingEventArgumentsWithPreparedStatement(insertStatement, event.getArgumentArray());
-
+    
     // This is expensive... should we do it every time?
     bindCallerDataWithPreparedStatement(insertStatement, event.getCallerData());
 
@@ -108,7 +108,7 @@ public class DBAppender extends DBAppenderBase<ILoggingEvent> {
       addWarn("Failed to insert loggingEvent");
     }
   }
-
+  
   protected void secondarySubAppend(ILoggingEvent event, Connection connection,
       long eventId) throws Throwable {
     Map<String, String> mergedMap = mergePropertyMaps(event);
@@ -131,9 +131,9 @@ public class DBAppender extends DBAppenderBase<ILoggingEvent> {
 
   void bindLoggingEventArgumentsWithPreparedStatement(PreparedStatement stmt,
       Object[] argArray) throws SQLException {
-
+    
     int arrayLen = argArray != null ? argArray.length : 0;
-
+    
     for(int i = 0; i < arrayLen && i < 4; i++) {
       stmt.setString(ARG0_INDEX+i, asStringTruncatedTo254(argArray[i]));
     }
@@ -159,27 +159,16 @@ public class DBAppender extends DBAppenderBase<ILoggingEvent> {
       return s.substring(0, 254);
     }
   }
-
+  
   void bindCallerDataWithPreparedStatement(PreparedStatement stmt,
       StackTraceElement[] callerDataArray) throws SQLException {
-
-    StackTraceElement caller = extractFirstCaller(callerDataArray);
-
-    stmt.setString(CALLER_FILENAME_INDEX, caller.getFileName());
-    stmt.setString(CALLER_CLASS_INDEX, caller.getClassName());
-    stmt.setString(CALLER_METHOD_INDEX, caller.getMethodName());
-    stmt.setString(CALLER_LINE_INDEX, Integer.toString(caller.getLineNumber()));
-  }
-
-  private StackTraceElement extractFirstCaller(StackTraceElement[] callerDataArray) {
-    StackTraceElement caller = EMPTY_CALLER_DATA;
-    if(hasAtLeastOneNonNullElement(callerDataArray))
-      caller = callerDataArray[0];
-    return caller;
-  }
-
-  private boolean hasAtLeastOneNonNullElement(StackTraceElement[] callerDataArray) {
-    return callerDataArray != null && callerDataArray.length > 0 && callerDataArray[0] != null;
+    StackTraceElement callerData = callerDataArray[0];
+    if (callerData != null) {
+      stmt.setString(CALLER_FILENAME_INDEX, callerData.getFileName());
+      stmt.setString(CALLER_CLASS_INDEX, callerData.getClassName());
+      stmt.setString(CALLER_METHOD_INDEX, callerData.getMethodName());
+      stmt.setString(CALLER_LINE_INDEX, Integer.toString(callerData.getLineNumber()));
+    }
   }
 
   Map<String, String> mergePropertyMaps(ILoggingEvent event) {
@@ -212,33 +201,31 @@ public class DBAppender extends DBAppenderBase<ILoggingEvent> {
 
   protected void insertProperties(Map<String, String> mergedMap,
       Connection connection, long eventId) throws SQLException {
-    Set<String> propertiesKeys = mergedMap.keySet();
+    Set propertiesKeys = mergedMap.keySet();
     if (propertiesKeys.size() > 0) {
-      PreparedStatement insertPropertiesStatement = null;
-      try {
-        insertPropertiesStatement = connection
+      PreparedStatement insertPropertiesStatement = connection
           .prepareStatement(insertPropertiesSQL);
 
-        for (String key : propertiesKeys) {
-          String value = mergedMap.get(key);
+      for (Iterator i = propertiesKeys.iterator(); i.hasNext();) {
+        String key = (String) i.next();
+        String value = (String) mergedMap.get(key);
 
-          insertPropertiesStatement.setLong(1, eventId);
-          insertPropertiesStatement.setString(2, key);
-          insertPropertiesStatement.setString(3, value);
-
-          if (cnxSupportsBatchUpdates) {
-            insertPropertiesStatement.addBatch();
-          } else {
-            insertPropertiesStatement.execute();
-          }
-        }
+        insertPropertiesStatement.setLong(1, eventId);
+        insertPropertiesStatement.setString(2, key);
+        insertPropertiesStatement.setString(3, value);
 
         if (cnxSupportsBatchUpdates) {
-          insertPropertiesStatement.executeBatch();
+          insertPropertiesStatement.addBatch();
+        } else {
+          insertPropertiesStatement.execute();
         }
-      } finally {
-        closeStatement(insertPropertiesStatement);
       }
+
+      if (cnxSupportsBatchUpdates) {
+        insertPropertiesStatement.executeBatch();
+      }
+
+      insertPropertiesStatement.close();
     }
   }
 
@@ -291,23 +278,19 @@ public class DBAppender extends DBAppenderBase<ILoggingEvent> {
   protected void insertThrowable(IThrowableProxy tp, Connection connection,
       long eventId) throws SQLException {
 
-    PreparedStatement exceptionStatement = null;
-    try {
-      exceptionStatement = connection.prepareStatement(insertExceptionSQL);
-
-      short baseIndex = 0;
-      while (tp != null) {
-        baseIndex = buildExceptionStatement(tp, baseIndex, exceptionStatement,
-            eventId);
-        tp = tp.getCause();
-      }
+    PreparedStatement exceptionStatement = connection
+        .prepareStatement(insertExceptionSQL);
 
-      if (cnxSupportsBatchUpdates) {
-        exceptionStatement.executeBatch();
-      }
-    } finally {
-      closeStatement(exceptionStatement);
+    short baseIndex = 0;
+    while (tp != null) {
+      baseIndex = buildExceptionStatement(tp, baseIndex, exceptionStatement,
+          eventId);
+      tp = tp.getCause();
     }
 
+    if (cnxSupportsBatchUpdates) {
+      exceptionStatement.executeBatch();
+    }
+    exceptionStatement.close();
   }
 }
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/db/DBHelper.java b/logback-classic/src/main/java/ch/qos/logback/classic/db/DBHelper.java
index 16a9b1a..c233c2f 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/db/DBHelper.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/db/DBHelper.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -21,8 +21,8 @@ import ch.qos.logback.classic.spi.ILoggingEvent;
  */
 public class DBHelper {
 
-  public static final short PROPERTIES_EXIST = 0x01;
-  public static final short EXCEPTION_EXISTS = 0x02;
+  public static short PROPERTIES_EXIST = 0x01;
+  public static short EXCEPTION_EXISTS = 0x02;
 
   public static short computeReferenceMask(ILoggingEvent event) {
     short mask = 0;
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/db/SQLBuilder.java b/logback-classic/src/main/java/ch/qos/logback/classic/db/SQLBuilder.java
index 87ca709..df734e3 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/db/SQLBuilder.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/db/SQLBuilder.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/db/names/ColumnName.java b/logback-classic/src/main/java/ch/qos/logback/classic/db/names/ColumnName.java
index 8fb96c3..52cf570 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/db/names/ColumnName.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/db/names/ColumnName.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/db/names/DBNameResolver.java b/logback-classic/src/main/java/ch/qos/logback/classic/db/names/DBNameResolver.java
index e39a71b..dcad1a1 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/db/names/DBNameResolver.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/db/names/DBNameResolver.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/db/names/DefaultDBNameResolver.java b/logback-classic/src/main/java/ch/qos/logback/classic/db/names/DefaultDBNameResolver.java
index ddb097f..48a5d25 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/db/names/DefaultDBNameResolver.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/db/names/DefaultDBNameResolver.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/db/names/SimpleDBNameResolver.java b/logback-classic/src/main/java/ch/qos/logback/classic/db/names/SimpleDBNameResolver.java
index 70e9fb0..7b539ca 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/db/names/SimpleDBNameResolver.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/db/names/SimpleDBNameResolver.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/db/names/TableName.java b/logback-classic/src/main/java/ch/qos/logback/classic/db/names/TableName.java
index 5d145a5..076c6d9 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/db/names/TableName.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/db/names/TableName.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/encoder/PatternLayoutEncoder.java b/logback-classic/src/main/java/ch/qos/logback/classic/encoder/PatternLayoutEncoder.java
index 8934329..9186130 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/encoder/PatternLayoutEncoder.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/encoder/PatternLayoutEncoder.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/filter/LevelFilter.java b/logback-classic/src/main/java/ch/qos/logback/classic/filter/LevelFilter.java
index a013864..7049a38 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/filter/LevelFilter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/filter/LevelFilter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/filter/ThresholdFilter.java b/logback-classic/src/main/java/ch/qos/logback/classic/filter/ThresholdFilter.java
index 1386f58..037942d 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/filter/ThresholdFilter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/filter/ThresholdFilter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/gaffer/GafferUtil.java b/logback-classic/src/main/java/ch/qos/logback/classic/gaffer/GafferUtil.java
index c96f0ce..3231842 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/gaffer/GafferUtil.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/gaffer/GafferUtil.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/helpers/MDCInsertingServletFilter.java b/logback-classic/src/main/java/ch/qos/logback/classic/helpers/MDCInsertingServletFilter.java
index 388a504..ed1aed9 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/helpers/MDCInsertingServletFilter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/helpers/MDCInsertingServletFilter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/html/DefaultCssBuilder.java b/logback-classic/src/main/java/ch/qos/logback/classic/html/DefaultCssBuilder.java
index b230204..9316ac3 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/html/DefaultCssBuilder.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/html/DefaultCssBuilder.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/html/DefaultThrowableRenderer.java b/logback-classic/src/main/java/ch/qos/logback/classic/html/DefaultThrowableRenderer.java
index 1adf5f0..b3ef84e 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/html/DefaultThrowableRenderer.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/html/DefaultThrowableRenderer.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -50,7 +50,7 @@ public class DefaultThrowableRenderer implements
     
     if (commonFrames > 0) {
       sbuf.append(TRACE_PREFIX);
-      sbuf.append("\t... ").append(commonFrames).append(" common frames omitted")
+      sbuf.append("\t... " + commonFrames).append(" common frames omitted")
           .append(CoreConstants.LINE_SEPARATOR);
     }
   }
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/html/HTMLLayout.java b/logback-classic/src/main/java/ch/qos/logback/classic/html/HTMLLayout.java
index cbfdd74..8fb09cf 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/html/HTMLLayout.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/html/HTMLLayout.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/html/UrlCssBuilder.java b/logback-classic/src/main/java/ch/qos/logback/classic/html/UrlCssBuilder.java
index c20c0bb..68118bf 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/html/UrlCssBuilder.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/html/UrlCssBuilder.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/jmx/JMXConfigurator.java b/logback-classic/src/main/java/ch/qos/logback/classic/jmx/JMXConfigurator.java
index 137d721..e0e2d81 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/jmx/JMXConfigurator.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/jmx/JMXConfigurator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/jmx/JMXConfiguratorMBean.java b/logback-classic/src/main/java/ch/qos/logback/classic/jmx/JMXConfiguratorMBean.java
index fec9e5b..7fa46f7 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/jmx/JMXConfiguratorMBean.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/jmx/JMXConfiguratorMBean.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/jmx/MBeanUtil.java b/logback-classic/src/main/java/ch/qos/logback/classic/jmx/MBeanUtil.java
index 7b698fa..9acf1b3 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/jmx/MBeanUtil.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/jmx/MBeanUtil.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -36,14 +36,13 @@ public class MBeanUtil {
       String objectNameAsStr) {
     String msg = "Failed to convert [" + objectNameAsStr + "] to ObjectName";
 
-    StatusUtil statusUtil = new StatusUtil(context);
     try {
       return new ObjectName(objectNameAsStr);
     } catch (MalformedObjectNameException e) {
-      statusUtil.addError(caller, msg, e);
+      StatusUtil.addError(context, caller, msg, e);
       return null;
     } catch (NullPointerException e) {
-      statusUtil.addError(caller, msg, e);
+      StatusUtil.addError(context, caller, msg, e);
       return null;
     }
   }
@@ -58,31 +57,28 @@ public class MBeanUtil {
     try {
       mbs.registerMBean(jmxConfigurator, objectName);
     } catch (Exception e) {
-      StatusUtil statusUtil = new StatusUtil(loggerContext);
-      statusUtil.addError(caller, "Failed to create mbean", e);
+      StatusUtil.addError(loggerContext, caller, "Failed to create mbean", e);
     }
   }
 
   public static void unregister(LoggerContext loggerContext, MBeanServer mbs,
       ObjectName objectName, Object caller) {
-
-    StatusUtil statusUtil = new StatusUtil(loggerContext);
     if (mbs.isRegistered(objectName)) {
       try {
-        statusUtil.addInfo(caller, "Unregistering mbean ["
+        StatusUtil.addInfo(loggerContext, caller, "Unregistering mbean ["
             + objectName + "]");
         mbs.unregisterMBean(objectName);
       } catch (InstanceNotFoundException e) {
         // this is theoretically impossible
-        statusUtil.addError(caller, "Failed to unregister mbean"
+        StatusUtil.addError(loggerContext, caller, "Failed to unregister mbean"
             + objectName, e);
       } catch (MBeanRegistrationException e) {
         // this is theoretically impossible
-        statusUtil.addError(caller, "Failed to unregister mbean"
+        StatusUtil.addError(loggerContext, caller, "Failed to unregister mbean"
             + objectName, e);
       }
     } else {
-      statusUtil.addInfo(caller, "mbean [" + objectName
+      StatusUtil.addInfo(loggerContext, caller, "mbean [" + objectName
           + "] does not seem to be registered");
     }
   }
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/joran/JoranConfigurator.java b/logback-classic/src/main/java/ch/qos/logback/classic/joran/JoranConfigurator.java
index 45391eb..7f2db4d 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/joran/JoranConfigurator.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/joran/JoranConfigurator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -25,11 +25,11 @@ import ch.qos.logback.core.joran.conditional.ElseAction;
 import ch.qos.logback.core.joran.conditional.IfAction;
 import ch.qos.logback.core.joran.conditional.ThenAction;
 import ch.qos.logback.core.joran.spi.DefaultNestedComponentRegistry;
-import ch.qos.logback.core.joran.spi.ElementSelector;
+import ch.qos.logback.core.joran.spi.Pattern;
 import ch.qos.logback.core.joran.spi.RuleStore;
 
 /**
- * JoranConfigurator class adds rules specific to logback-classic.
+ * This JoranConfiguratorclass adds rules specific to logback-classic.
  *
  * @author Ceki Gülcü
  */
@@ -40,51 +40,47 @@ public class JoranConfigurator extends JoranConfiguratorBase {
     // parent rules already added
     super.addInstanceRules(rs);
 
-    rs.addRule(new ElementSelector("configuration"), new ConfigurationAction());
+    rs.addRule(new Pattern("configuration"), new ConfigurationAction());
 
-    rs.addRule(new ElementSelector("configuration/contextName"),
+    rs.addRule(new Pattern("configuration/contextName"),
         new ContextNameAction());
-      rs.addRule(new ElementSelector("configuration/contextListener"),
+      rs.addRule(new Pattern("configuration/contextListener"),
         new LoggerContextListenerAction());
-    rs.addRule(new ElementSelector("configuration/insertFromJNDI"),
+    rs.addRule(new Pattern("configuration/insertFromJNDI"),
         new InsertFromJNDIAction());
-    rs.addRule(new ElementSelector("configuration/evaluator"), new EvaluatorAction());
+    rs.addRule(new Pattern("configuration/evaluator"), new EvaluatorAction());
 
-    rs.addRule(new ElementSelector("configuration/appender/sift"), new SiftAction());
-    rs.addRule(new ElementSelector("configuration/appender/sift/*"), new NOPAction());
+    rs.addRule(new Pattern("configuration/appender/sift"), new SiftAction());
+    rs.addRule(new Pattern("configuration/appender/sift/*"), new NOPAction());
 
-    rs.addRule(new ElementSelector("configuration/logger"), new LoggerAction());
-    rs.addRule(new ElementSelector("configuration/logger/level"), new LevelAction());
+    rs.addRule(new Pattern("configuration/logger"), new LoggerAction());
+    rs.addRule(new Pattern("configuration/logger/level"), new LevelAction());
 
-    rs.addRule(new ElementSelector("configuration/root"), new RootLoggerAction());
-    rs.addRule(new ElementSelector("configuration/root/level"), new LevelAction());
-    rs.addRule(new ElementSelector("configuration/logger/appender-ref"),
+    rs.addRule(new Pattern("configuration/root"), new RootLoggerAction());
+    rs.addRule(new Pattern("configuration/root/level"), new LevelAction());
+    rs.addRule(new Pattern("configuration/logger/appender-ref"),
         new AppenderRefAction());
-    rs.addRule(new ElementSelector("configuration/root/appender-ref"),
+    rs.addRule(new Pattern("configuration/root/appender-ref"),
         new AppenderRefAction());
     
     // add if-then-else support
-    rs.addRule(new ElementSelector("*/if"), new IfAction());
-    rs.addRule(new ElementSelector("*/if/then"), new ThenAction());
-    rs.addRule(new ElementSelector("*/if/then/*"), new NOPAction());
-    rs.addRule(new ElementSelector("*/if/else"), new ElseAction());
-    rs.addRule(new ElementSelector("*/if/else/*"), new NOPAction());
+    rs.addRule(new Pattern("*/if"), new IfAction());
+    rs.addRule(new Pattern("*/if/then"), new ThenAction());
+    rs.addRule(new Pattern("*/if/then/*"), new NOPAction());
+    rs.addRule(new Pattern("*/if/else"), new ElseAction());
+    rs.addRule(new Pattern("*/if/else/*"), new NOPAction());   
     
     // add jmxConfigurator only if we have JMX available.
     // If running under JDK 1.4 (retrotranslateed logback) then we
     // might not have JMX.
     if (PlatformInfo.hasJMXObjectName()) {
-      rs.addRule(new ElementSelector("configuration/jmxConfigurator"),
+      rs.addRule(new Pattern("configuration/jmxConfigurator"),
           new JMXConfiguratorAction());
     }
-    rs.addRule(new ElementSelector("configuration/include"), new IncludeAction());
+    rs.addRule(new Pattern("configuration/include"), new IncludeAction());
 
-    rs.addRule(new ElementSelector("configuration/consolePlugin"),
+    rs.addRule(new Pattern("configuration/consolePlugin"),
         new ConsolePluginAction());
-    
-    rs.addRule(new ElementSelector("configuration/receiver"),
-        new ReceiverAction());
-    
   }
 
   @Override
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/ConfigurationAction.java b/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/ConfigurationAction.java
index bac01f8..504cd1d 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/ConfigurationAction.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/ConfigurationAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,7 +13,6 @@
  */
 package ch.qos.logback.classic.joran.action;
 
-import ch.qos.logback.classic.util.EnvUtil;
 import ch.qos.logback.core.status.OnConsoleStatusListener;
 import org.xml.sax.Attributes;
 
@@ -24,6 +23,7 @@ import ch.qos.logback.core.joran.spi.InterpretationContext;
 import ch.qos.logback.core.util.ContextUtil;
 import ch.qos.logback.core.util.Duration;
 import ch.qos.logback.core.util.OptionHelper;
+import ch.qos.logback.core.util.StatusPrinter;
 
 public class ConfigurationAction extends Action {
   static final String INTERNAL_DEBUG_ATTR = "debug";
@@ -33,15 +33,15 @@ public class ConfigurationAction extends Action {
 
   long threshold = 0;
 
-  public void begin(InterpretationContext ic, String name, Attributes attributes) {
+  public void begin(InterpretationContext ec, String name, Attributes attributes) {
     threshold = System.currentTimeMillis();
 
-    // See LOGBACK-527 (the system property is looked up first. Thus, it overrides
+    // See LBCLASSIC-225 (the system property is looked up first. Thus, it overrides
     // the equivalent property in the config file. This reversal of scope priority is justified
     // by the use case: the admin trying to chase rogue config file
-    String debugAttrib = getSystemProperty(DEBUG_SYSTEM_PROPERTY_KEY);
+    String debugAttrib = System.getProperty(DEBUG_SYSTEM_PROPERTY_KEY);
     if (debugAttrib == null) {
-      debugAttrib = ic.subst(attributes.getValue(INTERNAL_DEBUG_ATTR));
+      debugAttrib = ec.subst(attributes.getValue(INTERNAL_DEBUG_ATTR));
     }
 
     if (OptionHelper.isEmpty(debugAttrib) || debugAttrib.equalsIgnoreCase("false")
@@ -51,40 +51,22 @@ public class ConfigurationAction extends Action {
       OnConsoleStatusListener.addNewInstanceToContext(context);
     }
 
-    processScanAttrib(ic, attributes);
+    processScanAttrib(attributes);
 
-    ContextUtil contextUtil = new ContextUtil(context);
-    contextUtil.addHostNameAsProperty();
-
-    if(EnvUtil.isGroovyAvailable()) {
-      LoggerContext lc = (LoggerContext) context;
-      contextUtil.addGroovyPackages(lc.getFrameworkPackages());
-    }
+    new ContextUtil(context).addHostNameAsProperty();
 
     // the context is turbo filter attachable, so it is pushed on top of the
     // stack
-    ic.pushObject(getContext());
-  }
-
-  String getSystemProperty(String name) {
-    /*
-     * LOGBACK-743: accessing a system property in the presence of a
-     * SecurityManager (e.g. applet sandbox) can result in a SecurityException.
-     */
-    try {
-      return System.getProperty(name);
-    } catch (SecurityException ex) {
-      return null;
-    }
+    ec.pushObject(getContext());
   }
 
-  void processScanAttrib(InterpretationContext ic, Attributes attributes) {
-    String scanAttrib = ic.subst(attributes.getValue(SCAN_ATTR));
+  void processScanAttrib(Attributes attributes) {
+    String scanAttrib = attributes.getValue(SCAN_ATTR);
     if (!OptionHelper.isEmpty(scanAttrib)
             && !"false".equalsIgnoreCase(scanAttrib)) {
       ReconfigureOnChangeFilter rocf = new ReconfigureOnChangeFilter();
       rocf.setContext(context);
-      String scanPeriodAttrib = ic.subst(attributes.getValue(SCAN_PERIOD_ATTR));
+      String scanPeriodAttrib = attributes.getValue(SCAN_PERIOD_ATTR);
       if (!OptionHelper.isEmpty(scanPeriodAttrib)) {
         try {
           Duration duration = Duration.valueOf(scanPeriodAttrib);
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/ConsolePluginAction.java b/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/ConsolePluginAction.java
index 5e4bec0..de01225 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/ConsolePluginAction.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/ConsolePluginAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/ContextNameAction.java b/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/ContextNameAction.java
index 63d85a1..c78c0ff 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/ContextNameAction.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/ContextNameAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/EvaluatorAction.java b/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/EvaluatorAction.java
index df9bb30..b464269 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/EvaluatorAction.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/EvaluatorAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/InsertFromJNDIAction.java b/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/InsertFromJNDIAction.java
index 3e86101..50b3266 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/InsertFromJNDIAction.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/InsertFromJNDIAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -20,8 +20,6 @@ import org.xml.sax.Attributes;
 
 import ch.qos.logback.classic.util.JNDIUtil;
 import ch.qos.logback.core.joran.action.Action;
-import ch.qos.logback.core.joran.action.ActionUtil;
-import ch.qos.logback.core.joran.action.ActionUtil.Scope;
 import ch.qos.logback.core.joran.spi.InterpretationContext;
 import ch.qos.logback.core.util.OptionHelper;
 
@@ -33,18 +31,14 @@ import ch.qos.logback.core.util.OptionHelper;
  */
 public class InsertFromJNDIAction extends Action {
 
-  public static final String ENV_ENTRY_NAME_ATTR="env-entry-name";
-  public static final String AS_ATTR="as";
+  public static String ENV_ENTRY_NAME_ATTR="env-entry-name";
+  public static String AS_ATTR="as";
   
   public void begin(InterpretationContext ec, String name, Attributes attributes) {
 
     int errorCount = 0;
-    String envEntryName = ec.subst(attributes.getValue(ENV_ENTRY_NAME_ATTR));
-    String asKey = ec.subst(attributes.getValue(AS_ATTR));
-
-    String scopeStr = attributes.getValue(SCOPE_ATTRIBUTE);
-    Scope scope = ActionUtil.stringToScope(scopeStr);
-
+    String envEntryName = attributes.getValue(ENV_ENTRY_NAME_ATTR);
+    String asName = attributes.getValue(AS_ATTR);
     String envEntryValue;
     
     if(OptionHelper.isEmpty(envEntryName)) {
@@ -53,7 +47,7 @@ public class InsertFromJNDIAction extends Action {
       errorCount++;
     }
     
-    if(OptionHelper.isEmpty(asKey)) {
+    if(OptionHelper.isEmpty(asName)) {
       String lineColStr = getLineColStr(ec);
       addError("["+AS_ATTR+"] missing, around "+lineColStr);
       errorCount++;
@@ -69,8 +63,8 @@ public class InsertFromJNDIAction extends Action {
       if(OptionHelper.isEmpty(envEntryValue)) {
         addError("["+envEntryName+"] has null or empty value");
       } else {
-        addInfo("Setting variable ["+asKey+"] to ["+envEntryValue+"] in ["+scope+"] scope");
-        ActionUtil.setProperty(ec, asKey, envEntryValue, scope);
+        addInfo("Setting context variable ["+asName+"] to ["+envEntryValue+"]");
+        context.putProperty(asName, envEntryValue);
       }
     } catch (NamingException e) {
       addError("Failed to lookup JNDI env-entry ["+envEntryName+"]");
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/JMXConfiguratorAction.java b/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/JMXConfiguratorAction.java
index 121e97c..abc90aa 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/JMXConfiguratorAction.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/JMXConfiguratorAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/LevelAction.java b/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/LevelAction.java
index 30a43b2..507075f 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/LevelAction.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/LevelAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/LoggerAction.java b/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/LoggerAction.java
index 6e08b21..e07ff4c 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/LoggerAction.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/LoggerAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/LoggerContextListenerAction.java b/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/LoggerContextListenerAction.java
index a070eb4..06f3cc8 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/LoggerContextListenerAction.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/LoggerContextListenerAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/ReceiverAction.java b/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/ReceiverAction.java
deleted file mode 100644
index 8b1b809..0000000
--- a/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/ReceiverAction.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.joran.action;
-
-import org.xml.sax.Attributes;
-
-import ch.qos.logback.classic.net.ReceiverBase;
-import ch.qos.logback.classic.net.SocketReceiver;
-import ch.qos.logback.core.joran.action.Action;
-import ch.qos.logback.core.joran.spi.ActionException;
-import ch.qos.logback.core.joran.spi.InterpretationContext;
-import ch.qos.logback.core.util.OptionHelper;
-
-/**
- * A Joran {@link Action} for a {@link SocketReceiver} configuration.
- *
- * @author Carl Harris
- */
-public class ReceiverAction extends Action {
-
-  private ReceiverBase receiver;
-  private boolean inError;
-  
-  @Override
-  public void begin(InterpretationContext ic, String name,
-      Attributes attributes) throws ActionException {
-    
-    String className = attributes.getValue(CLASS_ATTRIBUTE);
-    if (OptionHelper.isEmpty(className)) {
-      addError("Missing class name for receiver. Near [" + name
-          + "] line " + getLineNumber(ic));
-      inError = true;
-      return;
-    }
-
-    try {
-      addInfo("About to instantiate receiver of type [" + className + "]");
-
-      receiver = (ReceiverBase) OptionHelper.instantiateByClassName(
-          className, ReceiverBase.class, context);
-      receiver.setContext(context);
-      
-      ic.pushObject(receiver);
-    }
-    catch (Exception ex) {
-      inError = true;
-      addError("Could not create a receiver of type [" + className + "].", ex);
-      throw new ActionException(ex);
-    }
-  }
-
-  @Override
-  public void end(InterpretationContext ic, String name)
-      throws ActionException {
-    
-    if (inError) return;
-    
-    ic.getContext().register(receiver);
-    receiver.start();
-    
-    Object o = ic.peekObject();
-    if (o != receiver) {
-      addWarn("The object at the of the stack is not the remote " +
-      		"pushed earlier.");
-    } else {
-      ic.popObject();
-    }
-  }
-
-}
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/RootLoggerAction.java b/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/RootLoggerAction.java
index eaabecf..f3a00d8 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/RootLoggerAction.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/RootLoggerAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/jul/JULHelper.java b/logback-classic/src/main/java/ch/qos/logback/classic/jul/JULHelper.java
index 9c9c7b1..cfc8fdd 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/jul/JULHelper.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/jul/JULHelper.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -32,9 +32,6 @@ public class JULHelper {
   }
 
   static public java.util.logging.Level asJULLevel(Level lbLevel) {
-    if (lbLevel == null)
-      throw new IllegalArgumentException("Unexpected level [null]");
-
     switch (lbLevel.levelInt) {
       case Level.ALL_INT:
         return java.util.logging.Level.ALL;
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/jul/LevelChangePropagator.java b/logback-classic/src/main/java/ch/qos/logback/classic/jul/LevelChangePropagator.java
index d37d727..b11d1d5 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/jul/LevelChangePropagator.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/jul/LevelChangePropagator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/log4j/XMLLayout.java b/logback-classic/src/main/java/ch/qos/logback/classic/log4j/XMLLayout.java
index 1873d71..9293eb7 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/log4j/XMLLayout.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/log4j/XMLLayout.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSQueueAppender.java b/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSQueueAppender.java
index 8b37fc2..21e9d90 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSQueueAppender.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSQueueAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSQueueSink.java b/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSQueueSink.java
index 460290e..9aec550 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSQueueSink.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSQueueSink.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSTopicAppender.java b/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSTopicAppender.java
index 7f0da08..ca209a6 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSTopicAppender.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSTopicAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSTopicSink.java b/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSTopicSink.java
index 76e4623..d7ece96 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSTopicSink.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSTopicSink.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/net/LoggingEventPreSerializationTransformer.java b/logback-classic/src/main/java/ch/qos/logback/classic/net/LoggingEventPreSerializationTransformer.java
index eabd3fd..fd9c305 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/net/LoggingEventPreSerializationTransformer.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/net/LoggingEventPreSerializationTransformer.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/net/ReceiverBase.java b/logback-classic/src/main/java/ch/qos/logback/classic/net/ReceiverBase.java
deleted file mode 100644
index 4c9ee30..0000000
--- a/logback-classic/src/main/java/ch/qos/logback/classic/net/ReceiverBase.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.net;
-
-import ch.qos.logback.core.spi.ContextAwareBase;
-import ch.qos.logback.core.spi.LifeCycle;
-
-/**
- * An abstract base for components that receive logging events from a remote
- * peer and log according to local policy
- *
- * @author Carl Harris
- */
-public abstract class ReceiverBase extends ContextAwareBase 
-    implements LifeCycle {
-
-  private boolean started;
-  
-  /**
-   * {@inheritDoc}
-   */
-  public final void start() {
-    if (isStarted()) return;
-    if (getContext() == null) {
-      throw new IllegalStateException("context not set");
-    }
-    if (shouldStart()) {
-      getContext().getExecutorService().execute(getRunnableTask());
-      started = true;
-    }
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public final void stop() {
-    if (!isStarted()) return;
-    try {
-      onStop();
-    }
-    catch (RuntimeException ex) {
-      addError("on stop: " + ex, ex);
-    }
-    started = false;
-  }
-  
-  /**
-   * {@inheritDoc}
-   */
-  public final boolean isStarted() {
-    return started;
-  }
-
-  /**
-   * Determines whether this receiver should start.
-   * <p>
-   * Subclasses will implement this method to do any subclass-specific
-   * validation.  The subclass's {@link #getRunnableTask()} method will be 
-   * invoked (and the task returned will be submitted to the executor)
-   * if and only if this method returns {@code true} 
-   * @return flag indicating whether this receiver should start
-   */
-  protected abstract boolean shouldStart();
-  
-  /**
-   * Allows a subclass to participate in receiver shutdown.
-   */
-  protected abstract void onStop();
-  
-  /**
-   * Provides the runnable task this receiver will execute.
-   * @return runnable task
-   */
-  protected abstract Runnable getRunnableTask();
-  
-}
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/net/SMTPAppender.java b/logback-classic/src/main/java/ch/qos/logback/classic/net/SMTPAppender.java
index 4ad8293..bde31cd 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/net/SMTPAppender.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/net/SMTPAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -40,9 +40,7 @@ public class SMTPAppender extends SMTPAppenderBase<ILoggingEvent> {
   static final String DEFAULT_SUBJECT_PATTERN = "%logger{20} - %m";
   
   private int bufferSize = 512;
-  private boolean includeCallerData = false;
-
-
+  //protected CyclicBuffer<ILoggingEvent> cb = new CyclicBuffer<ILoggingEvent>(bufferSize);
 
   /**
    * The default constructor will instantiate the appender with a
@@ -77,9 +75,6 @@ public class SMTPAppender extends SMTPAppenderBase<ILoggingEvent> {
    * a cyclic buffer.
    */
   protected void subAppend(CyclicBuffer<ILoggingEvent> cb, ILoggingEvent event) {
-    if(includeCallerData) {
-      event.getCallerData();
-    }
     event.prepareForDeferredProcessing();
     cb.add(event);
   }
@@ -93,7 +88,7 @@ public class SMTPAppender extends SMTPAppenderBase<ILoggingEvent> {
     }
   }
 
-  protected boolean eventMarksEndOfLife(ILoggingEvent eventObject) {
+  protected boolean isEventMarkedForBufferRemoval(ILoggingEvent eventObject) {
     Marker marker = eventObject.getMarker();
     if(marker == null)
       return false;
@@ -124,12 +119,4 @@ public class SMTPAppender extends SMTPAppenderBase<ILoggingEvent> {
     pl.setPattern(toPattern+"%nopex");
     return pl;
   }
-
-  public boolean isIncludeCallerData() {
-    return includeCallerData;
-  }
-
-  public void setIncludeCallerData(boolean includeCallerData) {
-    this.includeCallerData = includeCallerData;
-  }
 }
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/net/SSLSocketAppender.java b/logback-classic/src/main/java/ch/qos/logback/classic/net/SSLSocketAppender.java
deleted file mode 100644
index 552b83f..0000000
--- a/logback-classic/src/main/java/ch/qos/logback/classic/net/SSLSocketAppender.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.net;
-
-import java.net.InetAddress;
-
-import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.core.net.AbstractSSLSocketAppender;
-import ch.qos.logback.core.spi.PreSerializationTransformer;
-
-/**
- * A {@link SocketAppender} that supports SSL.
- * <p>
- * For more information on this appender, please refer to the online manual
- * at http://logback.qos.ch/manual/appenders.html#SSLSocketAppender
- * 
- * @author Carl Harris
- */
-public class SSLSocketAppender extends AbstractSSLSocketAppender<ILoggingEvent> {
-
-  private final PreSerializationTransformer<ILoggingEvent> pst = 
-      new LoggingEventPreSerializationTransformer();
-
-  private boolean includeCallerData;
-  
-  public SSLSocketAppender() {
-  }
-
-  @Override
-  protected void postProcessEvent(ILoggingEvent event) {
-    if (includeCallerData) {
-      event.getCallerData();
-    }
-  }
-
-  public void setIncludeCallerData(boolean includeCallerData) {
-    this.includeCallerData = includeCallerData;
-  }
-  
-  public PreSerializationTransformer<ILoggingEvent> getPST() {
-    return pst;
-  }
-   
-}
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/net/SSLSocketReceiver.java b/logback-classic/src/main/java/ch/qos/logback/classic/net/SSLSocketReceiver.java
deleted file mode 100644
index 425725e..0000000
--- a/logback-classic/src/main/java/ch/qos/logback/classic/net/SSLSocketReceiver.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.net;
-
-import javax.net.SocketFactory;
-import javax.net.ssl.SSLContext;
-
-import ch.qos.logback.core.net.ssl.ConfigurableSSLSocketFactory;
-import ch.qos.logback.core.net.ssl.SSLComponent;
-import ch.qos.logback.core.net.ssl.SSLConfiguration;
-import ch.qos.logback.core.net.ssl.SSLParametersConfiguration;
-
-/**
- * A {@link SocketReceiver} that supports SSL.
- *
- * @author Carl Harris
- */
-public class SSLSocketReceiver extends SocketReceiver 
-    implements SSLComponent {
-
-  private SSLConfiguration ssl;
-  private SocketFactory socketFactory;
-
-  /**
-   * Gets an {@link SocketFactory} that produces SSL sockets using an
-   * {@link SSLContext} that is derived from the receiver's configuration.
-   * @return socket factory
-   */
-  @Override
-  protected SocketFactory getSocketFactory() {
-    return socketFactory;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  protected boolean shouldStart() {
-    try {
-      SSLContext sslContext = getSsl().createContext(this);
-      SSLParametersConfiguration parameters = getSsl().getParameters();
-      parameters.setContext(getContext());
-      socketFactory = new ConfigurableSSLSocketFactory(parameters, 
-          sslContext.getSocketFactory());
-      return super.shouldStart();
-    }
-    catch (Exception ex) {
-      addError(ex.getMessage(), ex);
-      return false;
-    }
-  }
-
-  /**
-   * Gets the SSL configuration.
-   * @return SSL configuration; if no configuration has been set, a
-   *    default configuration is returned
-   */
-  public SSLConfiguration getSsl() {
-    if (ssl == null) {
-      ssl = new SSLConfiguration();
-    }
-    return ssl;
-  }
-
-  /**
-   * Sets the SSL configuration.
-   * @param ssl the SSL configuration to set
-   */
-  public void setSsl(SSLConfiguration ssl) {
-    this.ssl = ssl;
-  }
-
-}
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/net/SimpleSSLSocketServer.java b/logback-classic/src/main/java/ch/qos/logback/classic/net/SimpleSSLSocketServer.java
deleted file mode 100644
index aba02dd..0000000
--- a/logback-classic/src/main/java/ch/qos/logback/classic/net/SimpleSSLSocketServer.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.net;
-
-import java.security.NoSuchAlgorithmException;
-
-import javax.net.ServerSocketFactory;
-import javax.net.ssl.SSLContext;
-
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.joran.JoranConfigurator;
-import ch.qos.logback.core.net.ssl.ConfigurableSSLServerSocketFactory;
-import ch.qos.logback.core.net.ssl.SSLParametersConfiguration;
-
-/**
- * A {@link SimpleSocketServer} that supports SSL.
- * 
- * <pre>
- *      <b>Usage:</b> java ch.qos.logback.classic.net.ssl.SimpleSSLSocketServer port configFile
- * </pre>
- * 
- * where <em>port</em> is a port number where the server listens and
- * <em>configFile</em> is an xml configuration file fed to
- * {@link JoranConfigurator}.
- * 
- * When running the SimpleSSLServerFactory as shown above, it is necessary to
- * configure JSSE system properties using {@code -Dname=value} on the
- * command-line when starting the server. In particular, you will probably
- * want/need to configure the following system properties:
- * <ul>
- * <li>javax.net.ssl.keyStore</li>
- * <li>javax.net.ssl.keyStorePassword</li>
- * <li>javax.net.ssl.keyStoreType</li>
- * <li>javax.net.ssl.trustStore</li>
- * <li>javax.net.ssl.trustStorePassword</li>
- * <li>javax.net.ssl.trustStoreType</li>
- * </ul>
- * <p>
- * See the <a href=
- * "http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#InstallationAndCustomization">
- * Customizing the JSSE</a> in the JSSE Reference Guide for details on how to
- * set these system properties.
- * 
- * @author Carl Harris
- */
-public class SimpleSSLSocketServer extends SimpleSocketServer {
-
-  private final ServerSocketFactory socketFactory;
-
-  public static void main(String argv[]) throws Exception {
-    doMain(SimpleSSLSocketServer.class, argv);
-  }
-
-  /**
-   * Creates a new server using the default SSL context.
-   * @param lc logger context for received events
-   * @param port port on which the server is to listen
-   * @throws NoSuchAlgorithmException if the default SSL context cannot be
-   *         created
-   */
-  public SimpleSSLSocketServer(LoggerContext lc, int port)
-      throws NoSuchAlgorithmException {
-    this(lc, port, SSLContext.getDefault());
-  }
-
-  /**
-   * Creates a new server using a custom SSL context.
-   * @param lc logger context for received events
-   * @param port port on which the server is to listen
-   * @param sslContext custom SSL context
-   */
-  public SimpleSSLSocketServer(LoggerContext lc, int port, 
-      SSLContext sslContext) {
-    super(lc, port);
-    if (sslContext == null) {
-      throw new NullPointerException("SSL context required");
-    }
-    SSLParametersConfiguration parameters = new SSLParametersConfiguration();
-    
-    parameters.setContext(lc);
-    this.socketFactory = new ConfigurableSSLServerSocketFactory(
-        parameters, sslContext.getServerSocketFactory());
-  }
-
-  @Override
-  protected ServerSocketFactory getServerSocketFactory() {
-    return socketFactory;
-  }
-
-}
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/net/SimpleSocketServer.java b/logback-classic/src/main/java/ch/qos/logback/classic/net/SimpleSocketServer.java
index e450fff..6c3f5f8 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/net/SimpleSocketServer.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/net/SimpleSocketServer.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -14,14 +14,10 @@
 package ch.qos.logback.classic.net;
 
 import java.io.IOException;
-import java.lang.reflect.Constructor;
 import java.net.ServerSocket;
 import java.net.Socket;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.concurrent.CountDownLatch;
-
-import javax.net.ServerSocketFactory;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -58,15 +54,7 @@ public class SimpleSocketServer extends Thread {
   private ServerSocket serverSocket;
   private List<SocketNode> socketNodeList = new ArrayList<SocketNode>();
 
-  // used for testing purposes
-  private CountDownLatch latch;
-
   public static void main(String argv[]) throws Exception {
-    doMain(SimpleSocketServer.class, argv);
-  }
-
-  protected static void doMain(Class<? extends SimpleSocketServer> serverClass,
-      String argv[]) throws Exception {
     int port = -1;
     if (argv.length == 2) {
       port = parsePortNumber(argv[0]);
@@ -87,18 +75,10 @@ public class SimpleSocketServer extends Thread {
     this.port = port;
   }
 
-
   public void run() {
-    
-    final String oldThreadName = Thread.currentThread().getName();
-    
     try {
-      
-      final String newThreadName = getServerThreadName();
-      Thread.currentThread().setName(newThreadName);
-      
       logger.info("Listening on port " + port);
-      serverSocket = getServerSocketFactory().createServerSocket(port);
+      serverSocket = new ServerSocket(port);
       while (!closed) {
         logger.info("Waiting to accept a new client.");
         signalAlmostReadiness();
@@ -109,8 +89,7 @@ public class SimpleSocketServer extends Thread {
         synchronized (socketNodeList) {
           socketNodeList.add(newSocketNode);
         }
-        final String clientThreadName = getClientThreadName(socket);
-        new Thread(newSocketNode, clientThreadName).start();
+        new Thread(newSocketNode).start();
       }
     } catch (Exception e) {
       if(closed) {
@@ -119,59 +98,17 @@ public class SimpleSocketServer extends Thread {
         logger.error("Unexpected failure in run method", e);
       }
     }
-    
-    finally {
-      Thread.currentThread().setName(oldThreadName);
-    }
-  }
-
-  /**
-   * Returns the name given to the server thread.
-   */
-  protected String getServerThreadName() {
-    return String.format("Logback %s (port %d)", getClass().getSimpleName(), port);
-  }
-
-  /**
-   * Returns a name to identify each client thread.
-   */
-  protected String getClientThreadName(Socket socket) {
-    return String.format("Logback SocketNode (client: %s)", socket.getRemoteSocketAddress());
-  }
-
-  /**
-   * Gets the platform default {@link ServerSocketFactory}.
-   * <p>
-   * Subclasses may override to provide a custom server socket factory.
-   */
-  protected ServerSocketFactory getServerSocketFactory() {
-    return ServerSocketFactory.getDefault();
   }
 
   /**
    * Signal another thread that we have established a connection
-   * This is useful for testing purposes.
+   *  This is useful for testing purposes.
    */
   void signalAlmostReadiness() {
-    if(latch != null && latch.getCount() != 0) {
-      //System.out.println("signalAlmostReadiness() with latch "+latch);
-      latch.countDown();
+    synchronized(this) {
+      this.notifyAll();
     }
   }
-
-  /**
-   * Used for testing purposes
-   * @param latch
-   */
-  void setLatch(CountDownLatch latch) {
-    this.latch = latch;
-  }
-  /**
-    * Used for testing purposes
-    */
-  public CountDownLatch getLatch() {
-    return latch;
-  }
   public boolean isClosed() {
     return closed;
   }
@@ -186,18 +123,14 @@ public class SimpleSocketServer extends Thread {
       } finally {
         serverSocket = null;
       }
-    }
-
-    logger.info("closing this server");
+    } 
+    
     synchronized (socketNodeList) {
       for(SocketNode sn: socketNodeList) {
         sn.close();
-      }
-    }
-    if(socketNodeList.size() != 0) {
-      logger.warn("Was expecting a 0-sized socketNodeList after server shutdown");
+      }      
+      socketNodeList.clear();
     }
-
   }
 
   public void socketNodeClosing(SocketNode sn) {
@@ -207,10 +140,9 @@ public class SimpleSocketServer extends Thread {
     // (e.g. removal whole iterating on the list causes
     // java.util.ConcurrentModificationException
     synchronized (socketNodeList) {
-      socketNodeList.remove(sn);
+      socketNodeList.remove(sn);      
     }
   }
-
   static void usage(String msg) {
     System.err.println(msg);
     System.err.println("Usage: java " + SimpleSocketServer.class.getName()
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/net/SocketAcceptor.java b/logback-classic/src/main/java/ch/qos/logback/classic/net/SocketAcceptor.java
index 06ea023..962dc4d 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/net/SocketAcceptor.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/net/SocketAcceptor.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/net/SocketAppender.java b/logback-classic/src/main/java/ch/qos/logback/classic/net/SocketAppender.java
index 1bc74a4..728c98d 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/net/SocketAppender.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/net/SocketAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -17,7 +17,7 @@ package ch.qos.logback.classic.net;
 import java.net.InetAddress;
 
 import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.core.net.AbstractSocketAppender;
+import ch.qos.logback.core.net.SocketAppenderBase;
 import ch.qos.logback.core.spi.PreSerializationTransformer;
 
 /**
@@ -31,16 +31,32 @@ import ch.qos.logback.core.spi.PreSerializationTransformer;
  * @author Sébastien Pennec
  */
 
-public class SocketAppender extends AbstractSocketAppender<ILoggingEvent> {
+public class SocketAppender extends SocketAppenderBase<ILoggingEvent> {
 
-  private static final PreSerializationTransformer<ILoggingEvent> pst = 
-      new LoggingEventPreSerializationTransformer();
-  
-  private boolean includeCallerData = false;
+  boolean includeCallerData = false;
 
+  PreSerializationTransformer<ILoggingEvent> pst = new LoggingEventPreSerializationTransformer();
+  
   public SocketAppender() {
   }
 
+  /**
+   * Connects to remote server at <code>address</code> and <code>port</code>.
+   */
+  public SocketAppender(InetAddress address, int port) {
+    this.address = address;
+    this.remoteHost = address.getHostName();
+    this.port = port;
+  }
+
+  /**
+   * Connects to remote server at <code>host</code> and <code>port</code>.
+   */
+  public SocketAppender(String host, int port) {
+    this.port = port;
+    this.address = getAddressByName(host);
+    this.remoteHost = host;
+  }
 
   @Override
   protected void postProcessEvent(ILoggingEvent event) {
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/net/SocketNode.java b/logback-classic/src/main/java/ch/qos/logback/classic/net/SocketNode.java
index 98023e8..1f28df8 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/net/SocketNode.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/net/SocketNode.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -57,6 +57,13 @@ public class SocketNode implements Runnable {
     remoteSocketAddress = socket.getRemoteSocketAddress();
     this.context = context;
     logger = context.getLogger(SocketNode.class);
+
+    try {
+      ois = new ObjectInputStream(new BufferedInputStream(socket
+          .getInputStream()));
+    } catch (Exception e) {
+      logger.error("Could not open ObjectInputStream to " + socket, e);
+    }
   }
 
   // public
@@ -66,15 +73,6 @@ public class SocketNode implements Runnable {
   // }
 
   public void run() {
-
-    try {
-      ois = new ObjectInputStream(new BufferedInputStream(socket
-          .getInputStream()));
-    } catch (Exception e) {
-      logger.error("Could not open ObjectInputStream to " + socket, e);
-      closed = true;
-    }
-
     ILoggingEvent event;
     Logger remoteLogger;
 
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/net/SocketReceiver.java b/logback-classic/src/main/java/ch/qos/logback/classic/net/SocketReceiver.java
deleted file mode 100644
index 2a99820..0000000
--- a/logback-classic/src/main/java/ch/qos/logback/classic/net/SocketReceiver.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.net;
-
-import java.io.EOFException;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.net.ConnectException;
-import java.net.InetAddress;
-import java.net.Socket;
-import java.net.UnknownHostException;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
-import java.util.concurrent.RejectedExecutionException;
-
-import javax.net.SocketFactory;
-
-import ch.qos.logback.classic.Logger;
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.core.net.DefaultSocketConnector;
-import ch.qos.logback.core.net.AbstractSocketAppender;
-import ch.qos.logback.core.net.SocketConnector;
-import ch.qos.logback.core.util.CloseUtil;
-
-/**
- * A component that receives serialized {@link ILoggingEvent} objects from a
- * remote appender over a {@link Socket}.
- *
- * @author Carl Harris
- */
-public class SocketReceiver extends ReceiverBase
-        implements Runnable, SocketConnector.ExceptionHandler {
-
-  private static final int DEFAULT_ACCEPT_CONNECTION_DELAY = 5000;
-
-  private String remoteHost;
-  private InetAddress address;
-  private int port;
-  private int reconnectionDelay;
-  private int acceptConnectionTimeout = DEFAULT_ACCEPT_CONNECTION_DELAY;
-
-  private String receiverId;
-  private volatile Socket socket;
-  private Future<Socket> connectorTask;
-
-  /**
-   * {@inheritDoc}
-   */
-  protected boolean shouldStart() {
-    int errorCount = 0;
-    if (port == 0) {
-      errorCount++;
-      addError("No port was configured for receiver. "
-              + "For more information, please visit http://logback.qos.ch/codes.html#receiver_no_port");
-    }
-
-    if (remoteHost == null) {
-      errorCount++;
-      addError("No host name or address was configured for receiver. "
-              + "For more information, please visit http://logback.qos.ch/codes.html#receiver_no_host");
-    }
-
-    if (reconnectionDelay == 0) {
-      reconnectionDelay = AbstractSocketAppender.DEFAULT_RECONNECTION_DELAY;
-    }
-
-    if (errorCount == 0) {
-      try {
-        address = InetAddress.getByName(remoteHost);
-      } catch (UnknownHostException ex) {
-        addError("unknown host: " + remoteHost);
-        errorCount++;
-      }
-    }
-
-    if (errorCount == 0) {
-      receiverId = "receiver " + remoteHost + ":" + port + ": ";
-    }
-
-    return errorCount == 0;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  protected void onStop() {
-    if (socket != null) {
-      CloseUtil.closeQuietly(socket);
-    }
-  }
-
-  @Override
-  protected Runnable getRunnableTask() {
-    return this;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public void run() {
-    try {
-      LoggerContext lc = (LoggerContext) getContext();
-      while (!Thread.currentThread().isInterrupted()) {
-        SocketConnector connector = createConnector(address, port, 0,
-                reconnectionDelay);
-        connectorTask = activateConnector(connector);
-        if (connectorTask == null)
-          break;
-        socket = waitForConnectorToReturnASocket();
-        if (socket == null)
-          break;
-        dispatchEvents(lc);
-      }
-    } catch (InterruptedException ex) {
-      assert true;    // ok... we'll exit now
-    }
-    addInfo("shutting down");
-  }
-
-  private SocketConnector createConnector(InetAddress address, int port,
-                                          int initialDelay, int retryDelay) {
-    SocketConnector connector = newConnector(address, port, initialDelay,
-            retryDelay);
-    connector.setExceptionHandler(this);
-    connector.setSocketFactory(getSocketFactory());
-    return connector;
-  }
-
-
-  private Future<Socket> activateConnector(SocketConnector connector) {
-    try {
-      return getContext().getExecutorService().submit(connector);
-    } catch (RejectedExecutionException ex) {
-      return null;
-    }
-  }
-
-  private Socket waitForConnectorToReturnASocket() throws InterruptedException {
-    try {
-      Socket s = connectorTask.get();
-      connectorTask = null;
-      return s;
-    } catch (ExecutionException e) {
-      return null;
-    }
-  }
-
-  private void dispatchEvents(LoggerContext lc) {
-    try {
-      socket.setSoTimeout(acceptConnectionTimeout);
-      ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
-      socket.setSoTimeout(0);
-      addInfo(receiverId + "connection established");
-      while (true) {
-        ILoggingEvent event = (ILoggingEvent) ois.readObject();
-        Logger remoteLogger = lc.getLogger(event.getLoggerName());
-        if (remoteLogger.isEnabledFor(event.getLevel())) {
-          remoteLogger.callAppenders(event);
-        }
-      }
-    } catch (EOFException ex) {
-      addInfo(receiverId + "end-of-stream detected");
-    } catch (IOException ex) {
-      addInfo(receiverId + "connection failed: " + ex);
-    } catch (ClassNotFoundException ex) {
-      addInfo(receiverId + "unknown event class: " + ex);
-    } finally {
-      CloseUtil.closeQuietly(socket);
-      socket = null;
-      addInfo(receiverId + "connection closed");
-    }
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public void connectionFailed(SocketConnector connector, Exception ex) {
-    if (ex instanceof InterruptedException) {
-      addInfo("connector interrupted");
-    } else if (ex instanceof ConnectException) {
-      addInfo(receiverId + "connection refused");
-    } else {
-      addInfo(receiverId + ex);
-    }
-  }
-
-
-  protected SocketConnector newConnector(InetAddress address,
-                                         int port, int initialDelay, int retryDelay) {
-    return new DefaultSocketConnector(address, port, initialDelay, retryDelay);
-  }
-
-  protected SocketFactory getSocketFactory() {
-    return SocketFactory.getDefault();
-  }
-
-  public void setRemoteHost(String remoteHost) {
-    this.remoteHost = remoteHost;
-  }
-
-  public void setPort(int port) {
-    this.port = port;
-  }
-
-  public void setReconnectionDelay(int reconnectionDelay) {
-    this.reconnectionDelay = reconnectionDelay;
-  }
-
-  public void setAcceptConnectionTimeout(int acceptConnectionTimeout) {
-    this.acceptConnectionTimeout = acceptConnectionTimeout;
-  }
-
-}
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/net/SyslogAppender.java b/logback-classic/src/main/java/ch/qos/logback/classic/net/SyslogAppender.java
index e358c97..4f65ab8 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/net/SyslogAppender.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/net/SyslogAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -15,8 +15,6 @@ package ch.qos.logback.classic.net;
 
 import java.io.IOException;
 import java.io.OutputStream;
-import java.net.SocketException;
-import java.net.UnknownHostException;
 
 import ch.qos.logback.classic.PatternLayout;
 import ch.qos.logback.classic.pattern.SyslogStartConverter;
@@ -27,7 +25,6 @@ import ch.qos.logback.classic.util.LevelToSyslogSeverity;
 import ch.qos.logback.core.CoreConstants;
 import ch.qos.logback.core.Layout;
 import ch.qos.logback.core.net.SyslogAppenderBase;
-import ch.qos.logback.core.net.SyslogOutputStream;
 
 /**
  * This appender can be used to send messages to a remote syslog daemon. <p> For
@@ -53,18 +50,13 @@ public class SyslogAppender extends SyslogAppenderBase<ILoggingEvent> {
   }
 
   String getPrefixPattern() {
-    return "%syslogStart{" + getFacility() + "}%nopex{}";
+    return "%syslogStart{" + getFacility() + "}%nopex";
   }
 
-  @Override
-  public SyslogOutputStream createOutputStream() throws SocketException, UnknownHostException {
-    return new SyslogOutputStream(getSyslogHost(), getPort());
-  }
-
-  /**
+  /*
    * Convert a level to equivalent syslog severity. Only levels for printing
    * methods i.e DEBUG, WARN, INFO and ERROR are converted.
-   *
+   * 
    * @see ch.qos.logback.core.net.SyslogAppenderBase#getSeverityForEvent(java.lang.Object)
    */
   @Override
@@ -79,18 +71,13 @@ public class SyslogAppender extends SyslogAppenderBase<ILoggingEvent> {
       return;
 
     ILoggingEvent event = (ILoggingEvent) eventObject;
-    IThrowableProxy tp = event.getThrowableProxy();
-
-    if (tp == null)
-      return;
 
     String stackTracePrefix = stackTraceLayout.doLayout(event);
-    boolean isRootException = true;
+
+    IThrowableProxy tp = event.getThrowableProxy();
     while (tp != null) {
       StackTraceElementProxy[] stepArray = tp.getStackTraceElementProxyArray();
       try {
-        handleThrowableFirstLine(sw, tp, stackTracePrefix, isRootException);
-        isRootException = false;
         for (StackTraceElementProxy step : stepArray) {
           StringBuilder sb = new StringBuilder();
           sb.append(stackTracePrefix).append(step);
@@ -104,23 +91,6 @@ public class SyslogAppender extends SyslogAppenderBase<ILoggingEvent> {
     }
   }
 
-  // LOGBACK-411 and  LOGBACK-750
-  private void handleThrowableFirstLine(OutputStream sw, IThrowableProxy tp, String stackTracePrefix, boolean isRootException) throws IOException {
-    StringBuilder sb = new StringBuilder().append(stackTracePrefix);
-
-    if (!isRootException) {
-      sb.append(CoreConstants.CAUSED_BY);
-    }
-    sb.append(tp.getClassName()).append(": ").append(tp.getMessage());
-    sw.write(sb.toString().getBytes());
-    sw.flush();
-  }
-
-  boolean stackTraceHeaderLine(StringBuilder sb, boolean topException) {
-
-    return false;
-  }
-
   public Layout<ILoggingEvent> buildLayout() {
     PatternLayout layout = new PatternLayout();
     layout.getInstanceConverterMap().put("syslogStart",
@@ -132,7 +102,7 @@ public class SyslogAppender extends SyslogAppenderBase<ILoggingEvent> {
     layout.setContext(getContext());
     layout.start();
     return layout;
-  }
+   }
 
   private void setupStackTraceLayout() {
     stackTraceLayout.getInstanceConverterMap().put("syslogStart",
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/net/server/RemoteAppenderClient.java b/logback-classic/src/main/java/ch/qos/logback/classic/net/server/RemoteAppenderClient.java
deleted file mode 100644
index 79445c5..0000000
--- a/logback-classic/src/main/java/ch/qos/logback/classic/net/server/RemoteAppenderClient.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.net.server;
-
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.core.net.server.Client;
-import ch.qos.logback.core.net.server.ServerRunner;
-
-
-/**
- * A client of a {@link ServerRunner} that receives events from a remote
- * appender.
- *  
- * @author Carl Harris
- */
-interface RemoteAppenderClient extends Client {
-
-  /**
-   * Sets the client's logger context.
-   * <p>
-   * This provides the local logging context to the client's service thread,
-   * and is used as the destination for logging events received from the
-   * client.
-   * <p>
-   * This method <em>must</em> be invoked before the {@link #run()} method.
-   * @param lc the logger context to set
-   */
-  void setLoggerContext(LoggerContext lc);
-  
-}
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/net/server/RemoteAppenderServerListener.java b/logback-classic/src/main/java/ch/qos/logback/classic/net/server/RemoteAppenderServerListener.java
deleted file mode 100644
index d315ebe..0000000
--- a/logback-classic/src/main/java/ch/qos/logback/classic/net/server/RemoteAppenderServerListener.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.net.server;
-
-import java.io.IOException;
-import java.net.ServerSocket;
-import java.net.Socket;
-
-import ch.qos.logback.core.net.server.ServerListener;
-import ch.qos.logback.core.net.server.ServerSocketListener;
-
-/**
- * A {@link ServerListener} for remote appenders.
- *
- * @author Carl Harris
- */
-class RemoteAppenderServerListener
-    extends ServerSocketListener<RemoteAppenderClient>  {
-
-  /**
-   * Constructs a new listener.
-   * @param serverSocket the {@link ServerSocket} from which to accept
-   *    new client connections
-   */
-  public RemoteAppenderServerListener(ServerSocket serverSocket) {
-    super(serverSocket);
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  protected RemoteAppenderClient createClient(String id, Socket socket) 
-      throws IOException {
-    return new RemoteAppenderStreamClient(id, socket);
-  }
-
-}
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/net/server/RemoteAppenderServerRunner.java b/logback-classic/src/main/java/ch/qos/logback/classic/net/server/RemoteAppenderServerRunner.java
deleted file mode 100644
index 4e07536..0000000
--- a/logback-classic/src/main/java/ch/qos/logback/classic/net/server/RemoteAppenderServerRunner.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.net.server;
-
-import java.util.concurrent.Executor;
-
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.core.net.server.ConcurrentServerRunner;
-import ch.qos.logback.core.net.server.ServerListener;
-import ch.qos.logback.core.net.server.ServerRunner;
-
-/**
- * A {@link ServerRunner} that receives logging events from remote appender
- * clients.
- *
- * @author Carl Harris
- */
-class RemoteAppenderServerRunner
-    extends ConcurrentServerRunner<RemoteAppenderClient> {
-
-  /**
-   * Constructs a new server runner.
-   * @param listener the listener from which the server will accept new
-   *    clients
-   * @param executor that will be used to execute asynchronous tasks 
-   *    on behalf of the runner.
-   */
-  public RemoteAppenderServerRunner(
-      ServerListener<RemoteAppenderClient> listener, Executor executor) {
-    super(listener, executor);
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  protected boolean configureClient(RemoteAppenderClient client) {
-    client.setLoggerContext((LoggerContext) getContext());
-    return true;
-  }
-  
-}
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/net/server/RemoteAppenderStreamClient.java b/logback-classic/src/main/java/ch/qos/logback/classic/net/server/RemoteAppenderStreamClient.java
deleted file mode 100644
index a4b34a9..0000000
--- a/logback-classic/src/main/java/ch/qos/logback/classic/net/server/RemoteAppenderStreamClient.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.net.server;
-
-import java.io.EOFException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.ObjectInputStream;
-import java.net.Socket;
-
-import ch.qos.logback.classic.Logger;
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.core.util.CloseUtil;
-
-/**
- * A {@link RemoteAppenderClient} that reads serialized {@link ILoggingEvent} 
- * objects from an {@link InputStream}.
- *
- * @author Carl Harris
- */
-class RemoteAppenderStreamClient implements RemoteAppenderClient {
-
-  private final String id;
-  private final Socket socket;
-  private final InputStream inputStream;
-  
-  private LoggerContext lc;
-  private Logger logger;
-  
-  /**
-   * Constructs a new client.  
-   * @param id a display name for the client
-   * @param inputStream input stream from which events will be read
-   */
-  public RemoteAppenderStreamClient(String id, Socket socket) {
-    this.id = id;
-    this.socket = socket;
-    this.inputStream = null;
-  }
-
-  /**
-   * Constructs a new client.
-   * <p>
-   * This constructor is provided primarily to support unit tests for which
-   * it is inconvenient to create a socket.
-   *  
-   * @param id a display name for the client
-   * @param inputStream input stream from which events will be read
-   */
-  public RemoteAppenderStreamClient(String id, InputStream inputStream) {
-    this.id = id;
-    this.socket = null;
-    this.inputStream = inputStream;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public void setLoggerContext(LoggerContext lc) {
-    this.lc = lc;
-    this.logger = lc.getLogger(getClass().getPackage().getName());
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public void close() {
-    if (socket == null) return;
-    CloseUtil.closeQuietly(socket);
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public void run() {
-    logger.info(this + ": connected"); 
-    ObjectInputStream ois = null;
-    try {
-      ois = createObjectInputStream();
-      while (true) {
-        // read an event from the wire
-        ILoggingEvent event = (ILoggingEvent) ois.readObject();
-        // get a logger from the hierarchy. The name of the logger is taken to
-        // be the name contained in the event.
-        Logger remoteLogger = lc.getLogger(event.getLoggerName());
-        // apply the logger-level filter
-        if (remoteLogger.isEnabledFor(event.getLevel())) {
-          // finally log the event as if was generated locally
-          remoteLogger.callAppenders(event);
-        }
-      }
-    }
-    catch (EOFException ex) {
-      // this is normal and expected
-      assert true;    
-    }
-    catch (IOException ex) {
-      logger.info(this + ": " + ex);
-    }
-    catch (ClassNotFoundException ex) {
-      logger.error(this + ": unknown event class");      
-    }
-    catch (RuntimeException ex) {
-      logger.error(this + ": " + ex);
-    }
-    finally {
-      if (ois != null) {
-        CloseUtil.closeQuietly(ois);
-      }
-      close();
-      logger.info(this + ": connection closed");
-    }
-  }
-
-  private ObjectInputStream createObjectInputStream() throws IOException {
-    if (inputStream != null) {
-      return new ObjectInputStream(inputStream);
-    }
-    return new ObjectInputStream(socket.getInputStream());
-  }
-  
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public String toString() {
-    return "client " + id;
-  }
-
-}
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/net/server/SSLServerSocketAppender.java b/logback-classic/src/main/java/ch/qos/logback/classic/net/server/SSLServerSocketAppender.java
deleted file mode 100644
index 90ea2b5..0000000
--- a/logback-classic/src/main/java/ch/qos/logback/classic/net/server/SSLServerSocketAppender.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.net.server;
-
-import ch.qos.logback.classic.net.LoggingEventPreSerializationTransformer;
-import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.core.net.server.SSLServerSocketAppenderBase;
-import ch.qos.logback.core.spi.PreSerializationTransformer;
-
-/**
- * A {@link ServerSocketAppender} that supports SSL.
- *
- * @author Carl Harris
- */
-public class SSLServerSocketAppender 
-    extends SSLServerSocketAppenderBase<ILoggingEvent> {
-
-  private static final PreSerializationTransformer<ILoggingEvent> pst = 
-      new LoggingEventPreSerializationTransformer();
-
-  private boolean includeCallerData;
-  
-  @Override
-  protected void postProcessEvent(ILoggingEvent event) {
-    if (isIncludeCallerData()) {
-      event.getCallerData();
-    }
-  }
-
-  @Override
-  protected PreSerializationTransformer<ILoggingEvent> getPST() {
-    return pst;
-  }
-
-  public boolean isIncludeCallerData() {
-    return includeCallerData;
-  }
-
-  public void setIncludeCallerData(boolean includeCallerData) {
-    this.includeCallerData = includeCallerData;
-  }
-
-}
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/net/server/SSLServerSocketReceiver.java b/logback-classic/src/main/java/ch/qos/logback/classic/net/server/SSLServerSocketReceiver.java
deleted file mode 100644
index c9a580c..0000000
--- a/logback-classic/src/main/java/ch/qos/logback/classic/net/server/SSLServerSocketReceiver.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.net.server;
-
-import javax.net.ServerSocketFactory;
-import javax.net.ssl.SSLContext;
-
-import ch.qos.logback.core.net.ssl.ConfigurableSSLServerSocketFactory;
-import ch.qos.logback.core.net.ssl.SSLComponent;
-import ch.qos.logback.core.net.ssl.SSLConfiguration;
-import ch.qos.logback.core.net.ssl.SSLParametersConfiguration;
-
-/**
- * A {@link ServerSocketReceiver} that supports SSL.
- *
- * @author Carl Harris
- */
-public class SSLServerSocketReceiver extends ServerSocketReceiver 
-    implements SSLComponent {
-
-  private SSLConfiguration ssl;
-  private ServerSocketFactory socketFactory;
-  
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  protected ServerSocketFactory getServerSocketFactory() throws Exception {
-    if (socketFactory == null) {
-      SSLContext sslContext = getSsl().createContext(this);
-      SSLParametersConfiguration parameters = getSsl().getParameters();
-      parameters.setContext(getContext());
-      socketFactory = new ConfigurableSSLServerSocketFactory(
-        parameters, sslContext.getServerSocketFactory());
-    }
-    return socketFactory;
-  }
-
-  /**
-   * Gets the server's SSL configuration.
-   * @return SSL configuration; if no SSL configuration was provided
-   *    a default configuration is returned
-   */
-  public SSLConfiguration getSsl() {
-    if (ssl == null) {
-      ssl = new SSLConfiguration();
-    }
-    return ssl;
-  }
-
-  /**
-   * Gets the server's SSL configuration.
-   * @param ssl the SSL configuration to set.
-   */
-  public void setSsl(SSLConfiguration ssl) {
-    this.ssl = ssl;
-  }
-
-}
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/net/server/ServerSocketAppender.java b/logback-classic/src/main/java/ch/qos/logback/classic/net/server/ServerSocketAppender.java
deleted file mode 100644
index 7e256c1..0000000
--- a/logback-classic/src/main/java/ch/qos/logback/classic/net/server/ServerSocketAppender.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.net.server;
-
-import ch.qos.logback.classic.net.LoggingEventPreSerializationTransformer;
-import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.core.net.server.AbstractServerSocketAppender;
-import ch.qos.logback.core.spi.PreSerializationTransformer;
-
-/**
- * An appender that listens on a TCP port for connections from remote
- * loggers.  Each event delivered to this appender is delivered to all
- * connected remote loggers. 
- *
- * @author Carl Harris
- */
-public class ServerSocketAppender
-    extends AbstractServerSocketAppender<ILoggingEvent> {
-
-  private static final PreSerializationTransformer<ILoggingEvent> pst = 
-      new LoggingEventPreSerializationTransformer();
-
-  private boolean includeCallerData;
-  
-  @Override
-  protected void postProcessEvent(ILoggingEvent event) {
-    if (isIncludeCallerData()) {
-      event.getCallerData();
-    }
-  }
-
-  @Override
-  protected PreSerializationTransformer<ILoggingEvent> getPST() {
-    return pst;
-  }
-
-  public boolean isIncludeCallerData() {
-    return includeCallerData;
-  }
-
-  public void setIncludeCallerData(boolean includeCallerData) {
-    this.includeCallerData = includeCallerData;
-  }
-
-}
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/net/server/ServerSocketReceiver.java b/logback-classic/src/main/java/ch/qos/logback/classic/net/server/ServerSocketReceiver.java
deleted file mode 100644
index d90b277..0000000
--- a/logback-classic/src/main/java/ch/qos/logback/classic/net/server/ServerSocketReceiver.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.net.server;
-
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.net.UnknownHostException;
-import java.util.concurrent.Executor;
-
-import javax.net.ServerSocketFactory;
-
-import ch.qos.logback.classic.net.ReceiverBase;
-import ch.qos.logback.core.net.AbstractSocketAppender;
-import ch.qos.logback.core.net.server.ServerListener;
-import ch.qos.logback.core.net.server.ServerRunner;
-import ch.qos.logback.core.util.CloseUtil;
-
-/**
- * A logging socket server that is configurable using Joran.
- *
- * @author Carl Harris
- */
-public class ServerSocketReceiver extends ReceiverBase {
-  
-  /**
-   * Default {@link ServerSocket} backlog
-   */
-  public static final int DEFAULT_BACKLOG = 50;
-
-  private int port = AbstractSocketAppender.DEFAULT_PORT;
-  private int backlog = DEFAULT_BACKLOG;
-  
-  private String address;
-
-  private ServerSocket serverSocket;
-  private ServerRunner runner;
-  
-  /**
-   * Starts the server.
-   */
-  protected boolean shouldStart() {
-    try {
-      ServerSocket serverSocket = getServerSocketFactory().createServerSocket(
-          getPort(), getBacklog(), getInetAddress());    
-
-      ServerListener<RemoteAppenderClient> listener = 
-          createServerListener(serverSocket);
-      
-      runner = createServerRunner(listener, getContext().getExecutorService());
-      runner.setContext(getContext());
-      return true;
-    }
-    catch (Exception ex) {
-      addError("server startup error: " + ex, ex);
-      CloseUtil.closeQuietly(serverSocket);
-      return false;
-    }
-  }
-
-  protected ServerListener<RemoteAppenderClient> createServerListener(
-      ServerSocket socket) {
-    return new RemoteAppenderServerListener(socket);
-  }
-  
-  protected ServerRunner createServerRunner(
-      ServerListener<RemoteAppenderClient> listener,
-      Executor executor) {
-    return new RemoteAppenderServerRunner(listener, executor);
-  }
-  
-  @Override
-  protected Runnable getRunnableTask() {
-    return runner;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  protected void onStop() {
-    try {
-      if (runner == null) return;
-      runner.stop();
-    }
-    catch (IOException ex) {
-      addError("server shutdown error: " + ex, ex);
-    }
-  }
-
-  /**
-   * Gets the server socket factory.
-   * <p>
-   * Subclasses may override to provide a custom factory.
-   * @return server socket factory
-   * @throws Exception
-   */
-  protected ServerSocketFactory getServerSocketFactory() throws Exception {
-    return ServerSocketFactory.getDefault();
-  }
-    
-  /**
-   * Gets the local address for the listener.
-   * @return an {@link InetAddress} representation of the local address.
-   * @throws UnknownHostException
-   */
-  protected InetAddress getInetAddress() throws UnknownHostException {
-    if (getAddress() == null) return null;
-    return InetAddress.getByName(getAddress());
-  }
-  
-  /**
-   * Gets the local port for the listener.
-   * @return local port
-   */
-  public int getPort() {
-    return port;
-  }
-
-  /**
-   * Sets the local port for the listener.
-   * @param port the local port to set
-   */
-  public void setPort(int port) {
-    this.port = port;
-  }
-
-  /**
-   * Gets the listener queue depth.
-   * <p>
-   * This represents the number of connected clients whose connections 
-   * have not yet been accepted.
-   * @return queue depth
-   * @see java.net.ServerSocket
-   */
-  public int getBacklog() {
-    return backlog;
-  }
-
-  /**
-   * Sets the listener queue depth.
-   * <p>
-   * This represents the number of connected clients whose connections 
-   * have not yet been accepted.
-   * @param backlog the queue depth to set
-   * @see java.net.ServerSocket
-   */
-  public void setBacklog(int backlog) {
-    this.backlog = backlog;
-  }
-
-  /**
-   * Gets the local address for the listener.
-   * @return a string representation of the local address
-   */
-  public String getAddress() {
-    return address;
-  }
-
-  /**
-   * Sets the local address for the listener.
-   * @param address a host name or a string representation of an IP address
-   */
-  public void setAddress(String address) {
-    this.address = address;
-  }
-
-}
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/net/server/package.html b/logback-classic/src/main/java/ch/qos/logback/classic/net/server/package.html
deleted file mode 100644
index 32f6ca1..0000000
--- a/logback-classic/src/main/java/ch/qos/logback/classic/net/server/package.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html> 
-  <head>
-    <title></title>
-  </head>
-  <body>    
-    <p>Provides a robust logging server</p>
-    <p>The <a link="ServerSocket.html"><code>ServerSocket</code></a> can 
-       be configured in any Joran configuration file, effectively turning 
-       any application that uses logback into a potential log message receiver 
-       for remote loggers.
-    </p>
-  </body> 
-</html>
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/Abbreviator.java b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/Abbreviator.java
index 5591453..6e9a683 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/Abbreviator.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/Abbreviator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/CallerDataConverter.java b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/CallerDataConverter.java
index c6da9e7..a11d6cc 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/CallerDataConverter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/CallerDataConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ClassNameOnlyAbbreviator.java b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ClassNameOnlyAbbreviator.java
index b65ff84..7247033 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ClassNameOnlyAbbreviator.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ClassNameOnlyAbbreviator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ClassOfCallerConverter.java b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ClassOfCallerConverter.java
index d948d88..ea6b8e2 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ClassOfCallerConverter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ClassOfCallerConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ClassicConverter.java b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ClassicConverter.java
index 8610e7d..603651e 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ClassicConverter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ClassicConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ContextNameConverter.java b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ContextNameConverter.java
index c7f1866..576035e 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ContextNameConverter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ContextNameConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/DateConverter.java b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/DateConverter.java
index af70f05..8d29a97 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/DateConverter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/DateConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/EnsureExceptionHandling.java b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/EnsureExceptionHandling.java
index 68a1fec..ddf7723 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/EnsureExceptionHandling.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/EnsureExceptionHandling.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ExtendedThrowableProxyConverter.java b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ExtendedThrowableProxyConverter.java
index 2e595cd..3c7df81 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ExtendedThrowableProxyConverter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ExtendedThrowableProxyConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -21,7 +21,9 @@ public class ExtendedThrowableProxyConverter extends ThrowableProxyConverter {
 
   @Override
   protected void extraData(StringBuilder builder, StackTraceElementProxy step) {
-    ThrowableProxyUtil.subjoinPackagingData(builder, step);
+    if (step != null) {
+      ThrowableProxyUtil.subjoinPackagingData(builder, step);
+    }
   }
 
   protected void prepareLoggingEvent(ILoggingEvent event) {
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/FileOfCallerConverter.java b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/FileOfCallerConverter.java
index 8ed3e78..89055c8 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/FileOfCallerConverter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/FileOfCallerConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LevelConverter.java b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LevelConverter.java
index 2d48267..8ab6396 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LevelConverter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LevelConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LineOfCallerConverter.java b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LineOfCallerConverter.java
index bbad5f6..ded8d6d 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LineOfCallerConverter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LineOfCallerConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LineSeparatorConverter.java b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LineSeparatorConverter.java
index 5b059ee..86f5933 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LineSeparatorConverter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LineSeparatorConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LocalSequenceNumberConverter.java b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LocalSequenceNumberConverter.java
deleted file mode 100644
index d0307df..0000000
--- a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LocalSequenceNumberConverter.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.pattern;
-
-import ch.qos.logback.classic.spi.ILoggingEvent;
-import java.util.concurrent.atomic.AtomicLong;
-
-/**
- * A converters based on a a locally incremented sequence number. The sequence number is
- * initialized to the number of milliseconds elapsed since 1970-01-01 until this instance
- * is initialized.
- *
- * <p>
- * <b>EXPERIMENTAL</b> This class is experimental and may be removed in the future.
- *
- */
-public class LocalSequenceNumberConverter extends ClassicConverter {
-
-  AtomicLong sequenceNumber = new AtomicLong(System.currentTimeMillis());
-
-  @Override
-  public String convert(ILoggingEvent event) {
-    return Long.toString(sequenceNumber.getAndIncrement());
-  }
-}
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LoggerConverter.java b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LoggerConverter.java
index 736ecef..921e977 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LoggerConverter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/LoggerConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/MDCConverter.java b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/MDCConverter.java
index 1b3ab7d..ed2ad17 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/MDCConverter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/MDCConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,24 +13,20 @@
  */
 package ch.qos.logback.classic.pattern;
 
-import ch.qos.logback.classic.spi.ILoggingEvent;
-
+import java.util.Iterator;
 import java.util.Map;
+import java.util.Set;
 
-import static ch.qos.logback.core.util.OptionHelper.extractDefaultReplacement;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 
 public class MDCConverter extends ClassicConverter {
 
-  private String key;
-  private String defaultValue = "";
+  String key;
+  private static final String EMPTY_STRING = "";
 
   @Override
   public void start() {
-		String[] keyInfo = extractDefaultReplacement(getFirstOption());
-		key = keyInfo[0];
-    if (keyInfo[1] != null) {
-      defaultValue = keyInfo[1];
-    }
+    key = getFirstOption();
     super.start();
   }
 
@@ -45,7 +41,7 @@ public class MDCConverter extends ClassicConverter {
     Map<String, String> mdcPropertyMap = event.getMDCPropertyMap();
 
     if (mdcPropertyMap == null) {
-      return defaultValue;
+      return EMPTY_STRING;
     }
 
     if (key == null) {
@@ -56,7 +52,7 @@ public class MDCConverter extends ClassicConverter {
       if (value != null) {
         return value;
       } else {
-        return defaultValue;
+        return EMPTY_STRING;
       }
     }
   }
@@ -64,6 +60,7 @@ public class MDCConverter extends ClassicConverter {
   /**
    * if no key is specified, return all the values present in the MDC, in the format "k1=v1, k2=v2, ..."
    */
+
   private String outputMDCForAllKeys(Map<String, String> mdcPropertyMap) {
     StringBuilder buf = new StringBuilder();
     boolean first = true;
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/MarkerConverter.java b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/MarkerConverter.java
index 3a9296d..dc08aee 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/MarkerConverter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/MarkerConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/MessageConverter.java b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/MessageConverter.java
index e7f909d..6b1a6b5 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/MessageConverter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/MessageConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/MethodOfCallerConverter.java b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/MethodOfCallerConverter.java
index 4e3f891..735c953 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/MethodOfCallerConverter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/MethodOfCallerConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/NamedConverter.java b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/NamedConverter.java
index cd5a6ed..502cd8d 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/NamedConverter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/NamedConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/NopThrowableInformationConverter.java b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/NopThrowableInformationConverter.java
index 393e91f..293827e 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/NopThrowableInformationConverter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/NopThrowableInformationConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/PropertyConverter.java b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/PropertyConverter.java
index 2dd6218..450c0a3 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/PropertyConverter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/PropertyConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/RelativeTimeConverter.java b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/RelativeTimeConverter.java
index 231ad48..ca6cc5c 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/RelativeTimeConverter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/RelativeTimeConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/RootCauseFirstThrowableProxyConverter.java b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/RootCauseFirstThrowableProxyConverter.java
index d178e6e..761a21b 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/RootCauseFirstThrowableProxyConverter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/RootCauseFirstThrowableProxyConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -14,6 +14,7 @@
 package ch.qos.logback.classic.pattern;
 
 import ch.qos.logback.classic.spi.IThrowableProxy;
+import ch.qos.logback.classic.spi.StackTraceElementProxy;
 import ch.qos.logback.classic.spi.ThrowableProxyUtil;
 import ch.qos.logback.core.CoreConstants;
 
@@ -25,28 +26,40 @@ public class RootCauseFirstThrowableProxyConverter extends ExtendedThrowableProx
 
   @Override
   protected String throwableProxyToString(IThrowableProxy tp) {
-    StringBuilder buf = new StringBuilder(BUILDER_CAPACITY);
-    recursiveAppendRootCauseFirst(buf, null, ThrowableProxyUtil.REGULAR_EXCEPTION_INDENT, tp);
+    StringBuilder buf = new StringBuilder(2048);
+    subjoinRootCauseFirst(tp, buf);
     return buf.toString();
   }
 
-  protected void recursiveAppendRootCauseFirst(StringBuilder sb, String prefix, int indent, IThrowableProxy tp) {
-    if (tp.getCause() != null) {
-      recursiveAppendRootCauseFirst(sb, prefix, indent, tp.getCause());
-      prefix = null; // to avoid adding it more than once
-    }
-    ThrowableProxyUtil.indent(sb, indent - 1);
-    if (prefix != null) {
-      sb.append(prefix);
+  private void subjoinRootCauseFirst(IThrowableProxy tp, StringBuilder buf) {
+    if (tp.getCause() != null)
+      subjoinRootCauseFirst(tp.getCause(), buf);
+    subjoinRootCause(tp, buf);
+  }
+
+  private void subjoinRootCause(IThrowableProxy tp, StringBuilder buf) {
+    ThrowableProxyUtil.subjoinFirstLineRootCauseFirst(buf, tp);
+    buf.append(CoreConstants.LINE_SEPARATOR);
+    StackTraceElementProxy[] stepArray = tp.getStackTraceElementProxyArray();
+    int commonFrames = tp.getCommonFrames();
+
+    boolean unrestrictedPrinting = lengthOption > stepArray.length;
+
+
+    int maxIndex = (unrestrictedPrinting) ? stepArray.length : lengthOption;
+    if (commonFrames > 0 && unrestrictedPrinting) {
+      maxIndex -= commonFrames;
     }
-    ThrowableProxyUtil.subjoinFirstLineRootCauseFirst(sb, tp);
-    sb.append(CoreConstants.LINE_SEPARATOR);
-    subjoinSTEPArray(sb, indent, tp);
-    IThrowableProxy[] suppressed = tp.getSuppressed();
-    if(suppressed != null) {
-      for(IThrowableProxy current : suppressed) {
-        recursiveAppendRootCauseFirst(sb, CoreConstants.SUPPRESSED, indent + ThrowableProxyUtil.SUPPRESSED_EXCEPTION_INDENT, current);
-      }
+
+    for (int i = 0; i < maxIndex; i++) {
+      String string = stepArray[i].toString();
+      buf.append(CoreConstants.TAB);
+      buf.append(string);
+      extraData(buf, stepArray[i]); // allow other data to be added
+      buf.append(CoreConstants.LINE_SEPARATOR);
     }
+
   }
+
+
 }
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/SyslogStartConverter.java b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/SyslogStartConverter.java
index b9011b4..3762a85 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/SyslogStartConverter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/SyslogStartConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -15,8 +15,8 @@ package ch.qos.logback.classic.pattern;
 
 import java.net.InetAddress;
 import java.net.UnknownHostException;
+import java.text.DateFormatSymbols;
 import java.text.SimpleDateFormat;
-import java.util.Calendar;
 import java.util.Date;
 import java.util.Locale;
 
@@ -28,10 +28,7 @@ public class SyslogStartConverter extends ClassicConverter {
 
   long lastTimestamp = -1;
   String timesmapStr = null;
-  SimpleDateFormat simpleMonthFormat;
-  SimpleDateFormat simpleTimeFormat;
-  private final Calendar calendar  = Calendar.getInstance(Locale.US);
-
+  SimpleDateFormat simpleFormat;
   String localHostName;
   int facility;
 
@@ -49,8 +46,7 @@ public class SyslogStartConverter extends ClassicConverter {
     localHostName = getLocalHostname();
     try {
       // hours should be in 0-23, see also http://jira.qos.ch/browse/LBCLASSIC-48
-      simpleMonthFormat = new SimpleDateFormat("MMM", Locale.US);
-      simpleTimeFormat = new SimpleDateFormat("HH:mm:ss", Locale.US);
+      simpleFormat = new SimpleDateFormat("MMM dd HH:mm:ss", new DateFormatSymbols(Locale.US));
     } catch (IllegalArgumentException e) {
       addError("Could not instantiate SimpleDateFormat", e);
       errorCount++;
@@ -95,14 +91,9 @@ public class SyslogStartConverter extends ClassicConverter {
 
   String computeTimeStampString(long now) {
     synchronized (this) {
-      // Since the formatted output is only precise to the second, we can use the same cached string if the current
-      // second is the same (stripping off the milliseconds).
-      if ((now / 1000) != lastTimestamp) {
-        lastTimestamp = now / 1000;
-        Date nowDate = new Date(now);
-        calendar.setTime(nowDate);
-        timesmapStr = String.format("%s %2d %s", simpleMonthFormat.format(nowDate),
-            calendar.get(Calendar.DAY_OF_MONTH), simpleTimeFormat.format(nowDate));
+      if (now != lastTimestamp) {
+        lastTimestamp = now;
+        timesmapStr = simpleFormat.format(new Date(now));
       }
       return timesmapStr;
     }
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/TargetLengthBasedClassNameAbbreviator.java b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/TargetLengthBasedClassNameAbbreviator.java
index 70edb27..8bc549f 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/TargetLengthBasedClassNameAbbreviator.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/TargetLengthBasedClassNameAbbreviator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ThreadConverter.java b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ThreadConverter.java
index c2b877c..26aeb40 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ThreadConverter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ThreadConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ThrowableHandlingConverter.java b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ThrowableHandlingConverter.java
index f3e9cd6..821012a 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ThrowableHandlingConverter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ThrowableHandlingConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ThrowableProxyConverter.java b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ThrowableProxyConverter.java
index ae8448d..d6c8231 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ThrowableProxyConverter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/ThrowableProxyConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -34,8 +34,6 @@ import ch.qos.logback.core.status.ErrorStatus;
  */
 public class ThrowableProxyConverter extends ThrowableHandlingConverter {
 
-  protected static final int BUILDER_CAPACITY = 2048;
-
   int lengthOption;
   List<EventEvaluator<ILoggingEvent>> evaluatorList = null;
 
@@ -53,12 +51,13 @@ public class ThrowableProxyConverter extends ThrowableHandlingConverter {
       if ("full".equals(lengthStr)) {
         lengthOption = Integer.MAX_VALUE;
       } else if ("short".equals(lengthStr)) {
-        lengthOption = 1;
+        lengthOption = 2;
       } else {
         try {
-          lengthOption = Integer.parseInt(lengthStr);
+          // we add one because, printing starts at offset 1
+          lengthOption = Integer.parseInt(lengthStr) + 1;
         } catch (NumberFormatException nfe) {
-          addError("Could not parse [" + lengthStr + "] as an integer");
+          addError("Could not parser [" + lengthStr + " as an integer");
           lengthOption = Integer.MAX_VALUE;
         }
       }
@@ -139,41 +138,18 @@ public class ThrowableProxyConverter extends ThrowableHandlingConverter {
   }
 
   protected String throwableProxyToString(IThrowableProxy tp) {
-    StringBuilder sb = new StringBuilder(BUILDER_CAPACITY);
-
-    recursiveAppend(sb, null, ThrowableProxyUtil.REGULAR_EXCEPTION_INDENT, tp);
-
-    return sb.toString();
-  }
-
-  private void recursiveAppend(StringBuilder sb, String prefix, int indent, IThrowableProxy tp) {
-    if(tp == null)
-      return;
-    subjoinFirstLine(sb, prefix, indent, tp);
-    sb.append(CoreConstants.LINE_SEPARATOR);
-    subjoinSTEPArray(sb, indent, tp);
-    IThrowableProxy[] suppressed = tp.getSuppressed();
-    if(suppressed != null) {
-      for(IThrowableProxy current : suppressed) {
-        recursiveAppend(sb, CoreConstants.SUPPRESSED, indent + ThrowableProxyUtil.SUPPRESSED_EXCEPTION_INDENT, current);
-      }
+    StringBuilder buf = new StringBuilder(32);
+    IThrowableProxy currentThrowable = tp;
+    while (currentThrowable != null) {
+      subjoinThrowableProxy(buf, currentThrowable);
+      currentThrowable = currentThrowable.getCause();
     }
-    recursiveAppend(sb, CoreConstants.CAUSED_BY, indent, tp.getCause());
-  }
-
-  private void subjoinFirstLine(StringBuilder buf, String prefix, int indent, IThrowableProxy tp) {
-    ThrowableProxyUtil.indent(buf, indent - 1);
-    if (prefix != null) {
-      buf.append(prefix);
-    }
-    subjoinExceptionMessage(buf, tp);
-  }
-
-  private void subjoinExceptionMessage(StringBuilder buf, IThrowableProxy tp) {
-    buf.append(tp.getClassName()).append(": ").append(tp.getMessage());
+    return buf.toString();
   }
 
-  protected void subjoinSTEPArray(StringBuilder buf, int indent, IThrowableProxy tp) {
+  void subjoinThrowableProxy(StringBuilder buf, IThrowableProxy tp) {
+    ThrowableProxyUtil.subjoinFirstLine(buf, tp);
+    buf.append(CoreConstants.LINE_SEPARATOR);
     StackTraceElementProxy[] stepArray = tp.getStackTraceElementProxyArray();
     int commonFrames = tp.getCommonFrames();
 
@@ -186,15 +162,15 @@ public class ThrowableProxyConverter extends ThrowableHandlingConverter {
     }
 
     for (int i = 0; i < maxIndex; i++) {
-      ThrowableProxyUtil.indent(buf, indent);
-      buf.append(stepArray[i]);
+      String string = stepArray[i].toString();
+      buf.append(CoreConstants.TAB);
+      buf.append(string);
       extraData(buf, stepArray[i]); // allow other data to be added
       buf.append(CoreConstants.LINE_SEPARATOR);
     }
 
     if (commonFrames > 0 && unrestrictedPrinting) {
-      ThrowableProxyUtil.indent(buf, indent);
-      buf.append("... ").append(tp.getCommonFrames()).append(
+      buf.append("\t... ").append(tp.getCommonFrames()).append(
               " common frames omitted").append(CoreConstants.LINE_SEPARATOR);
     }
   }
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/Util.java b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/Util.java
index becee92..7d85b4f 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/Util.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/Util.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/color/HighlightingCompositeConverter.java b/logback-classic/src/main/java/ch/qos/logback/classic/pattern/color/HighlightingCompositeConverter.java
deleted file mode 100644
index a1784fb..0000000
--- a/logback-classic/src/main/java/ch/qos/logback/classic/pattern/color/HighlightingCompositeConverter.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.pattern.color;
-
-import ch.qos.logback.classic.Level;
-import ch.qos.logback.classic.spi.ILoggingEvent;
-import static ch.qos.logback.core.pattern.color.ANSIConstants.*;
-import ch.qos.logback.core.pattern.color.ForegroundCompositeConverterBase;
-
-
-/**
- * Highlights inner-text depending on the level, in bold red for events of level ERROR, in red for WARN,
- * in BLUE for INFO, and in the default color for other levels.
- */
-public class HighlightingCompositeConverter extends ForegroundCompositeConverterBase<ILoggingEvent> {
-
-  @Override
-  protected String getForegroundColorCode(ILoggingEvent event) {
-    Level level = event.getLevel();
-    switch (level.toInt()) {
-      case Level.ERROR_INT: return BOLD+RED_FG;
-      case Level.WARN_INT: return RED_FG;
-      case Level.INFO_INT: return BLUE_FG;
-      default: return DEFAULT_FG;
-    }
-
-  }
-}
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/selector/ContextJNDISelector.java b/logback-classic/src/main/java/ch/qos/logback/classic/selector/ContextJNDISelector.java
index 4632112..268a406 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/selector/ContextJNDISelector.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/selector/ContextJNDISelector.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -33,7 +33,6 @@ import ch.qos.logback.classic.util.JNDIUtil;
 import ch.qos.logback.core.joran.spi.JoranException;
 import ch.qos.logback.core.status.InfoStatus;
 import ch.qos.logback.core.status.StatusManager;
-import ch.qos.logback.core.status.StatusUtil;
 import ch.qos.logback.core.status.WarnStatus;
 import ch.qos.logback.core.util.Loader;
 import ch.qos.logback.core.util.StatusPrinter;
@@ -41,11 +40,11 @@ import ch.qos.logback.core.util.StatusPrinter;
 /**
  * A class that allows the LoggerFactory to access an environment-based
  * LoggerContext.
- * <p/>
+ * 
  * To add in catalina.sh
- * <p/>
+ * 
  * JAVA_OPTS="$JAVA_OPTS "-Dlogback.ContextSelector=JNDI""
- *
+ * 
  * @author Ceki Gülcü
  * @author Sébastien Pennec
  */
@@ -58,7 +57,7 @@ public class ContextJNDISelector implements ContextSelector {
 
   public ContextJNDISelector(LoggerContext context) {
     synchronizedContextMap = Collections
-            .synchronizedMap(new HashMap<String, LoggerContext>());
+        .synchronizedMap(new HashMap<String, LoggerContext>());
     defaultContext = context;
   }
 
@@ -110,9 +109,7 @@ public class ContextJNDISelector implements ContextSelector {
           } catch (JoranException je) {
           }
         }
-        // logback-292
-        if (!StatusUtil.contextHasStatusListener(loggerContext))
-          StatusPrinter.printInCaseOfErrorsOrWarnings(loggerContext);
+        StatusPrinter.printInCaseOfErrorsOrWarnings(loggerContext);
       }
       return loggerContext;
     }
@@ -126,29 +123,29 @@ public class ContextJNDISelector implements ContextSelector {
     StatusManager sm = loggerContext.getStatusManager();
 
     String jndiEntryForConfigResource = JNDIUtil.lookup(ctx,
-            JNDI_CONFIGURATION_RESOURCE);
+        JNDI_CONFIGURATION_RESOURCE);
     // Do we have a dedicated configuration file?
     if (jndiEntryForConfigResource != null) {
       sm.add(new InfoStatus("Searching for [" + jndiEntryForConfigResource
-              + "]", this));
+          + "]", this));
       URL url = urlByResourceName(sm, jndiEntryForConfigResource);
       if (url == null) {
         String msg = "The jndi resource [" + jndiEntryForConfigResource
-                + "] for context [" + loggerContext.getName()
-                + "] does not lead to a valid file";
+            + "] for context [" + loggerContext.getName()
+            + "] does not lead to a valid file";
         sm.add(new WarnStatus(msg, this));
       }
       return url;
     } else {
       String resourceByConvention = conventionalConfigFileName(loggerContext
-              .getName());
+          .getName());
       return urlByResourceName(sm, resourceByConvention);
     }
   }
 
   private URL urlByResourceName(StatusManager sm, String resourceName) {
     sm.add(new InfoStatus("Searching for [" + resourceName + "]",
-            this));
+        this));
     URL url = Loader.getResource(resourceName, Loader.getTCL());
     if (url != null) {
       return url;
@@ -179,7 +176,7 @@ public class ContextJNDISelector implements ContextSelector {
 
   /**
    * Returns the number of managed contexts Used for testing purposes
-   *
+   * 
    * @return the number of managed contexts
    */
   public int getCount() {
@@ -188,10 +185,10 @@ public class ContextJNDISelector implements ContextSelector {
 
   /**
    * These methods are used by the LoggerContextFilter.
-   * <p/>
+   * 
    * They provide a way to tell the selector which context to use, thus saving
    * the cost of a JNDI call at each new request.
-   *
+   * 
    * @param context
    */
   public void setLocalContext(LoggerContext context) {
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/selector/ContextSelector.java b/logback-classic/src/main/java/ch/qos/logback/classic/selector/ContextSelector.java
index 58a40ef..420eb32 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/selector/ContextSelector.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/selector/ContextSelector.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/selector/DefaultContextSelector.java b/logback-classic/src/main/java/ch/qos/logback/classic/selector/DefaultContextSelector.java
index 50072ea..e4064bb 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/selector/DefaultContextSelector.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/selector/DefaultContextSelector.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -20,10 +20,10 @@ import ch.qos.logback.classic.LoggerContext;
 
 public class DefaultContextSelector implements ContextSelector {
 
-  private LoggerContext defaultLoggerContext;
+  private LoggerContext context;
   
   public DefaultContextSelector(LoggerContext context) {
-    this.defaultLoggerContext = context;
+    this.context = context;
   }
   
   public LoggerContext getLoggerContext() {
@@ -31,20 +31,20 @@ public class DefaultContextSelector implements ContextSelector {
   }
 
   public LoggerContext getDefaultLoggerContext() {
-    return defaultLoggerContext;
+    return context;
   }
 
   public LoggerContext detachLoggerContext(String loggerContextName) {
-    return defaultLoggerContext;
+    return context;
   }
   
   public List<String> getContextNames() {
-    return Arrays.asList(defaultLoggerContext.getName());
+    return Arrays.asList(context.getName());
   }
   
   public LoggerContext getLoggerContext(String name) {
-    if (defaultLoggerContext.getName().equals(name)) {
-      return defaultLoggerContext;
+    if (context.getName().equals(name)) {
+      return context;
     } else {
       return null;
     }
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/selector/servlet/ContextDetachingSCL.java b/logback-classic/src/main/java/ch/qos/logback/classic/selector/servlet/ContextDetachingSCL.java
index a737180..1ab84ad 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/selector/servlet/ContextDetachingSCL.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/selector/servlet/ContextDetachingSCL.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -42,15 +42,10 @@ public class ContextDetachingSCL implements ServletContextListener {
       System.out.println("About to detach context named " + loggerContextName);
       
       ContextSelector selector = ContextSelectorStaticBinder.getSingleton().getContextSelector();
-      if(selector == null) {
-        System.out.println("Selector is null, cannot detach context. Skipping.");
-        return;
-      }
-      LoggerContext context = selector.getLoggerContext(loggerContextName);
+      LoggerContext context = selector.detachLoggerContext(loggerContextName);
       if (context != null) {
         Logger logger = context.getLogger(Logger.ROOT_LOGGER_NAME);
         logger.warn("Stopping logger context " + loggerContextName);
-        selector.detachLoggerContext(loggerContextName);
         // when the web-app is destroyed, its logger context should be stopped
         context.stop();
       } else {
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/selector/servlet/LoggerContextFilter.java b/logback-classic/src/main/java/ch/qos/logback/classic/selector/servlet/LoggerContextFilter.java
index 4ecc802..9c854fa 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/selector/servlet/LoggerContextFilter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/selector/servlet/LoggerContextFilter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/sift/AppenderFactoryUsingJoran.java b/logback-classic/src/main/java/ch/qos/logback/classic/sift/AppenderFactory.java
similarity index 63%
rename from logback-classic/src/main/java/ch/qos/logback/classic/sift/AppenderFactoryUsingJoran.java
rename to logback-classic/src/main/java/ch/qos/logback/classic/sift/AppenderFactory.java
index 9b50d50..c440fc7 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/sift/AppenderFactoryUsingJoran.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/sift/AppenderFactory.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -14,25 +14,23 @@
 package ch.qos.logback.classic.sift;
 
 import java.util.List;
-import java.util.Map;
 
 import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.joran.event.SaxEvent;
-import ch.qos.logback.core.sift.AbstractAppenderFactoryUsingJoran;
+import ch.qos.logback.core.sift.AppenderFactoryBase;
 import ch.qos.logback.core.sift.SiftingJoranConfiguratorBase;
 
-/**
- *
- */
-public class AppenderFactoryUsingJoran extends AbstractAppenderFactoryUsingJoran<ILoggingEvent> {
-
+public class AppenderFactory extends AppenderFactoryBase<ILoggingEvent>{
 
-  AppenderFactoryUsingJoran(List<SaxEvent> eventList, String key, Map<String, String> parentPropertyMap) {
-    super(eventList, key, parentPropertyMap);
+  String key;
+  
+  AppenderFactory(List<SaxEvent> eventList, String key) {
+      super(eventList);
+      this.key = key;
   }
 
   public SiftingJoranConfiguratorBase<ILoggingEvent> getSiftingJoranConfigurator(String discriminatingValue) {
-    return new SiftingJoranConfigurator(key, discriminatingValue, parentPropertyMap);
+    return new SiftingJoranConfigurator(key, discriminatingValue);
   }
 
 }
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/sift/ContextBasedDiscriminator.java b/logback-classic/src/main/java/ch/qos/logback/classic/sift/ContextBasedDiscriminator.java
index c718833..6b9855e 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/sift/ContextBasedDiscriminator.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/sift/ContextBasedDiscriminator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -14,7 +14,8 @@
 package ch.qos.logback.classic.sift;
 
 import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.core.sift.AbstractDiscriminator;
+import ch.qos.logback.core.sift.Discriminator;
+import ch.qos.logback.core.spi.ContextAwareBase;
 
 /**
  * This discriminator returns the value context to which this event is attached
@@ -26,10 +27,12 @@ import ch.qos.logback.core.sift.AbstractDiscriminator;
  * @author Ceki Gülcü
  * 
  */
-public class ContextBasedDiscriminator extends AbstractDiscriminator<ILoggingEvent> {
+public class ContextBasedDiscriminator extends ContextAwareBase implements
+    Discriminator<ILoggingEvent> {
 
   private static final String KEY = "contextName";
   private String defaultValue;
+  private boolean started = false;
 
   /**
    * Return the name of the current context name as found in the logging event.
@@ -44,6 +47,18 @@ public class ContextBasedDiscriminator extends AbstractDiscriminator<ILoggingEve
     }
   }
 
+  public boolean isStarted() {
+    return started;
+  }
+
+  public void start() {
+    started = true;
+  }
+
+  public void stop() {
+    started = false;
+  }
+
   public String getKey() {
     return KEY;
   }
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/sift/JNDIBasedContextDiscriminator.java b/logback-classic/src/main/java/ch/qos/logback/classic/sift/JNDIBasedContextDiscriminator.java
index 0a255f1..91405f3 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/sift/JNDIBasedContextDiscriminator.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/sift/JNDIBasedContextDiscriminator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -17,7 +17,8 @@ import ch.qos.logback.classic.LoggerContext;
 import ch.qos.logback.classic.selector.ContextSelector;
 import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.util.ContextSelectorStaticBinder;
-import ch.qos.logback.core.sift.AbstractDiscriminator;
+import ch.qos.logback.core.sift.Discriminator;
+import ch.qos.logback.core.spi.ContextAwareBase;
 
 /**
  * This discriminator returns the value context as determined by JNDI. If the
@@ -29,10 +30,12 @@ import ch.qos.logback.core.sift.AbstractDiscriminator;
  * @author Ceki Gülcü
  * 
  */
-public class JNDIBasedContextDiscriminator extends AbstractDiscriminator<ILoggingEvent> {
+public class JNDIBasedContextDiscriminator extends ContextAwareBase implements
+    Discriminator<ILoggingEvent> {
 
   private static final String KEY = "contextName";
   private String defaultValue;
+  private boolean started = false;
 
   /**
    * Return the name of the current context name as found in the logging event.
@@ -53,6 +56,18 @@ public class JNDIBasedContextDiscriminator extends AbstractDiscriminator<ILoggin
     return lc.getName();
   }
 
+  public boolean isStarted() {
+    return started;
+  }
+
+  public void start() {
+    started = true;
+  }
+
+  public void stop() {
+    started = false;
+  }
+
   public String getKey() {
     return KEY;
   }
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/sift/MDCBasedDiscriminator.java b/logback-classic/src/main/java/ch/qos/logback/classic/sift/MDCBasedDiscriminator.java
index 9a3e55c..ae6f5de 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/sift/MDCBasedDiscriminator.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/sift/MDCBasedDiscriminator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -14,7 +14,8 @@
 package ch.qos.logback.classic.sift;
 
 import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.core.sift.AbstractDiscriminator;
+import ch.qos.logback.core.sift.Discriminator;
+import ch.qos.logback.core.spi.ContextAwareBase;
 import ch.qos.logback.core.util.OptionHelper;
 
 import java.util.Map;
@@ -27,10 +28,12 @@ import java.util.Map;
  *
  * @author Ceki Gülcü
  */
-public class MDCBasedDiscriminator extends AbstractDiscriminator<ILoggingEvent> {
+public class MDCBasedDiscriminator extends ContextAwareBase implements
+        Discriminator<ILoggingEvent> {
 
   private String key;
   private String defaultValue;
+  private boolean started = false;
 
   /**
    * Return the value associated with an MDC entry designated by the Key
@@ -51,7 +54,10 @@ public class MDCBasedDiscriminator extends AbstractDiscriminator<ILoggingEvent>
     }
   }
 
-  @Override
+  public boolean isStarted() {
+    return started;
+  }
+
   public void start() {
     int errors = 0;
     if (OptionHelper.isEmpty(key)) {
@@ -67,6 +73,10 @@ public class MDCBasedDiscriminator extends AbstractDiscriminator<ILoggingEvent>
     }
   }
 
+  public void stop() {
+    started = false;
+  }
+
   public String getKey() {
     return key;
   }
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/sift/SiftAction.java b/logback-classic/src/main/java/ch/qos/logback/classic/sift/SiftAction.java
index 4a0f360..89d8b8c 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/sift/SiftAction.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/sift/SiftAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -15,7 +15,6 @@ package ch.qos.logback.classic.sift;
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
 
 import org.xml.sax.Attributes;
 
@@ -29,21 +28,20 @@ public class SiftAction extends Action implements InPlayListener {
   List<SaxEvent> seList;
 
   @Override
-  public void begin(InterpretationContext ic, String name, Attributes attributes)
+  public void begin(InterpretationContext ec, String name, Attributes attributes)
       throws ActionException {
     seList = new ArrayList<SaxEvent>();
-    ic.addInPlayListener(this);
+    ec.addInPlayListener(this);
   }
 
   @Override
-  public void end(InterpretationContext ic, String name) throws ActionException {
-    ic.removeInPlayListener(this);
-    Object o = ic.peekObject();
+  public void end(InterpretationContext ec, String name) throws ActionException {
+    ec.removeInPlayListener(this);
+    Object o = ec.peekObject();
     if (o instanceof SiftingAppender) {
       SiftingAppender sa = (SiftingAppender) o;
-      Map<String, String> propertyMap = ic.getCopyOfPropertyMap();
-      AppenderFactoryUsingJoran appenderFactory = new AppenderFactoryUsingJoran(seList, sa
-          .getDiscriminatorKey(), propertyMap);
+      AppenderFactory appenderFactory = new AppenderFactory(seList, sa
+          .getDiscriminatorKey());
       sa.setAppenderFactory(appenderFactory);
     }
   }
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/sift/SiftingAppender.java b/logback-classic/src/main/java/ch/qos/logback/classic/sift/SiftingAppender.java
index eb43cc7..3534ace 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/sift/SiftingAppender.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/sift/SiftingAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,12 +13,10 @@
  */
 package ch.qos.logback.classic.sift;
 
-import ch.qos.logback.classic.ClassicConstants;
 import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.joran.spi.DefaultClass;
 import ch.qos.logback.core.sift.Discriminator;
 import ch.qos.logback.core.sift.SiftingAppenderBase;
-import org.slf4j.Marker;
 
 /**
  * This appender can contains other appenders which it can build dynamically
@@ -44,11 +42,4 @@ public class SiftingAppender extends SiftingAppenderBase<ILoggingEvent> {
     super.setDiscriminator(discriminator);
   }
 
-  protected boolean eventMarksEndOfLife(ILoggingEvent event) {
-    Marker marker = event.getMarker();
-    if(marker == null)
-      return false;
-
-    return marker.contains(ClassicConstants.FINALIZE_SESSION_MARKER);
-  }
 }
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/sift/SiftingJoranConfigurator.java b/logback-classic/src/main/java/ch/qos/logback/classic/sift/SiftingJoranConfigurator.java
index 484d4c9..d2b3b16 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/sift/SiftingJoranConfigurator.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/sift/SiftingJoranConfigurator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -23,27 +23,28 @@ import ch.qos.logback.core.Appender;
 import ch.qos.logback.core.joran.action.ActionConst;
 import ch.qos.logback.core.joran.action.AppenderAction;
 import ch.qos.logback.core.joran.spi.DefaultNestedComponentRegistry;
-import ch.qos.logback.core.joran.spi.ElementPath;
-import ch.qos.logback.core.joran.spi.ElementSelector;
+import ch.qos.logback.core.joran.spi.Pattern;
 import ch.qos.logback.core.joran.spi.RuleStore;
 import ch.qos.logback.core.sift.SiftingJoranConfiguratorBase;
 
 public class SiftingJoranConfigurator  extends SiftingJoranConfiguratorBase<ILoggingEvent> {
 
-
-  SiftingJoranConfigurator(String key, String value, Map<String, String> parentPropertyMap) {
-    super(key, value, parentPropertyMap);
+  String key;
+  String value;
+  
+  SiftingJoranConfigurator(String key, String value) {
+    this.key = key;
+    this.value = value;
   }
   
   @Override
-  protected ElementPath initialElementPath() {
-    return new ElementPath("configuration");
+  protected Pattern initialPattern() {
+    return new Pattern("configuration");
   }
   
   @Override
   protected void addInstanceRules(RuleStore rs) {
-    super.addInstanceRules(rs);
-    rs.addRule(new ElementSelector("configuration/appender"), new AppenderAction());
+    rs.addRule(new Pattern("configuration/appender"), new AppenderAction());
   }
 
 
@@ -60,7 +61,6 @@ public class SiftingJoranConfigurator  extends SiftingJoranConfiguratorBase<ILog
     omap.put(ActionConst.APPENDER_BAG, new HashMap());
     omap.put(ActionConst.FILTER_CHAIN_BAG, new HashMap());
     Map<String, String> propertiesMap = new HashMap<String, String>();
-    propertiesMap.putAll(parentPropertyMap);
     propertiesMap.put(key, value);
     interpreter.setInterpretationContextPropertiesMap(propertiesMap);
   }
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/spi/CallerData.java b/logback-classic/src/main/java/ch/qos/logback/classic/spi/CallerData.java
index ee7e290..1615df2 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/spi/CallerData.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/spi/CallerData.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -15,12 +15,10 @@ package ch.qos.logback.classic.spi;
 
 import ch.qos.logback.core.CoreConstants;
 
-import java.util.List;
-
 /**
  * This class computes caller data returning the result in the form
  * of a StackTraceElement array.
- *
+ * 
  * @author Ceki Gülcü
  */
 public class CallerData {
@@ -34,7 +32,6 @@ public class CallerData {
 
   // All logger call's in log4j-over-slf4j use the Category class
   private static final String LOG4J_CATEGORY = "org.apache.log4j.Category";
-  private static final String SLF4J_BOUNDARY = "org.slf4j.Logger";
 
   /**
    * When caller information is not available this constant is used for the line
@@ -42,12 +39,12 @@ public class CallerData {
    */
   public static final int LINE_NA = -1;
 
-  public static final String CALLER_DATA_NA = "?#?:?" + CoreConstants.LINE_SEPARATOR;
+  public static String CALLER_DATA_NA = "?#?:?" + CoreConstants.LINE_SEPARATOR;
 
   /**
    * This value is returned in case no caller data could be extracted.
    */
-  public static final StackTraceElement[] EMPTY_CALLER_DATA_ARRAY = new StackTraceElement[0];
+  public static StackTraceElement[] EMPTY_CALLER_DATA_ARRAY = new StackTraceElement[0];
 
 
   /**
@@ -55,8 +52,7 @@ public class CallerData {
    * parameter
    */
   public static StackTraceElement[] extract(Throwable t,
-                                            String fqnOfInvokingClass, final int maxDepth,
-                                            List<String> frameworkPackageList) {
+      String fqnOfInvokingClass, final int maxDepth) {
     if (t == null) {
       return null;
     }
@@ -66,8 +62,8 @@ public class CallerData {
 
     int found = LINE_NA;
     for (int i = 0; i < steArray.length; i++) {
-      if (isInFrameworkSpace(steArray[i].getClassName(),
-              fqnOfInvokingClass, frameworkPackageList)) {
+      if (isDirectlyInvokingClass(steArray[i].getClassName(),
+          fqnOfInvokingClass)) {
         // the caller is assumed to be the next stack frame, hence the +1.
         found = i + 1;
       } else {
@@ -92,40 +88,17 @@ public class CallerData {
     return callerDataArray;
   }
 
-  static boolean isInFrameworkSpace(String currentClass,
-                                    String fqnOfInvokingClass, List<String> frameworkPackageList) {
-    // the check for org.apache.log4j.Category class is intended to support
-    // log4j-over-slf4j. it solves http://bugzilla.slf4j.org/show_bug.cgi?id=66
-    if (currentClass.equals(fqnOfInvokingClass) || currentClass.equals(LOG4J_CATEGORY)
-            || currentClass.startsWith(SLF4J_BOUNDARY) || isInFrameworkSpaceList(currentClass, frameworkPackageList)) {
+  public static boolean isDirectlyInvokingClass(String currentClass,
+      String fqnOfInvokingClass) {
+    // the check for org.apachje.log4j.Category class is intended to support
+    // log4j-over-slf4j
+    // it solves http://bugzilla.slf4j.org/show_bug.cgi?id=66
+    if (currentClass.equals(fqnOfInvokingClass)
+        || currentClass.equals(LOG4J_CATEGORY)) {
       return true;
     } else {
       return false;
     }
   }
 
-  /**
-   * Is currentClass present in the list of packages considered part of the logging framework?
-   */
-  private static boolean isInFrameworkSpaceList(String currentClass, List<String> frameworkPackageList) {
-    if (frameworkPackageList == null)
-      return false;
-
-    for (String s : frameworkPackageList) {
-      if (currentClass.startsWith(s))
-        return true;
-    }
-    return false;
-  }
-
-  /**
-   * Returns a StackTraceElement where all string fields are set to {@link #NA} and line number is set to {@link #LINE_NA}.
-   *
-   * @return StackTraceElement with values set to NA constants.
-   * @since 1.0.10
-   */
-  public static StackTraceElement naInstance() {
-    return new StackTraceElement(NA, NA, NA, LINE_NA);
-  }
-
 }
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/spi/ClassPackagingData.java b/logback-classic/src/main/java/ch/qos/logback/classic/spi/ClassPackagingData.java
index d5aff3e..87d2bf6 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/spi/ClassPackagingData.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/spi/ClassPackagingData.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/spi/EventArgUtil.java b/logback-classic/src/main/java/ch/qos/logback/classic/spi/EventArgUtil.java
deleted file mode 100644
index ca9d21f..0000000
--- a/logback-classic/src/main/java/ch/qos/logback/classic/spi/EventArgUtil.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.spi;
-
-public class EventArgUtil {
-
-
-  public static final Throwable extractThrowable(Object[] argArray) {
-    if (argArray == null || argArray.length == 0) {
-      return null;
-    }
-
-    final Object lastEntry = argArray[argArray.length - 1];
-    if (lastEntry instanceof Throwable) {
-      return (Throwable) lastEntry;
-    }
-    return null;
-  }
-
-  /**
-   * This method should be called only if {@link #successfulExtraction(Throwable)} returns true.
-   *
-   * @param argArray
-   * @return
-   */
-  public static Object[] trimmedCopy(Object[] argArray) {
-    if (argArray == null || argArray.length == 0) {
-      throw new IllegalStateException("non-sensical empty or null argument array");
-    }
-    final int trimemdLen = argArray.length - 1;
-    Object[] trimmed = new Object[trimemdLen];
-    System.arraycopy(argArray, 0, trimmed, 0, trimemdLen);
-    return trimmed;
-  }
-
-  public static Object[] arrangeArguments(Object[] argArray) {
-    return argArray;
-  }
-
-  public static boolean successfulExtraction(Throwable throwable) {
-    return throwable != null;
-  }
-}
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/spi/ILoggingEvent.java b/logback-classic/src/main/java/ch/qos/logback/classic/spi/ILoggingEvent.java
index 5fe291d..22f2d96 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/spi/ILoggingEvent.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/spi/ILoggingEvent.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/spi/IThrowableProxy.java b/logback-classic/src/main/java/ch/qos/logback/classic/spi/IThrowableProxy.java
index 2483165..028905c 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/spi/IThrowableProxy.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/spi/IThrowableProxy.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggerComparator.java b/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggerComparator.java
index 04307c4..3e2e2f5 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggerComparator.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggerComparator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggerContextAware.java b/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggerContextAware.java
index 3c7ea10..b7dc6da 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggerContextAware.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggerContextAware.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggerContextAwareBase.java b/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggerContextAwareBase.java
index 3de07db..4f662f1 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggerContextAwareBase.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggerContextAwareBase.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggerContextListener.java b/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggerContextListener.java
index a4e3667..47a74d6 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggerContextListener.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggerContextListener.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggerContextVO.java b/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggerContextVO.java
index e653242..4bc2184 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggerContextVO.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggerContextVO.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -64,36 +64,4 @@ public class LoggerContextVO implements Serializable {
   public long getBirthTime() {
     return birthTime;
   }
-
-
-  @Override
-  public String toString() {
-    return "LoggerContextVO{" +
-            "name='" + name + '\'' +
-            ", propertyMap=" + propertyMap +
-            ", birthTime=" + birthTime +
-            '}';
-  }
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) return true;
-    if (!(o instanceof LoggerContextVO)) return false;
-
-    LoggerContextVO that = (LoggerContextVO) o;
-
-    if (birthTime != that.birthTime) return false;
-    if (name != null ? !name.equals(that.name) : that.name != null) return false;
-    if (propertyMap != null ? !propertyMap.equals(that.propertyMap) : that.propertyMap != null) return false;
-
-    return true;
-  }
-
-  @Override
-  public int hashCode() {
-    int result = name != null ? name.hashCode() : 0;
-    result = 31 * result + (propertyMap != null ? propertyMap.hashCode() : 0);
-    result = 31 * result + (int) (birthTime ^ (birthTime >>> 32));
-
-    return result;
-  }
 }
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggerRemoteView.java b/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggerRemoteView.java
index e92dea2..c3db0c4 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggerRemoteView.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggerRemoteView.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggingEvent.java b/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggingEvent.java
index 0f11908..4849805 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggingEvent.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggingEvent.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,8 +13,6 @@
  */
 package ch.qos.logback.classic.spi;
 
-import java.io.IOException;
-import java.io.ObjectOutputStream;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -33,7 +31,7 @@ import org.slf4j.spi.MDCAdapter;
  * The internal representation of logging events. When an affirmative decision
  * is made to log then a <code>LoggingEvent</code> instance is created. This
  * instance is passed around to the different logback-classic components.
- * <p/>
+ * 
  * <p>
  * Writers of logback-classic components such as appenders should be aware of
  * that some of the LoggingEvent fields are initialized lazily. Therefore, an
@@ -41,7 +39,7 @@ import org.slf4j.spi.MDCAdapter;
  * must initialize "lazy" fields prior to writing them out. See the
  * {@link #prepareForDeferredProcessing()} method for the exact list.
  * </p>
- *
+ * 
  * @author Ceki Gülcü
  * @author Sébastien Pennec
  */
@@ -50,8 +48,8 @@ public class LoggingEvent implements ILoggingEvent {
   /**
    * Fully qualified name of the calling Logger class. This field does not
    * survive serialization.
-   * <p/>
-   * <p/>
+   * 
+   * <p>
    * Note that the getCallerInformation() method relies on this fact.
    */
   transient String fqnOfLoggerClass;
@@ -67,11 +65,12 @@ public class LoggingEvent implements ILoggingEvent {
 
   /**
    * Level of logging event.
-   * <p/>
+   * 
    * <p>
    * This field should not be accessed directly. You should use the
    * {@link #getLevel} method instead.
    * </p>
+   * 
    */
   private transient Level level;
 
@@ -80,7 +79,7 @@ public class LoggingEvent implements ILoggingEvent {
   // we gain significant space at serialization time by marking
   // formattedMessage as transient and constructing it lazily in
   // getFormattedMessage()
-  transient String formattedMessage;
+  private transient String formattedMessage;
 
   private transient Object[] argumentArray;
 
@@ -103,7 +102,7 @@ public class LoggingEvent implements ILoggingEvent {
   }
 
   public LoggingEvent(String fqcn, Logger logger, Level level, String message,
-                      Throwable throwable, Object[] argArray) {
+      Throwable throwable, Object[] argArray) {
     this.fqnOfLoggerClass = fqcn;
     this.loggerName = logger.getName();
     this.loggerContext = logger.getLoggerContext();
@@ -111,10 +110,15 @@ public class LoggingEvent implements ILoggingEvent {
     this.level = level;
 
     this.message = message;
-    this.argumentArray = argArray;
 
-    if(throwable == null) {
-      throwable = extractThrowableAnRearrangeArguments(argArray);
+    FormattingTuple ft = MessageFormatter.arrayFormat(message, argArray);
+    formattedMessage = ft.getMessage();
+
+    if (throwable == null) {
+      argumentArray = ft.getArgArray();
+      throwable = ft.getThrowable();
+    } else {
+      this.argumentArray = argArray;
     }
 
     if (throwable != null) {
@@ -128,14 +132,6 @@ public class LoggingEvent implements ILoggingEvent {
     timeStamp = System.currentTimeMillis();
   }
 
-  private Throwable extractThrowableAnRearrangeArguments(Object[] argArray) {
-    Throwable extractedThrowable = EventArgUtil.extractThrowable(argArray);
-    if(EventArgUtil.successfulExtraction(extractedThrowable)) {
-      this.argumentArray = EventArgUtil.trimmedCopy(argArray);
-    }
-    return extractedThrowable;
-  }
-
   public void setArgumentArray(Object[] argArray) {
     if (this.argumentArray != null) {
       throw new IllegalStateException("argArray has been already set");
@@ -167,8 +163,10 @@ public class LoggingEvent implements ILoggingEvent {
   }
 
   /**
-   * @param threadName The threadName to set.
-   * @throws IllegalStateException If threadName has been already set.
+   * @param threadName
+   *          The threadName to set.
+   * @throws IllegalStateException
+   *           If threadName has been already set.
    */
   public void setThreadName(String threadName) throws IllegalStateException {
     if (this.threadName != null) {
@@ -199,8 +197,8 @@ public class LoggingEvent implements ILoggingEvent {
   /**
    * This method should be called prior to serializing an event. It should also
    * be called when using asynchronous or deferred logging.
-   * <p/>
-   * <p/>
+   * 
+   * <p>
    * Note that due to performance concerns, this method does NOT extract caller
    * data. It is the responsibility of the caller to extract caller information.
    */
@@ -226,7 +224,7 @@ public class LoggingEvent implements ILoggingEvent {
   public void setMessage(String message) {
     if (this.message != null) {
       throw new IllegalStateException(
-              "The message for this event has been set already.");
+          "The message for this event has been set already.");
     }
     this.message = message;
   }
@@ -242,7 +240,7 @@ public class LoggingEvent implements ILoggingEvent {
   public void setLevel(Level level) {
     if (this.level != null) {
       throw new IllegalStateException(
-              "The level has been already set for this event.");
+          "The level has been already set for this event.");
     }
     this.level = level;
   }
@@ -251,7 +249,7 @@ public class LoggingEvent implements ILoggingEvent {
    * Get the caller information for this logging event. If caller information is
    * null at the time of its invocation, this method extracts location
    * information. The collected information is cached for future use.
-   * <p/>
+   * 
    * <p>
    * Note that after serialization it is impossible to correctly extract caller
    * information.
@@ -260,7 +258,7 @@ public class LoggingEvent implements ILoggingEvent {
   public StackTraceElement[] getCallerData() {
     if (callerDataArray == null) {
       callerDataArray = CallerData.extract(new Throwable(), fqnOfLoggerClass,
-              loggerContext.getMaxCallerDataDepth(), loggerContext.getFrameworkPackages());
+          loggerContext.getMaxCallerDataDepth());
     }
     return callerDataArray;
   }
@@ -280,7 +278,7 @@ public class LoggingEvent implements ILoggingEvent {
   public void setMarker(Marker marker) {
     if (this.marker != null) {
       throw new IllegalStateException(
-              "The marker has been already set for this event.");
+          "The marker has been already set for this event.");
     }
     this.marker = marker;
   }
@@ -289,14 +287,15 @@ public class LoggingEvent implements ILoggingEvent {
     return loggerContextVO.getBirthTime();
   }
 
-  // lazy computation as suggested in LOGBACK-495
+  // computer formatted lazy as suggested in
+  // http://jira.qos.ch/browse/LBCLASSIC-47
   public String getFormattedMessage() {
     if (formattedMessage != null) {
       return formattedMessage;
     }
     if (argumentArray != null) {
       formattedMessage = MessageFormatter.arrayFormat(message, argumentArray)
-              .getMessage();
+          .getMessage();
     } else {
       formattedMessage = message;
     }
@@ -309,7 +308,7 @@ public class LoggingEvent implements ILoggingEvent {
     if (mdcPropertyMap == null) {
       MDCAdapter mdc = MDC.getMDCAdapter();
       if (mdc instanceof LogbackMDCAdapter)
-        mdcPropertyMap = ((LogbackMDCAdapter) mdc).getPropertyMap();
+        mdcPropertyMap = ((LogbackMDCAdapter)mdc).getPropertyMap();
       else
         mdcPropertyMap = mdc.getCopyOfContextMap();
     }
@@ -321,27 +320,11 @@ public class LoggingEvent implements ILoggingEvent {
   }
 
   /**
-   * Set the MDC map for this event.
-   *
-   * @param map
-   * @since 1.0.8
-   */
-  public void setMDCPropertyMap(Map<String, String> map) {
-    if (mdcPropertyMap != null) {
-      throw new IllegalStateException(
-              "The MDCPropertyMap has been already set for this event.");
-    }
-    this.mdcPropertyMap = map;
-
-  }
-
-  /**
    * Synonym for [@link #getMDCPropertyMap}.
-   *
-   * @deprecated Replaced by [@link #getMDCPropertyMap}
+   * @deprecated  Replaced by [@link #getMDCPropertyMap}
    */
   public Map<String, String> getMdc() {
-    return getMDCPropertyMap();
+      return getMDCPropertyMap();
   }
 
   @Override
@@ -353,15 +336,4 @@ public class LoggingEvent implements ILoggingEvent {
     return sb.toString();
   }
 
-  /**
-   * LoggerEventVO instances should be used for serialization. Use
-   * {@link LoggingEventVO#build(ILoggingEvent) build} method to create the LoggerEventVO instance.
-   *
-   * @since 1.0.11
-   */
-  private void writeObject(ObjectOutputStream out) throws IOException {
-    throw new UnsupportedOperationException(this.getClass() + " does not support serialization. " +
-            "Use LoggerEventVO instance instead. See also LoggerEventVO.build method.");
-  }
-
 }
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggingEventVO.java b/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggingEventVO.java
index 7a3c9ea..97b87ad 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggingEventVO.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggingEventVO.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/spi/PackagingDataCalculator.java b/logback-classic/src/main/java/ch/qos/logback/classic/spi/PackagingDataCalculator.java
index c991702..a092bb7 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/spi/PackagingDataCalculator.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/spi/PackagingDataCalculator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -14,7 +14,6 @@
 package ch.qos.logback.classic.spi;
 
 import java.net.URL;
-import java.security.CodeSource;
 import java.util.HashMap;
 
 import sun.reflect.Reflection;
@@ -44,7 +43,6 @@ public class PackagingDataCalculator {
       GET_CALLER_CLASS_METHOD_AVAILABLE = true;
     } catch (NoClassDefFoundError e) {
     } catch (NoSuchMethodError e) {
-    } catch (UnsupportedOperationException e) {
     } catch (Throwable e) {
       System.err.println("Unexpected exception");
       e.printStackTrace();
@@ -164,18 +162,15 @@ public class PackagingDataCalculator {
     try {
       if (type != null) {
         // file:/C:/java/maven-2.0.8/repo/com/icegreen/greenmail/1.3/greenmail-1.3.jar
-        CodeSource codeSource = type.getProtectionDomain().getCodeSource();
-        if (codeSource != null) {
-          URL resource = codeSource.getLocation();
-          if (resource != null) {
-            String locationStr = resource.toString();
-            // now lets remove all but the file name
-            String result = getCodeLocation(locationStr, '/');
-            if (result != null) {
-              return result;
-            }
-            return getCodeLocation(locationStr, '\\');
+        URL resource = type.getProtectionDomain().getCodeSource().getLocation();
+        if (resource != null) {
+          String locationStr = resource.toString();
+          // now lets remove all but the file name
+          String result = getCodeLocation(locationStr, '/');
+          if (result != null) {
+            return result;
           }
+          return getCodeLocation(locationStr, '\\');
         }
       }
     } catch (Exception e) {
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/spi/PlatformInfo.java b/logback-classic/src/main/java/ch/qos/logback/classic/spi/PlatformInfo.java
index 0434e50..47231e7 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/spi/PlatformInfo.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/spi/PlatformInfo.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/spi/STEUtil.java b/logback-classic/src/main/java/ch/qos/logback/classic/spi/STEUtil.java
index a77b034..0dbc8d9 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/spi/STEUtil.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/spi/STEUtil.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/spi/StackTraceElementProxy.java b/logback-classic/src/main/java/ch/qos/logback/classic/spi/StackTraceElementProxy.java
index 868b6af..8f3babb 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/spi/StackTraceElementProxy.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/spi/StackTraceElementProxy.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/spi/ThrowableProxy.java b/logback-classic/src/main/java/ch/qos/logback/classic/spi/ThrowableProxy.java
index 04a0784..5b9001f 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/spi/ThrowableProxy.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/spi/ThrowableProxy.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/spi/ThrowableProxyUtil.java b/logback-classic/src/main/java/ch/qos/logback/classic/spi/ThrowableProxyUtil.java
index 9260720..59f3cb5 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/spi/ThrowableProxyUtil.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/spi/ThrowableProxyUtil.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -17,15 +17,14 @@ import ch.qos.logback.core.CoreConstants;
 
 /**
  * Convert a throwable into an array of ThrowableDataPoint objects.
- *
- *
+ * 
+ * 
  * @author Ceki Gülcü
  */
 public class ThrowableProxyUtil {
 
   public static final int REGULAR_EXCEPTION_INDENT = 1;
-  public static final int SUPPRESSED_EXCEPTION_INDENT = 1;
-  private static final int BUILDER_CAPACITY = 2048;
+  public static final int SUPPRESSED_EXCEPTION_INDENT = 2;
 
   public static void build(ThrowableProxy nestedTP, Throwable nestedThrowable,
       ThrowableProxy parentTP) {
@@ -77,7 +76,7 @@ public class ThrowableProxyUtil {
   }
 
   public static String asString(IThrowableProxy tp) {
-    StringBuilder sb = new StringBuilder(BUILDER_CAPACITY);
+    StringBuilder sb = new StringBuilder();
 
     recursiveAppend(sb, null, REGULAR_EXCEPTION_INDENT, tp);
 
@@ -87,26 +86,19 @@ public class ThrowableProxyUtil {
   private static void recursiveAppend(StringBuilder sb, String prefix, int indent, IThrowableProxy tp) {
     if(tp == null)
       return;
-    subjoinFirstLine(sb, prefix, indent, tp);
+    subjoinFirstLine(sb, prefix, tp);
     sb.append(CoreConstants.LINE_SEPARATOR);
     subjoinSTEPArray(sb, indent, tp);
     IThrowableProxy[] suppressed = tp.getSuppressed();
     if(suppressed != null) {
       for(IThrowableProxy current : suppressed) {
-        recursiveAppend(sb, CoreConstants.SUPPRESSED, indent + SUPPRESSED_EXCEPTION_INDENT, current);
+        recursiveAppend(sb, CoreConstants.SUPPRESSED, SUPPRESSED_EXCEPTION_INDENT, current);
       }
     }
-    recursiveAppend(sb, CoreConstants.CAUSED_BY, indent, tp.getCause());
-  }
-
-  public static void indent(StringBuilder buf, int indent) {
-    for(int j = 0; j < indent; j++) {
-      buf.append(CoreConstants.TAB);
-    }
+    recursiveAppend(sb, CoreConstants.CAUSED_BY, REGULAR_EXCEPTION_INDENT, tp.getCause());
   }
 
-  private static void subjoinFirstLine(StringBuilder buf, String prefix, int indent, IThrowableProxy tp) {
-    indent(buf, indent - 1);
+  private static void subjoinFirstLine(StringBuilder buf, String prefix, IThrowableProxy tp) {
     if (prefix != null) {
       buf.append(prefix);
     }
@@ -122,13 +114,13 @@ public class ThrowableProxyUtil {
         } else {
           builder.append(" [");
         }
-
+   
         builder.append(cpd.getCodeLocation()).append(':').append(
             cpd.getVersion()).append(']');
       }
     }
   }
-
+  
   public static void subjoinSTEP(StringBuilder sb, StackTraceElementProxy step) {
     sb.append(step.toString());
     subjoinPackagingData(sb, step);
@@ -146,7 +138,7 @@ public class ThrowableProxyUtil {
 
   /**
    * @param sb The StringBuilder the STEPs are appended to.
-   * @param indentLevel indentation level used for the STEPs, usually REGULAR_EXCEPTION_INDENT.
+   * @param indentLevel indentation level used for the STEPs, usually either REGULAR_EXCEPTION_INDENT or SUPPRESSED_EXCEPTION_INDENT.
    * @param tp the IThrowableProxy containing the STEPs.
    */
   public static void subjoinSTEPArray(StringBuilder sb, int indentLevel, IThrowableProxy tp) {
@@ -155,17 +147,21 @@ public class ThrowableProxyUtil {
 
     for (int i = 0; i < stepArray.length - commonFrames; i++) {
       StackTraceElementProxy step = stepArray[i];
-      indent(sb, indentLevel);
+      for(int j = 0; j < indentLevel ; j++) {
+        sb.append(CoreConstants.TAB);
+      }
       subjoinSTEP(sb, step);
       sb.append(CoreConstants.LINE_SEPARATOR);
     }
-
+    
     if (commonFrames > 0) {
-      indent(sb, indentLevel);
+      for(int j = 0; j < indentLevel ; j++) {
+        sb.append(CoreConstants.TAB);
+      }
       sb.append("... ").append(commonFrames).append(" common frames omitted")
           .append(CoreConstants.LINE_SEPARATOR);
     }
-
+    
   }
 
   public static void subjoinFirstLine(StringBuilder buf, IThrowableProxy tp) {
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/spi/ThrowableProxyVO.java b/logback-classic/src/main/java/ch/qos/logback/classic/spi/ThrowableProxyVO.java
index e285520..dc604d5 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/spi/ThrowableProxyVO.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/spi/ThrowableProxyVO.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/spi/TurboFilterList.java b/logback-classic/src/main/java/ch/qos/logback/classic/spi/TurboFilterList.java
index fbbf826..f8cafcb 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/spi/TurboFilterList.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/spi/TurboFilterList.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/turbo/DuplicateMessageFilter.java b/logback-classic/src/main/java/ch/qos/logback/classic/turbo/DuplicateMessageFilter.java
index 55546b6..d2ac502 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/turbo/DuplicateMessageFilter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/turbo/DuplicateMessageFilter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/turbo/DynamicThresholdFilter.java b/logback-classic/src/main/java/ch/qos/logback/classic/turbo/DynamicThresholdFilter.java
index e8c36a2..0fdd5b7 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/turbo/DynamicThresholdFilter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/turbo/DynamicThresholdFilter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/turbo/LRUMessageCache.java b/logback-classic/src/main/java/ch/qos/logback/classic/turbo/LRUMessageCache.java
index 3d9ba97..9c0b068 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/turbo/LRUMessageCache.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/turbo/LRUMessageCache.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/turbo/MDCFilter.java b/logback-classic/src/main/java/ch/qos/logback/classic/turbo/MDCFilter.java
index e518f48..3321a77 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/turbo/MDCFilter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/turbo/MDCFilter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/turbo/MDCValueLevelPair.java b/logback-classic/src/main/java/ch/qos/logback/classic/turbo/MDCValueLevelPair.java
index 4a9fa6c..58c03f7 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/turbo/MDCValueLevelPair.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/turbo/MDCValueLevelPair.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/turbo/MarkerFilter.java b/logback-classic/src/main/java/ch/qos/logback/classic/turbo/MarkerFilter.java
index 45d8e9b..81b31d8 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/turbo/MarkerFilter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/turbo/MarkerFilter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/turbo/MatchingFilter.java b/logback-classic/src/main/java/ch/qos/logback/classic/turbo/MatchingFilter.java
index f362ca9..8956959 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/turbo/MatchingFilter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/turbo/MatchingFilter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/turbo/ReconfigureOnChangeFilter.java b/logback-classic/src/main/java/ch/qos/logback/classic/turbo/ReconfigureOnChangeFilter.java
index 9eeed29..9a0574f 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/turbo/ReconfigureOnChangeFilter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/turbo/ReconfigureOnChangeFilter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -23,7 +23,7 @@ import ch.qos.logback.core.CoreConstants;
 import ch.qos.logback.core.joran.event.SaxEvent;
 import ch.qos.logback.core.joran.spi.ConfigurationWatchList;
 import ch.qos.logback.core.joran.util.ConfigurationWatchListUtil;
-import ch.qos.logback.core.status.StatusUtil;
+import ch.qos.logback.core.status.StatusChecker;
 import org.slf4j.Marker;
 
 import ch.qos.logback.classic.Level;
@@ -59,10 +59,6 @@ public class ReconfigureOnChangeFilter extends TurboFilter {
     configurationWatchList = ConfigurationWatchListUtil.getConfigurationWatchList(context);
     if (configurationWatchList != null) {
       mainConfigurationURL = configurationWatchList.getMainURL();
-      if(mainConfigurationURL == null) {
-        addWarn("Due to missing top level configuration file, automatic reconfiguration is impossible.");
-        return;
-      }
       List<File> watchList = configurationWatchList.getCopyOfFileWatchList();
       long inSeconds = refreshPeriod / 1000;
       addInfo("Will scan for changes in [" + watchList + "] every "
@@ -153,7 +149,7 @@ public class ReconfigureOnChangeFilter extends TurboFilter {
   // by detaching reconfiguration to a new thread, we release the various
   // locks held by the current thread, in particular, the AppenderAttachable
   // reader lock.
-  void detachReconfigurationToNewThread() {
+  private void detachReconfigurationToNewThread() {
     addInfo("Detected change in [" + configurationWatchList.getCopyOfFileWatchList() + "]");
     context.getExecutorService().submit(new ReconfiguringThread());
   }
@@ -207,14 +203,14 @@ public class ReconfigureOnChangeFilter extends TurboFilter {
     private void performXMLConfiguration(LoggerContext lc) {
       JoranConfigurator jc = new JoranConfigurator();
       jc.setContext(context);
-      StatusUtil statusUtil = new StatusUtil(context);
+      StatusChecker statusChecker = new StatusChecker(context);
       List<SaxEvent> eventList = jc.recallSafeConfiguration();
       URL mainURL = ConfigurationWatchListUtil.getMainWatchURL(context);
       lc.reset();
       long threshold = System.currentTimeMillis();
       try {
         jc.doConfigure(mainConfigurationURL);
-        if (statusUtil.hasXMLParsingErrors(threshold)) {
+        if (statusChecker.hasXMLParsingErrors(threshold)) {
           fallbackConfiguration(lc, eventList, mainURL);
         }
       } catch (JoranException e) {
@@ -237,7 +233,7 @@ public class ReconfigureOnChangeFilter extends TurboFilter {
           addError("Unexpected exception thrown by a configuration considered safe.", e);
         }
       } else {
-        addWarn("No previous configuration to fall back on.");
+        addWarn("No previous configuration to fall back to.");
       }
     }
   }
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/turbo/TurboFilter.java b/logback-classic/src/main/java/ch/qos/logback/classic/turbo/TurboFilter.java
index 952479c..1d015b0 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/turbo/TurboFilter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/turbo/TurboFilter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -24,7 +24,7 @@ import ch.qos.logback.core.spi.LifeCycle;
 /**
  * TurboFilter is a specialized filter with a decide method that takes a bunch 
  * of parameters instead of a single event object. The latter is cleaner but 
- * the first is much more performant.
+ * the latter is much more performant.
  * <p>
  * For more information about turbo filters, please refer to the online manual at
  * http://logback.qos.ch/manual/filters.html#TurboFilter
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/util/ContextInitializer.java b/logback-classic/src/main/java/ch/qos/logback/classic/util/ContextInitializer.java
index 6fc02ba..aa91e84 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/util/ContextInitializer.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/util/ContextInitializer.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -23,7 +23,6 @@ import ch.qos.logback.classic.BasicConfigurator;
 import ch.qos.logback.classic.LoggerContext;
 import ch.qos.logback.classic.gaffer.GafferUtil;
 import ch.qos.logback.classic.joran.JoranConfigurator;
-import ch.qos.logback.core.LogbackException;
 import ch.qos.logback.core.joran.spi.JoranException;
 import ch.qos.logback.core.status.ErrorStatus;
 import ch.qos.logback.core.status.InfoStatus;
@@ -69,12 +68,11 @@ public class ContextInitializer {
         sm.add(new ErrorStatus("Groovy classes are not available on the class path. ABORTING INITIALIZATION.",
                 loggerContext));
       }
-    } else if (url.toString().endsWith("xml")) {
+    }
+    if (url.toString().endsWith("xml")) {
       JoranConfigurator configurator = new JoranConfigurator();
       configurator.setContext(loggerContext);
       configurator.doConfigure(url);
-    } else {
-      throw new LogbackException("Unexpected filename extension of file [" + url.toString() + "]. Should be either .groovy or .xml");
     }
   }
 
@@ -157,7 +155,7 @@ public class ContextInitializer {
     Set<URL> urlSet = null;
     StatusManager sm = loggerContext.getStatusManager();
     try {
-      urlSet = Loader.getResourceOccurrenceCount(resourceName, classLoader);
+      urlSet = Loader.getResourceOccurenceCount(resourceName, classLoader);
     } catch (IOException e) {
       sm.add(new ErrorStatus("Failed to get url list for resource [" + resourceName + "]",
               loggerContext, e));
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/util/ContextSelectorStaticBinder.java b/logback-classic/src/main/java/ch/qos/logback/classic/util/ContextSelectorStaticBinder.java
index 9d826fb..bb47181 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/util/ContextSelectorStaticBinder.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/util/ContextSelectorStaticBinder.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/util/CopyOnInheritThreadLocal.java b/logback-classic/src/main/java/ch/qos/logback/classic/util/CopyOnInheritThreadLocal.java
index c6e836f..074a9ba 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/util/CopyOnInheritThreadLocal.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/util/CopyOnInheritThreadLocal.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/util/DefaultNestedComponentRules.java b/logback-classic/src/main/java/ch/qos/logback/classic/util/DefaultNestedComponentRules.java
index a379518..b42f877 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/util/DefaultNestedComponentRules.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/util/DefaultNestedComponentRules.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -20,7 +20,6 @@ import ch.qos.logback.core.AppenderBase;
 import ch.qos.logback.core.UnsynchronizedAppenderBase;
 import ch.qos.logback.core.filter.EvaluatorFilter;
 import ch.qos.logback.core.joran.spi.DefaultNestedComponentRegistry;
-import ch.qos.logback.core.net.ssl.SSLNestedComponentRegistryRules;
 
 /**
  * Contains mappings for the default type of nested components in
@@ -42,7 +41,6 @@ public class DefaultNestedComponentRules {
     registry
         .add(EvaluatorFilter.class, "evaluator", JaninoEventEvaluator.class);
 
-    SSLNestedComponentRegistryRules.addDefaultNestedComponentRegistryRules(registry);
   }
 
 }
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/util/EnvUtil.java b/logback-classic/src/main/java/ch/qos/logback/classic/util/EnvUtil.java
index ce8ff16..72ee7a1 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/util/EnvUtil.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/util/EnvUtil.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,8 +13,6 @@
  */
 package ch.qos.logback.classic.util;
 
-import ch.qos.logback.core.util.Loader;
-
 /**
  * @author Ceki Gücü
  */
@@ -22,7 +20,7 @@ public class EnvUtil {
 
 
   static public boolean isGroovyAvailable() {
-    ClassLoader classLoader = Loader.getClassLoaderOfClass(EnvUtil.class);
+    ClassLoader classLoader =  EnvUtil.class.getClassLoader();
     try {
       Class bindingClass = classLoader.loadClass("groovy.lang.Binding");
       return (bindingClass != null);
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/util/JNDIUtil.java b/logback-classic/src/main/java/ch/qos/logback/classic/util/JNDIUtil.java
index 9448881..bdb68ab 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/util/JNDIUtil.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/util/JNDIUtil.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -35,10 +35,9 @@ public class JNDIUtil {
       return null;
     }
     try {
-      Object lookup = ctx.lookup(name);
-      return lookup == null ? null : lookup.toString();
+      return (String) ctx.lookup(name);
     } catch (NamingException e) {
       return null;
     }
   }
-}
+}
\ No newline at end of file
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/util/LevelToSyslogSeverity.java b/logback-classic/src/main/java/ch/qos/logback/classic/util/LevelToSyslogSeverity.java
index f16dfc3..2d6e604 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/util/LevelToSyslogSeverity.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/util/LevelToSyslogSeverity.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/util/LogbackMDCAdapter.java b/logback-classic/src/main/java/ch/qos/logback/classic/util/LogbackMDCAdapter.java
index f68990a..98632ee 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/util/LogbackMDCAdapter.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/util/LogbackMDCAdapter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/util/LoggerNameUtil.java b/logback-classic/src/main/java/ch/qos/logback/classic/util/LoggerNameUtil.java
deleted file mode 100644
index 9f53bea..0000000
--- a/logback-classic/src/main/java/ch/qos/logback/classic/util/LoggerNameUtil.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.util;
-
-import ch.qos.logback.core.CoreConstants;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Utility class for analysing logger names.
- */
-public class LoggerNameUtil {
-
-
-  public static int getFirstSeparatorIndexOf(String name) {
-    return getSeparatorIndexOf(name, 0);
-  }
-
-  /**
-   * Get the position of the separator character, if any, starting at position
-   * 'fromIndex'.
-   *
-   * @param name
-   * @param fromIndex
-   * @return
-   */
-  public static int getSeparatorIndexOf(String name, int fromIndex) {
-    int dotIndex = name.indexOf(CoreConstants.DOT, fromIndex);
-    int dollarIndex = name.indexOf(CoreConstants.DOLLAR, fromIndex);
-
-    if (dotIndex == -1 && dollarIndex == -1) return -1;
-    if (dotIndex == -1) return dollarIndex;
-    if (dollarIndex == -1) return dotIndex;
-
-    return dotIndex < dollarIndex ? dotIndex : dollarIndex;
-  }
-
-  public static List<String> computeNameParts(String loggerName) {
-    List<String> partList = new ArrayList<String>();
-
-    int fromIndex = 0;
-    while(true) {
-      int index = getSeparatorIndexOf(loggerName, fromIndex);
-      if(index == -1) {
-       partList.add(loggerName.substring(fromIndex));
-       break;
-      }
-      partList.add(loggerName.substring(fromIndex, index));
-      fromIndex = index+1;
-    }
-    return partList;
-  }
-}
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/util/StatusListenerConfigHelper.java b/logback-classic/src/main/java/ch/qos/logback/classic/util/StatusListenerConfigHelper.java
index c0ddb5c..696acbe 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/util/StatusListenerConfigHelper.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/util/StatusListenerConfigHelper.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -14,8 +14,6 @@
 package ch.qos.logback.classic.util;
 
 import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.core.spi.ContextAware;
-import ch.qos.logback.core.spi.LifeCycle;
 import ch.qos.logback.core.status.OnConsoleStatusListener;
 import ch.qos.logback.core.status.StatusListener;
 import ch.qos.logback.core.util.OptionHelper;
@@ -30,35 +28,22 @@ public class StatusListenerConfigHelper {
     }
   }
 
-  private static void addStatusListener(LoggerContext loggerContext,
+  static void addStatusListener(LoggerContext loggerContext,
       String listenerClass) {
     StatusListener listener = null;
     if (ContextInitializer.SYSOUT.equalsIgnoreCase(listenerClass)) {
       listener = new OnConsoleStatusListener();
     } else {
-      listener = createListenerPerClassName(loggerContext, listenerClass);
+      try {
+        listener = (StatusListener) OptionHelper.instantiateByClassName(
+            listenerClass, StatusListener.class, loggerContext);
+      } catch (Exception e) {
+        // printing on the console is the best we can do
+        e.printStackTrace();
+      }
     }
-    initListener(loggerContext, listener);
-  }
-
-  private static void initListener(LoggerContext loggerContext, StatusListener listener) {
     if (listener != null) {
-      if(listener instanceof ContextAware) // LOGBACK-767
-        ((ContextAware) listener).setContext(loggerContext);
-      if(listener instanceof LifeCycle)  // LOGBACK-767
-        ((LifeCycle) listener).start();
       loggerContext.getStatusManager().add(listener);
     }
   }
-
-  private static StatusListener createListenerPerClassName(LoggerContext loggerContext, String listenerClass) {
-    try {
-      return (StatusListener) OptionHelper.instantiateByClassName(
-              listenerClass, StatusListener.class, loggerContext);
-    } catch (Exception e) {
-      // printing on the console is the best we can do
-      e.printStackTrace();
-      return null;
-    }
-  }
 }
diff --git a/logback-classic/src/main/java/org/slf4j/impl/StaticLoggerBinder.java b/logback-classic/src/main/java/org/slf4j/impl/StaticLoggerBinder.java
index e7b1f9f..d9f3544 100644
--- a/logback-classic/src/main/java/org/slf4j/impl/StaticLoggerBinder.java
+++ b/logback-classic/src/main/java/org/slf4j/impl/StaticLoggerBinder.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,7 +13,6 @@
  */
 package org.slf4j.impl;
 
-import ch.qos.logback.core.status.StatusUtil;
 import org.slf4j.ILoggerFactory;
 import org.slf4j.LoggerFactory;
 import org.slf4j.helpers.Util;
@@ -86,10 +85,7 @@ public class StaticLoggerBinder implements LoggerFactoryBinder {
       } catch (JoranException je) {
         Util.report("Failed to auto configure default logger context", je);
       }
-      // logback-292
-      if(!StatusUtil.contextHasStatusListener(defaultLoggerContext)) {
-        StatusPrinter.printInCaseOfErrorsOrWarnings(defaultLoggerContext);
-      }
+      StatusPrinter.printInCaseOfErrorsOrWarnings(defaultLoggerContext);
       contextSelectorBinder.init(defaultLoggerContext, KEY);
       initialized = true;
     } catch (Throwable t) {
@@ -112,7 +108,7 @@ public class StaticLoggerBinder implements LoggerFactoryBinder {
   }
 
   public String getLoggerFactoryClassStr() {
-    return contextSelectorBinder.getClass().getName();
+    return contextSelectorBinder.getContextSelector().getClass().getName();
   }
 
 }
diff --git a/logback-classic/src/main/java/org/slf4j/impl/StaticMDCBinder.java b/logback-classic/src/main/java/org/slf4j/impl/StaticMDCBinder.java
index 0d5c72d..0e448a4 100644
--- a/logback-classic/src/main/java/org/slf4j/impl/StaticMDCBinder.java
+++ b/logback-classic/src/main/java/org/slf4j/impl/StaticMDCBinder.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/main/java/org/slf4j/impl/StaticMarkerBinder.java b/logback-classic/src/main/java/org/slf4j/impl/StaticMarkerBinder.java
index e2954ec..b790adf 100644
--- a/logback-classic/src/main/java/org/slf4j/impl/StaticMarkerBinder.java
+++ b/logback-classic/src/main/java/org/slf4j/impl/StaticMarkerBinder.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/groovy/ch/qos/logback/classic/gaffer/ConfigurationDelegateTest.groovy b/logback-classic/src/test/groovy/ch/qos/logback/classic/gaffer/ConfigurationDelegateTest.groovy
index 828c489..46dc753 100644
--- a/logback-classic/src/test/groovy/ch/qos/logback/classic/gaffer/ConfigurationDelegateTest.groovy
+++ b/logback-classic/src/test/groovy/ch/qos/logback/classic/gaffer/ConfigurationDelegateTest.groovy
@@ -1,26 +1,8 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
 package ch.qos.logback.classic.gaffer
 
 import ch.qos.logback.classic.LoggerContext
 import org.junit.Before
 import org.junit.Test
-
-import javax.management.InstanceNotFoundException
-import javax.management.ObjectName
-import java.lang.management.ManagementFactory
-
 import static org.junit.Assert.*
 import ch.qos.logback.core.status.StatusChecker
 import ch.qos.logback.classic.turbo.TurboFilter
@@ -262,46 +244,4 @@ class ConfigurationDelegateTest {
     assertEquals(logFile, back.rollingPolicy.getParentsRawFileProperty())
     assertTrue(back.rollingPolicy.timeBasedFileNamingAndTriggeringPolicy.isStarted())
   }
-
-  @Test
-  void jmxConfiguratorWithDefaults() {
-    ObjectName name = new ObjectName(
-            "ch.qos.logback.classic:Name=ConfigurationDelegateTest,Type=ch.qos.logback.classic.jmx.JMXConfigurator")
-    try {
-       ManagementFactory.platformMBeanServer.getObjectInstance(name)
-       fail("Should not have found JMXConfigurator MBean")
-    } catch (InstanceNotFoundException expected) {
-    }
-    configurationDelegate.jmxConfigurator()
-    def mbean = ManagementFactory.platformMBeanServer.getObjectInstance(name)
-    assertNotNull(mbean)
-  }
-
-    @Test
-    void jmxConfiguratorWithNonDefaultContextName() {
-        ObjectName name = new ObjectName(
-                "ch.qos.logback.classic:Name=CustomName,Type=ch.qos.logback.classic.jmx.JMXConfigurator")
-        try {
-            ManagementFactory.platformMBeanServer.getObjectInstance(name)
-            fail("Should not have found JMXConfigurator MBean")
-        } catch (InstanceNotFoundException expected) {
-        }
-        configurationDelegate.jmxConfigurator("CustomName")
-        def mbean = ManagementFactory.platformMBeanServer.getObjectInstance(name)
-        assertNotNull(mbean)
-    }
-
-    @Test
-    void jmxConfiguratorWithNonDefaultObjectName() {
-        ObjectName name = new ObjectName("customDomain:Name=JMX")
-        try {
-            ManagementFactory.platformMBeanServer.getObjectInstance(name)
-            fail("Should not have found JMXConfigurator MBean")
-        } catch (InstanceNotFoundException expected) {
-        }
-        configurationDelegate.jmxConfigurator("customDomain:Name=JMX")
-        def mbean = ManagementFactory.platformMBeanServer.getObjectInstance(name)
-        assertNotNull(mbean)
-    }
-
 }
diff --git a/logback-classic/src/test/groovy/ch/qos/logback/classic/gaffer/GafferConfiguratorTest.groovy b/logback-classic/src/test/groovy/ch/qos/logback/classic/gaffer/GafferConfiguratorTest.groovy
index 3e018c2..ab73bda 100644
--- a/logback-classic/src/test/groovy/ch/qos/logback/classic/gaffer/GafferConfiguratorTest.groovy
+++ b/logback-classic/src/test/groovy/ch/qos/logback/classic/gaffer/GafferConfiguratorTest.groovy
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2010, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -17,14 +17,12 @@ import ch.qos.logback.classic.ClassicTestConstants
 import ch.qos.logback.classic.LoggerContext
 import org.junit.Before
 import ch.qos.logback.core.testUtil.RandomUtil
-import org.junit.Ignore
 import org.junit.Test
 import ch.qos.logback.classic.Logger
 import ch.qos.logback.classic.Level
 import static junit.framework.Assert.assertNotNull
 import static junit.framework.Assert.assertEquals
 import ch.qos.logback.core.ConsoleAppender
-import ch.qos.logback.classic.AsyncAppender
 import ch.qos.logback.classic.PatternLayout
 import ch.qos.logback.classic.spi.ILoggingEvent
 import ch.qos.logback.core.testUtil.StringListAppender
@@ -41,143 +39,122 @@ import static org.junit.Assert.assertTrue
  */
 class GafferConfiguratorTest {
 
-    LoggerContext context = new LoggerContext();
-    Logger root = context.getLogger(Logger.ROOT_LOGGER_NAME)
-    Logger logger = context.getLogger(this.getClass())
-    int diff = RandomUtil.getPositiveInt();
-    GafferConfigurator configurator = new GafferConfigurator(context);
-
-    @Before
-    void setUp() {
-
-    }
-
-    @Test
-    void smoke() {
-        File file = new File(ClassicTestConstants.GAFFER_INPUT_PREFIX + "smoke.groovy")
-        String dslText = file.text
-        configurator.run dslText
-        Logger root = context.getLogger(Logger.ROOT_LOGGER_NAME);
-        assertEquals(Level.WARN, root.level)
-        assertNotNull(root.getAppender("C"))
-        ConsoleAppender ca = root.getAppender("C")
-        assertNotNull(ca.encoder)
-        assertNotNull(ca.encoder.layout)
-        PatternLayout layout = ca.encoder.layout
-        assertEquals("%m%n", layout.pattern)
-    }
-
-    @Test
-    void onTheFly() {
-        File file = new File(ClassicTestConstants.GAFFER_INPUT_PREFIX + "onTheFly.groovy")
-        String dslText = file.text
-        configurator.run dslText
-    }
-
-    @Test
-    void contextName() {
-        String dslText = "context.name = 'a'"
-        configurator.run dslText
-        assertEquals("a", context.name)
-    }
-
-    @Test
-    void contextProperty() {
-        String dslText = "context.putProperty('x', 'a')"
-        configurator.run dslText
-        assertEquals("a", context.getProperty("x"))
-    }
-
-    @Test
-    void conversionRule() {
-        File file = new File(ClassicTestConstants.GAFFER_INPUT_PREFIX + "conversionRule.groovy")
-        String dslText = file.text
-        configurator.run dslText
-
-        StringListAppender<ILoggingEvent> sla = (StringListAppender<ILoggingEvent>) root.getAppender("LIST");
-        assertNotNull(sla);
-        assertEquals(0, sla.strList.size());
-
-        assertEquals(Level.DEBUG, root.level);
-
-        String msg = "Simon says";
-        logger.debug(msg);
-        StatusPrinter.print context
-        assertEquals(1, sla.strList.size());
-        assertEquals(SampleConverter.SAMPLE_STR + " - " + msg, sla.strList.get(0));
-    }
-
-    @Test
-    void evaluatorWithMatcher() {
-        File file = new File(ClassicTestConstants.GAFFER_INPUT_PREFIX + "evaluatorWithMatcher.groovy")
-        String dslText = file.text
-        configurator.run dslText
-
-        ConsoleAppender ca = (ConsoleAppender) root.getAppender("STDOUT");
-        assertTrue ca.isStarted()
-
-        EvaluatorFilter ef = ca.getCopyOfAttachedFiltersList()[0];
-        assertTrue ef.isStarted()
-
-        JaninoEventEvaluator jee = ef.evaluator
-        assertTrue jee.isStarted()
-        Matcher m = jee.matcherList[0]
-        assertTrue m.isStarted()
-    }
-
-    @Test
-    void propertyCascading0() {
-        File file = new File(ClassicTestConstants.GAFFER_INPUT_PREFIX + "propertyCascading0.groovy")
-        String dslText = file.text
-        configurator.run dslText
-
-        ConsoleAppender ca = (ConsoleAppender) root.getAppender("STDOUT");
-        assertTrue ca.isStarted()
-
-        assertEquals("HELLO %m%n", ca.encoder.layout.pattern)
-    }
-
-    @Test
-    void propertyCascading1() {
-        File file = new File(ClassicTestConstants.GAFFER_INPUT_PREFIX + "propertyCascading1.groovy")
-        String dslText = file.text
-        configurator.run dslText
-
-        ConsoleAppender ca = (ConsoleAppender) root.getAppender("STDOUT");
-        assertTrue ca.isStarted()
-        assertEquals("HELLO %m%n", ca.encoder.getLayout().pattern)
-    }
-
-    @Test
-    void propertyCascading2() {
-        context.putProperty("p", "HELLO");
-        File file = new File(ClassicTestConstants.GAFFER_INPUT_PREFIX + "propertyCascading2.groovy")
-        String dslText = file.text
-        configurator.run dslText
-
-        ConsoleAppender ca = (ConsoleAppender) root.getAppender("STDOUT");
-        assertTrue ca.isStarted()
-        assertEquals("HELLO %m%n", ca.encoder.getLayout().pattern)
-    }
-
-
-    @Test
-    @Ignore
-    void receiver() {
-        File file = new File(ClassicTestConstants.GAFFER_INPUT_PREFIX + "propertyCascading2.groovy")
-        String dslText = file.text
-        configurator.run dslText
-    }
-
-    @Test
-    void appenderRefShouldWork() {
-        File file = new File(ClassicTestConstants.GAFFER_INPUT_PREFIX + "asyncAppender.groovy")
-        configurator.run file.text
-
-        def aa = (AsyncAppender) root.getAppender('STDOUT-ASYNC');
-        assertTrue aa.isStarted()
-        def stdout = (ConsoleAppender) aa.getAppender('STDOUT')
-        assertNotNull stdout
-    }
-
+  LoggerContext context = new LoggerContext();
+  Logger root = context.getLogger(Logger.ROOT_LOGGER_NAME)
+  Logger logger = context.getLogger(this.getClass())
+  int diff = RandomUtil.getPositiveInt();
+  GafferConfigurator configurator = new GafferConfigurator(context);
+
+  @Before
+  void setUp() {
+
+  }
+
+  @Test
+  void smoke() {
+    File file = new File(ClassicTestConstants.GAFFER_INPUT_PREFIX + "smoke.groovy")
+    String dslText = file.text
+    configurator.run dslText
+    Logger root = context.getLogger(Logger.ROOT_LOGGER_NAME);
+    assertEquals(Level.WARN, root.level)
+    assertNotNull(root.getAppender("C"))
+    ConsoleAppender ca = root.getAppender("C")
+    assertNotNull(ca.encoder)
+    assertNotNull(ca.encoder.layout)
+    PatternLayout layout = ca.encoder.layout
+    assertEquals("%m%n", layout.pattern)
+  }
+
+  @Test
+  void onTheFly() {
+    File file = new File(ClassicTestConstants.GAFFER_INPUT_PREFIX + "onTheFly.groovy")
+    String dslText = file.text
+    configurator.run dslText
+  }
+
+  @Test
+  void contextName() {
+    String dslText = "context.name = 'a'"
+    configurator.run dslText
+    assertEquals("a", context.name)
+  }
+
+  @Test
+  void contextProperty() {
+    String dslText = "context.putProperty('x', 'a')"
+    configurator.run dslText
+    assertEquals("a", context.getProperty("x"))
+  }
+
+  @Test
+  void conversionRule() {
+    File file = new File(ClassicTestConstants.GAFFER_INPUT_PREFIX + "conversionRule.groovy")
+    String dslText = file.text
+    configurator.run dslText
+
+    StringListAppender<ILoggingEvent> sla = (StringListAppender<ILoggingEvent>) root.getAppender("LIST");
+    assertNotNull(sla);
+    assertEquals(0, sla.strList.size());
+
+    assertEquals(Level.DEBUG, root.level);
+
+    String msg = "Simon says";
+    logger.debug(msg);
+    StatusPrinter.print context
+    assertEquals(1, sla.strList.size());
+    assertEquals(SampleConverter.SAMPLE_STR + " - " + msg, sla.strList.get(0));
+  }
+
+  @Test
+  void evaluatorWithMatcher() {
+    File file = new File(ClassicTestConstants.GAFFER_INPUT_PREFIX + "evaluatorWithMatcher.groovy")
+    String dslText = file.text
+    configurator.run dslText
+
+    ConsoleAppender ca = (ConsoleAppender) root.getAppender("STDOUT");
+    assertTrue ca.isStarted()
+
+    EvaluatorFilter ef = ca.getCopyOfAttachedFiltersList()[0];
+    assertTrue ef.isStarted()
+
+    JaninoEventEvaluator jee = ef.evaluator
+    assertTrue jee.isStarted()
+    Matcher m = jee.matcherList[0]
+    assertTrue m.isStarted()
+  }
+
+  @Test
+  void propertyCascading0() {
+    File file = new File(ClassicTestConstants.GAFFER_INPUT_PREFIX + "propertyCascading0.groovy")
+    String dslText = file.text
+    configurator.run dslText
+
+    ConsoleAppender ca = (ConsoleAppender) root.getAppender("STDOUT");
+    assertTrue ca.isStarted()
+
+    assertEquals("HELLO %m%n", ca.encoder.layout.pattern)
+  }
+  
+  @Test
+  void propertyCascading1() {
+    File file = new File(ClassicTestConstants.GAFFER_INPUT_PREFIX + "propertyCascading1.groovy")
+    String dslText = file.text
+    configurator.run dslText
+
+    ConsoleAppender ca = (ConsoleAppender) root.getAppender("STDOUT");
+    assertTrue ca.isStarted()
+    assertEquals("HELLO %m%n", ca.encoder.getLayout().pattern)
+  }
+
+  @Test
+  void propertyCascading2() {
+    context.putProperty("p", "HELLO");
+    File file = new File(ClassicTestConstants.GAFFER_INPUT_PREFIX + "propertyCascading2.groovy")
+    String dslText = file.text
+    configurator.run dslText
+
+    ConsoleAppender ca = (ConsoleAppender) root.getAppender("STDOUT");
+    assertTrue ca.isStarted()
+    assertEquals("HELLO %m%n", ca.encoder.getLayout().pattern)
+  }
 }
diff --git a/logback-classic/src/test/groovy/ch/qos/logback/classic/gaffer/PropertyUtilTest.groovy b/logback-classic/src/test/groovy/ch/qos/logback/classic/gaffer/PropertyUtilTest.groovy
index fbfe323..c10e196 100644
--- a/logback-classic/src/test/groovy/ch/qos/logback/classic/gaffer/PropertyUtilTest.groovy
+++ b/logback-classic/src/test/groovy/ch/qos/logback/classic/gaffer/PropertyUtilTest.groovy
@@ -1,16 +1,3 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
 package ch.qos.logback.classic.gaffer
 
 import org.junit.Test
diff --git a/logback-classic/src/test/groovy/ch/qos/logback/classic/sift/GSiftingAppenderTest.groovy b/logback-classic/src/test/groovy/ch/qos/logback/classic/sift/GSiftingAppenderTest.groovy
new file mode 100644
index 0000000..0d8d357
--- /dev/null
+++ b/logback-classic/src/test/groovy/ch/qos/logback/classic/sift/GSiftingAppenderTest.groovy
@@ -0,0 +1,111 @@
+/**
+ * Logback: the reliable, generic, fast and flexible logging framework.
+ * Copyright (C) 1999-2010, QOS.ch. All rights reserved.
+ *
+ * This program and the accompanying materials are dual-licensed under
+ * either the terms of the Eclipse Public License v1.0 as published by
+ * the Eclipse Foundation
+ *
+ *   or (per the licensee's choosing)
+ *
+ * under the terms of the GNU Lesser General Public License version 2.1
+ * as published by the Free Software Foundation.
+ */
+package ch.qos.logback.classic.sift
+
+import ch.qos.logback.classic.gaffer.GafferConfigurator
+
+import ch.qos.logback.classic.Logger
+import ch.qos.logback.classic.LoggerContext
+import ch.qos.logback.core.testUtil.RandomUtil
+import org.junit.Test
+import ch.qos.logback.classic.ClassicTestConstants
+import org.slf4j.MDC
+import static junit.framework.Assert.assertNotNull
+import ch.qos.logback.core.sift.AppenderTracker
+import ch.qos.logback.core.read.ListAppender
+import ch.qos.logback.core.util.StatusPrinter
+import static junit.framework.Assert.assertEquals
+import ch.qos.logback.core.FileAppender
+import ch.qos.logback.core.status.StatusChecker
+import ch.qos.logback.core.status.Status
+import static junit.framework.Assert.assertNull
+import org.junit.After
+import static ch.qos.logback.classic.ClassicTestConstants.OUTPUT_DIR_PREFIX;
+
+/**
+ * @author Ceki Gücü
+ */
+class GSiftingAppenderTest {
+
+  LoggerContext context = new LoggerContext();
+  Logger root = context.getLogger(Logger.ROOT_LOGGER_NAME)
+  Logger logger = context.getLogger(this.getClass())
+  int diff = RandomUtil.getPositiveInt();
+  GafferConfigurator configurator = new GafferConfigurator(context);
+  StatusChecker checker = new StatusChecker(context)
+
+  @After
+  public void tearDown() {
+    MDC.clear();  
+  }
+
+  AppenderTracker execute(String path) {
+    File file = new File(ClassicTestConstants.GAFFER_INPUT_PREFIX + path)
+    String dslText = file.text
+    configurator.run dslText
+
+    GSiftingAppender sa = (GSiftingAppender) root.getAppender("SIFT");
+    assertNotNull(sa)
+    AppenderTracker tracker = sa.getAppenderTracker();
+  }
+
+  @Test
+  void noDiscriminator() {
+    AppenderTracker tracker = execute("sift/noDiscriminator.groovy")
+    logger.debug("x")
+    ListAppender unknownAppender = tracker.get("unknown", System.currentTimeMillis())
+    assertNull(unknownAppender)
+    checker.containsMatch(Status.ERROR, "Missing discriminator. Aborting")
+  }
+
+  @Test
+  void sample0() {
+    AppenderTracker tracker = execute("sift/sample0.groovy")
+    logger.debug("x")
+    ListAppender unknownAppender = tracker.get("unknown", System.currentTimeMillis())
+    assertNotNull(unknownAppender)
+
+    MDC.put("userid", "a");
+    logger.debug("y");
+    ListAppender aAppender = tracker.get("a", System.currentTimeMillis())
+    assertNotNull(aAppender)
+
+    assertEquals(1, unknownAppender.list.size);
+    assertEquals("x", unknownAppender.list[0].message)
+    assertEquals(1, aAppender.list.size);
+    assertEquals("y", aAppender.list[0].message)
+  }
+
+  @Test
+  void sample1() {
+    AppenderTracker tracker = execute("sift/sample1.groovy")
+    logger.debug("x")
+
+    StatusPrinter.print context
+    FileAppender unknownAppender = tracker.get("unknown", System.currentTimeMillis())
+    assertNotNull(unknownAppender)
+    assertEquals("FILE-unknown", unknownAppender.name)
+    assertEquals(OUTPUT_DIR_PREFIX+"test-unknown.log", unknownAppender.file)
+
+    MDC.put("userid", "a");
+    logger.debug("y");
+    FileAppender aAppender = tracker.get("a", System.currentTimeMillis())
+    assertNotNull(aAppender)
+    assertEquals("FILE-a", aAppender.name)
+    assertEquals(OUTPUT_DIR_PREFIX+"test-a.log", aAppender.file)
+    assertEquals("a - %msg%n", aAppender.encoder.pattern)
+  }
+
+
+}
diff --git a/logback-classic/src/test/groovy/issues/logback811/LineNumTest.groovy b/logback-classic/src/test/groovy/issues/logback811/LineNumTest.groovy
deleted file mode 100644
index acaf502..0000000
--- a/logback-classic/src/test/groovy/issues/logback811/LineNumTest.groovy
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package issues.logback811
-
-import ch.qos.logback.core.util.StatusPrinter
-import org.junit.Test
-import org.slf4j.Logger
-import org.slf4j.LoggerFactory
-
-class LineNumTest {
-
-  // move logback.groovy to src/test/resources and runManually()
-
-  @Test
-  void runMannually() {
-    Logger logger = LoggerFactory.getLogger(this.class)
-    logger.debug("hello from logger on line 28")
-  }
-}
diff --git a/logback-classic/src/test/groovy/issues/logback811/logback._groovy b/logback-classic/src/test/groovy/issues/logback811/logback._groovy
deleted file mode 100644
index e4c02a6..0000000
--- a/logback-classic/src/test/groovy/issues/logback811/logback._groovy
+++ /dev/null
@@ -1,12 +0,0 @@
-
-import ch.qos.logback.classic.encoder.PatternLayoutEncoder
-import ch.qos.logback.core.ConsoleAppender
-import static ch.qos.logback.classic.Level.*
-
-appender("STDOUT", ConsoleAppender) {
-   encoder(PatternLayoutEncoder) {
-     pattern = "%date [%-5level] [%4.4line] - %msg%n"
-   }
-}
-
-root(DEBUG, ["STDOUT"])
\ No newline at end of file
diff --git a/logback-classic/src/test/input/gaffer/asyncAppender.groovy b/logback-classic/src/test/input/gaffer/asyncAppender.groovy
deleted file mode 100644
index 2fd3337..0000000
--- a/logback-classic/src/test/input/gaffer/asyncAppender.groovy
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-
-import ch.qos.logback.classic.AsyncAppender
-import ch.qos.logback.classic.PatternLayout
-import ch.qos.logback.core.ConsoleAppender
-import ch.qos.logback.core.encoder.LayoutWrappingEncoder
-
-appender("STDOUT", ConsoleAppender) {
-  encoder(LayoutWrappingEncoder) {
-    layout(PatternLayout) {
-      pattern = "${p} %m%n"
-    }
-  }
-}
-appender("STDOUT-ASYNC", AsyncAppender) {
-  appenderRef('STDOUT')
-}
-root(DEBUG, ["STDOUT-ASYNC"])
-
diff --git a/logback-classic/src/test/input/issue/logback292.xml b/logback-classic/src/test/input/issue/logback292.xml
deleted file mode 100644
index c8df3e4..0000000
--- a/logback-classic/src/test/input/issue/logback292.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<configuration>
-  <bla/>
-</configuration>
\ No newline at end of file
diff --git a/logback-classic/src/test/input/joran/jul/levelChangePropagator0.xml b/logback-classic/src/test/input/joran/jul/levelChangePropagator0.xml
index bf5779d..02b90c8 100644
--- a/logback-classic/src/test/input/joran/jul/levelChangePropagator0.xml
+++ b/logback-classic/src/test/input/joran/jul/levelChangePropagator0.xml
@@ -3,7 +3,7 @@
   <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
     <resetJUL>true</resetJUL>
   </contextListener>
-  <logger name="a.b.c.${diff}" level="WARN" />
+  <logger name="a.b.c" level="WARN" />
   <root level="TRACE"/>
 
 </configuration>
diff --git a/logback-classic/src/test/input/joran/jul/levelChangePropagator1.xml b/logback-classic/src/test/input/joran/jul/levelChangePropagator1.xml
index 9810d8b..5740c58 100644
--- a/logback-classic/src/test/input/joran/jul/levelChangePropagator1.xml
+++ b/logback-classic/src/test/input/joran/jul/levelChangePropagator1.xml
@@ -1,8 +1,7 @@
 <configuration debug="false">
 
   <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator"/>
-
-  <logger name="a.b.c.${diff}" level="WARN" />
+  <logger name="a.b.c" level="WARN" />
   <root level="TRACE"/>
 
 </configuration>
diff --git a/logback-classic/src/test/input/joran/sift/compositeProperty.xml b/logback-classic/src/test/input/joran/sift/compositeProperty.xml
deleted file mode 100644
index 690935a..0000000
--- a/logback-classic/src/test/input/joran/sift/compositeProperty.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-<configuration debug="true">
-
-  <property name="X" value="composite"/>  
-
-  <appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
-    <discriminator>
-      <key>compositeProperty</key>
-      <defaultValue>default</defaultValue>
-    </discriminator>
-    <sift>
-      <property name="Z" value="${X}"/>  
-
-      <appender name="LIST-${compositeProperty}"
-        class="ch.qos.logback.core.testUtil.StringListAppender">
-        <layout>
-          <pattern>${Z}%msg</pattern>                       
-        </layout>
-      </appender>
-    </sift>
-  </appender>
-
-  <root level="DEBUG">
-    <appender-ref ref="SIFT" />
-  </root>
-
-</configuration>
diff --git a/logback-classic/src/test/input/joran/sift/defaultLayoutRule.xml b/logback-classic/src/test/input/joran/sift/defaultLayoutRule.xml
index 6558e69..0e24199 100644
--- a/logback-classic/src/test/input/joran/sift/defaultLayoutRule.xml
+++ b/logback-classic/src/test/input/joran/sift/defaultLayoutRule.xml
@@ -1,15 +1,16 @@
 <configuration debug="true">
 
   <appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
+
     <discriminator>
-      <key>userid</key>
+      <Key>userid</Key>
       <defaultValue>default</defaultValue>
     </discriminator>
     <sift>
       <appender name="LIST-${userid}"
         class="ch.qos.logback.core.testUtil.StringListAppender">
         <layout>
-          <pattern>%level %msg</pattern>
+          <Pattern>%level %msg</Pattern>
         </layout>
       </appender>
     </sift>
diff --git a/logback-classic/src/test/input/joran/sift/hoard0.xml b/logback-classic/src/test/input/joran/sift/hoard0.xml
index b5107e3..a0a084f 100644
--- a/logback-classic/src/test/input/joran/sift/hoard0.xml
+++ b/logback-classic/src/test/input/joran/sift/hoard0.xml
@@ -3,16 +3,17 @@
 
 <configuration debug="true">
 
-  <appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
+  <appender name="SIFT"
+    class="ch.qos.logback.classic.sift.SiftingAppender">
 
     <mdcKey>userid</mdcKey>
     <default>asdad</default>
     <sift>
       <appender name="FILE-${userid}" class="ch.qos.logback.core.FileAppender">
-        <file>${userid}.log</file>
-        <append>true</append>
+        <File>${userid}.log</File>
+        <Append>true</Append>
         <layout class="ch.qos.logback.classic.PatternLayout">
-          <pattern>%d [%thread] %level %logger{35} - %msg%n</pattern>
+          <Pattern>%d [%thread] %level %logger{35} - %msg%n</Pattern>
         </layout>
       </appender>
     </sift>
diff --git a/logback-classic/src/test/input/joran/sift/lbclassic203.xml b/logback-classic/src/test/input/joran/sift/lbclassic203.xml
index 29eb02b..c227680 100644
--- a/logback-classic/src/test/input/joran/sift/lbclassic203.xml
+++ b/logback-classic/src/test/input/joran/sift/lbclassic203.xml
@@ -9,7 +9,7 @@
   <appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
 
     <discriminator>
-      <key>userid</key>
+      <Key>userid</Key>
       <defaultValue>smoke</defaultValue>
     </discriminator>
     <sift>
diff --git a/logback-classic/src/test/input/joran/sift/lingering.xml b/logback-classic/src/test/input/joran/sift/lingering.xml
deleted file mode 100644
index feaa64b..0000000
--- a/logback-classic/src/test/input/joran/sift/lingering.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE configuration>
-
-<configuration debug="true">
-
-  <appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
-
-    <discriminator>
-      <key>linger</key>
-      <defaultValue>linger</defaultValue>
-    </discriminator>
-    <sift>
-      <appender name="list-${linger}"
-        class="ch.qos.logback.core.read.ListAppender" />
-    </sift>
-  </appender>
-
-  <root level="DEBUG">
-    <appender-ref ref="SIFT" />
-  </root>
-
-</configuration>
diff --git a/logback-classic/src/test/input/joran/sift/maxAppenderCount.xml b/logback-classic/src/test/input/joran/sift/maxAppenderCount.xml
deleted file mode 100644
index 086389a..0000000
--- a/logback-classic/src/test/input/joran/sift/maxAppenderCount.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE configuration>
-
-<configuration debug="true">
-
-    <appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
-        <discriminator>
-            <key>max</key>
-            <defaultValue>default</defaultValue>
-        </discriminator>
-        <maxAppenderCount>5</maxAppenderCount>
-        <sift>
-            <appender name="list-${userid}"
-                      class="ch.qos.logback.core.read.ListAppender"/>
-        </sift>
-    </appender>
-
-    <root level="DEBUG">
-        <appender-ref ref="SIFT"/>
-    </root>
-
-</configuration>
\ No newline at end of file
diff --git a/logback-classic/src/test/input/joran/sift/multipleNesting.xml b/logback-classic/src/test/input/joran/sift/multipleNesting.xml
index e116621..9999800 100644
--- a/logback-classic/src/test/input/joran/sift/multipleNesting.xml
+++ b/logback-classic/src/test/input/joran/sift/multipleNesting.xml
@@ -6,12 +6,14 @@
   <appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
 
     <discriminator>
-      <key>userid</key>
-      <defaultValue>multipleDefault</defaultValue>
+      <Key>userid</Key>
+      <defaultValue>smoke</defaultValue>
     </discriminator>
     <sift>
-      <appender name="a-${userid}" class="ch.qos.logback.core.read.ListAppender" />
-      <appender name="b-${userid}"  class="ch.qos.logback.core.read.ListAppender" />
+      <appender name="a-${userid}"
+        class="ch.qos.logback.core.read.ListAppender" />
+     <appender name="b-${userid}"
+        class="ch.qos.logback.core.read.ListAppender" />
     </sift>
   </appender>
 
diff --git a/logback-classic/src/test/input/joran/sift/propertyDefinedInSiftElement.xml b/logback-classic/src/test/input/joran/sift/propertyDefinedInSiftElement.xml
deleted file mode 100644
index db506ba..0000000
--- a/logback-classic/src/test/input/joran/sift/propertyDefinedInSiftElement.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<configuration debug="true">
-
-  <appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
-    <discriminator>
-      <key>propertyDefinedWithinSift</key>
-      <defaultValue>default</defaultValue>
-    </discriminator>
-    <sift>
-      <property name="X" value="Y"/>  
-
-      <appender name="LIST-${propertyDefinedWithinSift}"
-        class="ch.qos.logback.core.testUtil.StringListAppender">
-        <layout>
-          <pattern>${X}%msg</pattern>                       
-        </layout>
-      </appender>
-    </sift>
-  </appender>
-
-  <root level="DEBUG">
-    <appender-ref ref="SIFT" />
-  </root>
-
-</configuration>
diff --git a/logback-classic/src/test/input/joran/sift/propertyPropagation.xml b/logback-classic/src/test/input/joran/sift/propertyPropagation.xml
deleted file mode 100644
index bc624a3..0000000
--- a/logback-classic/src/test/input/joran/sift/propertyPropagation.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<configuration debug="true">
-
-
-  <property name="X" value="Y"/>  
-
-  <appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
-    <discriminator>
-      <key>localProperty</key>
-      <defaultValue>default</defaultValue>
-    </discriminator>
-    <sift>
-      <appender name="LIST-${localProperty}"
-        class="ch.qos.logback.core.testUtil.StringListAppender">
-        <layout>
-          <pattern>${X}%msg</pattern>                       
-        </layout>
-      </appender>
-    </sift>
-  </appender>
-
-  <root level="DEBUG">
-    <appender-ref ref="SIFT" />
-  </root>
-
-</configuration>
diff --git a/logback-classic/src/test/input/joran/sift/smoke.xml b/logback-classic/src/test/input/joran/sift/smoke.xml
index 38dbaff..d93a075 100644
--- a/logback-classic/src/test/input/joran/sift/smoke.xml
+++ b/logback-classic/src/test/input/joran/sift/smoke.xml
@@ -6,8 +6,8 @@
   <appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
 
     <discriminator>
-      <key>userid</key>
-      <defaultValue>smokeDefault</defaultValue>
+      <Key>userid</Key>
+      <defaultValue>smoke</defaultValue>
     </discriminator>
     <sift>
       <appender name="list-${userid}"
diff --git a/logback-classic/src/test/input/joran/sift/timeout.xml b/logback-classic/src/test/input/joran/sift/timeout.xml
deleted file mode 100644
index a37cdab..0000000
--- a/logback-classic/src/test/input/joran/sift/timeout.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE configuration>
-
-<configuration debug="true">
-
-    <appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
-
-        <discriminator>
-            <key>timeout</key>
-            <defaultValue>smoke</defaultValue>
-        </discriminator>
-        <timeout>30 seconds</timeout>
-        <sift>
-            <appender name="list-${userid}"
-                      class="ch.qos.logback.core.read.ListAppender"/>
-        </sift>
-    </appender>
-
-    <root level="DEBUG">
-        <appender-ref ref="SIFT"/>
-    </root>
-
-</configuration>
\ No newline at end of file
diff --git a/logback-classic/src/test/input/joran/sift/unsetDefaultValueProperty.xml b/logback-classic/src/test/input/joran/sift/unsetDefaultValueProperty.xml
index 2a43038..301dd71 100644
--- a/logback-classic/src/test/input/joran/sift/unsetDefaultValueProperty.xml
+++ b/logback-classic/src/test/input/joran/sift/unsetDefaultValueProperty.xml
@@ -6,7 +6,7 @@
   <appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
 
     <discriminator>
-      <key>userid</key>
+      <Key>userid</Key>
     </discriminator>
     <sift>
       <appender name="list-${userid}"
diff --git a/logback-classic/src/test/input/joran/sift/zeroNesting.xml b/logback-classic/src/test/input/joran/sift/zeroNesting.xml
index 664551b..dca68c1 100644
--- a/logback-classic/src/test/input/joran/sift/zeroNesting.xml
+++ b/logback-classic/src/test/input/joran/sift/zeroNesting.xml
@@ -6,8 +6,8 @@
   <appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
 
     <discriminator>
-      <key>userid</key>
-      <defaultValue>zeroDefault</defaultValue>
+      <Key>userid</Key>
+      <defaultValue>smoke</defaultValue>
     </discriminator>
     <sift>     
     </sift>
diff --git a/logback-classic/src/test/input/joran/smtp/customBufferSize.xml b/logback-classic/src/test/input/joran/smtp/customBufferSize.xml
index f69ef2e..573597a 100644
--- a/logback-classic/src/test/input/joran/smtp/customBufferSize.xml
+++ b/logback-classic/src/test/input/joran/smtp/customBufferSize.xml
@@ -5,9 +5,9 @@
     <SMTPPort>${port}</SMTPPort>
     <To>nospam at qos.ch</To>
     <From>user at host.dom</From>
-    <Subject>testCustomBufferSize %logger - %m</Subject>
+    <Subject>%logger - %m</Subject>
 
-    <CyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker">
+    <CyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTrackerImpl">
       <bufferSize>1</bufferSize>
     </CyclicBufferTracker>
     
diff --git a/logback-classic/src/test/input/joran/smtp/customEvaluator.xml b/logback-classic/src/test/input/joran/smtp/customEvaluator.xml
index c528119..babaf6f 100644
--- a/logback-classic/src/test/input/joran/smtp/customEvaluator.xml
+++ b/logback-classic/src/test/input/joran/smtp/customEvaluator.xml
@@ -5,7 +5,7 @@
     <SMTPPort>${port}</SMTPPort>
     <To>nospam at qos.ch</To>
     <From>user at host.dom</From>
-    <Subject>testCustomEvaluator %logger - %m</Subject>
+    <Subject>%logger - %m</Subject>
     <evaluator class="ch.qos.logback.classic.net.CounterBasedEvaluator">
       <limit>2</limit>
     </evaluator>
diff --git a/logback-classic/src/test/input/joran/timestamp-context.xml b/logback-classic/src/test/input/joran/timestamp-context.xml
deleted file mode 100644
index dd307ed..0000000
--- a/logback-classic/src/test/input/joran/timestamp-context.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<configuration>
-  <timestamp key="testTimestamp" datePattern="yyyy-MM" scope="context"/>
-</configuration>
-  
\ No newline at end of file
diff --git a/logback-classic/src/test/input/joran/timestamp-local.xml b/logback-classic/src/test/input/joran/timestamp-local.xml
deleted file mode 100644
index 1f49d9b..0000000
--- a/logback-classic/src/test/input/joran/timestamp-local.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<configuration>
-  <timestamp key="testTimestamp" datePattern="yyyy-MM"/>
-  <property scope="system"  
-  	name="ch.qos.logback.classic.joran.JoranConfiguratorTest.timestampLocal" 
-  	value="today is ${testTimestamp}"/>
-</configuration>
-  
\ No newline at end of file
diff --git a/logback-classic/src/test/input/joran/timestamp.xml b/logback-classic/src/test/input/joran/timestamp.xml
new file mode 100644
index 0000000..65be6ec
--- /dev/null
+++ b/logback-classic/src/test/input/joran/timestamp.xml
@@ -0,0 +1,4 @@
+<configuration>
+  <timestamp key="testTimestamp" datePattern="yyyy-MM"/>
+</configuration>
+  
\ No newline at end of file
diff --git a/logback-classic/src/test/input/serialization/logger_v1.0.11.ser b/logback-classic/src/test/input/serialization/logger_v1.0.11.ser
deleted file mode 100644
index cfbe280..0000000
Binary files a/logback-classic/src/test/input/serialization/logger_v1.0.11.ser and /dev/null differ
diff --git a/logback-classic/src/test/input/serialization/logger_v1.0.12.ser b/logback-classic/src/test/input/serialization/logger_v1.0.12.ser
deleted file mode 100644
index bf7d67b..0000000
Binary files a/logback-classic/src/test/input/serialization/logger_v1.0.12.ser and /dev/null differ
diff --git a/logback-classic/src/test/input/turbo/scan_logback_474.xml b/logback-classic/src/test/input/turbo/scan_lbclassic154.xml
similarity index 85%
rename from logback-classic/src/test/input/turbo/scan_logback_474.xml
rename to logback-classic/src/test/input/turbo/scan_lbclassic154.xml
index d00c97f..43c441f 100644
--- a/logback-classic/src/test/input/turbo/scan_logback_474.xml
+++ b/logback-classic/src/test/input/turbo/scan_lbclassic154.xml
@@ -1,7 +1,7 @@
 
 <configuration scan="true" scanPeriod="50 millisecond">
 
-  <appender name="default" class="ch.qos.logback.classic.issue.logback474.LoggingAppender">
+  <appender name="default" class="ch.qos.logback.classic.issue.lbclassic154.LoggingAppender">
   </appender>
 
   <logger name="Ignore" level="ERROR" additivity="false"/>
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/AllClassicTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/AllClassicTest.java
index 7406962..e442d4c 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/AllClassicTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/AllClassicTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/AsyncAppenderTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/AsyncAppenderTest.java
index e100446..967d514 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/AsyncAppenderTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/AsyncAppenderTest.java
@@ -1,29 +1,20 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
 package ch.qos.logback.classic;
 
 import ch.qos.logback.classic.net.testObjectBuilders.LoggingEventBuilderInContext;
+import ch.qos.logback.classic.net.testObjectBuilders.LoggingEventWithParametersBuilder;
 import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.UnsynchronizedAppenderBase;
 import ch.qos.logback.core.read.ListAppender;
 import ch.qos.logback.core.status.OnConsoleStatusListener;
+import ch.qos.logback.core.status.StatusChecker;
 import ch.qos.logback.core.testUtil.RandomUtil;
 import org.junit.Before;
 import org.junit.Test;
 import org.slf4j.MDC;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
 
 /**
  * @author Ceki Gülcü
@@ -36,6 +27,7 @@ public class AsyncAppenderTest {
   AsyncAppender asyncAppender = new AsyncAppender();
   ListAppender<ILoggingEvent> listAppender = new ListAppender<ILoggingEvent>();
   OnConsoleStatusListener onConsoleStatusListener = new OnConsoleStatusListener();
+  StatusChecker statusChecker = new StatusChecker(context);
   LoggingEventBuilderInContext builder = new LoggingEventBuilderInContext(context, thisClassName, UnsynchronizedAppenderBase.class.getName());
   int diff = RandomUtil.getPositiveInt();
 
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/ClassicTestConstants.java b/logback-classic/src/test/java/ch/qos/logback/classic/ClassicTestConstants.java
index 2f7c4e3..ff5276d 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/ClassicTestConstants.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/ClassicTestConstants.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/Foo.java b/logback-classic/src/test/java/ch/qos/logback/classic/Foo.java
index f7e3a80..490a91c 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/Foo.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/Foo.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/HLogger.java b/logback-classic/src/test/java/ch/qos/logback/classic/HLogger.java
index 1190231..1d5b2fa 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/HLogger.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/HLogger.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/HLoggerContext.java b/logback-classic/src/test/java/ch/qos/logback/classic/HLoggerContext.java
index a5f369c..64b0c9d 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/HLoggerContext.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/HLoggerContext.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/LoggerContextDeadlockTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/LoggerContextDeadlockTest.java
index c5347a0..920b0d6 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/LoggerContextDeadlockTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/LoggerContextDeadlockTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/LoggerContextPerfTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/LoggerContextPerfTest.java
deleted file mode 100644
index 51747da..0000000
--- a/logback-classic/src/test/java/ch/qos/logback/classic/LoggerContextPerfTest.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic;
-
-
-import ch.qos.logback.classic.corpus.CorpusModel;
-import ch.qos.logback.core.contention.*;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import static org.junit.Assert.fail;
-
-public class LoggerContextPerfTest {
-
-  static int THREAD_COUNT = 10000;
-  int totalTestDuration = 4000;
-
-  LoggerContext loggerContext = new LoggerContext();
-
-  ThreadedThroughputCalculator harness = new ThreadedThroughputCalculator(totalTestDuration);
-  RunnableWithCounterAndDone[] runnableArray = buildRunnableArray();
-
-  CorpusModel corpusMaker;
-
-  @Before
-  public void setUp() throws Exception {
-  }
-
-  private RunnableWithCounterAndDone[] buildRunnableArray() {
-    RunnableWithCounterAndDone[] runnableArray = new  RunnableWithCounterAndDone[THREAD_COUNT];
-    for(int i = 0; i < THREAD_COUNT; i++) {
-      runnableArray[i] = new GetLoggerRunnable();
-    }
-    return runnableArray;
-  }
-
-  // Results computed on a Intel i7
-  // 1 thread
-  // 13'107 ops per milli using Hashtable for LoggerContext.loggerCache
-  // 15'258 ops per milli using ConcurrentHashMap for LoggerContext.loggerCache
-
-  // 10 threads
-  //  8'468 ops per milli using Hashtable for LoggerContext.loggerCache
-  // 58'945 ops per milli using ConcurrentHashMap for LoggerContext.loggerCache
-
-  // 100 threads
-  //  8'863 ops per milli using Hashtable for LoggerContext.loggerCache
-  // 34'810 ops per milli using ConcurrentHashMap for LoggerContext.loggerCache
-
-  // 1'000 threads
-  //  8'188 ops per milli using Hashtable for LoggerContext.loggerCache
-  // 24'012 ops per milli using ConcurrentHashMap for LoggerContext.loggerCache
-
-  // 10'000 threads
-  // 7'595 ops per milli using Hashtable for LoggerContext.loggerCache
-  // 8'989 ops per milli using ConcurrentHashMap for LoggerContext.loggerCache
-
-  @Test
-  public void computeResults() throws InterruptedException {
-    harness.execute(runnableArray);
-    harness.printThroughput("getLogger performance: ", true);
-  }
-
-  private class GetLoggerRunnable extends RunnableWithCounterAndDone {
-
-    final int burstLength = 3;
-    public void run() {
-      while (!isDone()) {
-        long i = counter % burstLength;
-
-        loggerContext.getLogger("a"+i);
-        counter++;
-        if(i == 0) {
-          Thread.yield();
-        }
-      }
-    }
-  }
-}
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/LoggerContextTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/LoggerContextTest.java
index e92b121..8e15ad9 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/LoggerContextTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/LoggerContextTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -164,10 +164,10 @@ public class LoggerContextTest {
 
     StatusManager sm = lc.getStatusManager();
     assertTrue("StatusManager has recieved too many messages",
-            sm.getCount() == 1);
+        sm.getCount() == 1);
   }
 
-
+  
   @Test
   public void resetTest() {
 
@@ -182,12 +182,12 @@ public class LoggerContextTest {
     assertTrue(root.isDebugEnabled());
     assertEquals(Level.DEBUG, a.getEffectiveLevel());
     assertEquals(Level.DEBUG, ab.getEffectiveLevel());
-
-    assertEquals(Level.DEBUG, root.getLevel());
+    
+    assertEquals(Level.DEBUG, root.getLevel());    
     assertNull(a.getLevel());
     assertNull(ab.getLevel());
   }
-
+  
   // http://jira.qos.ch/browse/LBCLASSIC-89
   @Test
   public void turboFilterStopOnReset() {
@@ -198,7 +198,7 @@ public class LoggerContextTest {
     lc.reset();
     assertFalse(nopTF.isStarted());
   }
-
+  
   @Test
   public void resetTest_LBCORE_104() {
     lc.putProperty("keyA", "valA");
@@ -209,7 +209,7 @@ public class LoggerContextTest {
     assertNull(lc.getProperty("keyA"));
     assertNull(lc.getObject("keyA"));
   }
-
+  
   @Test
   public void levelResetTest() {
     Logger root = lc.getLogger(Logger.ROOT_LOGGER_NAME);
@@ -219,32 +219,11 @@ public class LoggerContextTest {
     assertFalse(root.isTraceEnabled());
     assertTrue(root.isDebugEnabled());
   }
-
+  
   @Test
   public void evaluatorMapPostReset() {
     lc.reset();
     assertNotNull(lc.getObject(CoreConstants.EVALUATOR_MAP));
   }
-
-  // http://jira.qos.ch/browse/LOGBACK-142
-  @Test
-  public void concurrentModification() {
-    final int runLen = 100;
-    Thread thread = new Thread(new Runnable() {
-      public void run() {
-        for (int i = 0; i < runLen; i++)  {
-          lc.getLogger("a" + i);
-          Thread.yield();
-        }
-      }
-    });
-    thread.start();
-
-    for (int i = 0; i < runLen; i++) {
-      lc.putProperty("a" + i, "val");
-      Thread.yield();
-    }
-
-  }
-
+  
 }
\ No newline at end of file
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/LoggerPerfTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/LoggerPerfTest.java
index 98de0eb..c73a3a0 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/LoggerPerfTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/LoggerPerfTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -15,9 +15,7 @@ package ch.qos.logback.classic;
 
 import static org.junit.Assert.assertTrue;
 
-import ch.qos.logback.core.testUtil.EnvUtilForTests;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.slf4j.helpers.BogoPerf;
 
@@ -26,9 +24,8 @@ import ch.qos.logback.classic.turbo.NOPTurboFilter;
 import ch.qos.logback.core.CoreConstants;
 import ch.qos.logback.core.UnsynchronizedAppenderBase;
 import ch.qos.logback.core.helpers.NOPAppender;
+import ch.qos.logback.core.testUtil.Env;
 
-
- at Ignore
 public class LoggerPerfTest {
 
   static final long NANOS_IN_ONE_SEC = 1000 * 1000 * 1000L;
@@ -149,7 +146,7 @@ public class LoggerPerfTest {
 
   @Test
   public void durationOfEnabledLog() {
-    if (EnvUtilForTests.isLinux()) {
+    if (Env.isLinux()) {
       // the JIT on Linux behaves very differently
       return;
     }
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/LoggerSerializationTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/LoggerSerializationTest.java
index ec20347..e575b5f 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/LoggerSerializationTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/LoggerSerializationTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,21 +13,19 @@
  */
 package ch.qos.logback.classic;
 
-import java.io.*;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
 
-import ch.qos.logback.core.util.CoreTestConstants;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.slf4j.LoggerFactory;
 
-import static junit.framework.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
 public class LoggerSerializationTest {
 
-  static final String SERIALIZATION_PREFIX = CoreTestConstants.TEST_INPUT_PREFIX+"/serialization/";
-
   // force SLF4J initialization for subsequent Logger readResolce ooperaiton
   org.slf4j.Logger unused = LoggerFactory.getLogger(this.getClass());
   LoggerContext lc;
@@ -52,103 +50,25 @@ public class LoggerSerializationTest {
     lc = null;
     logger = null;
   }
-
+  
   @Test
-  public void basicSerialization() throws IOException, ClassNotFoundException {
+  public void serialization() throws IOException, ClassNotFoundException {
     Foo foo = new Foo(logger);
     foo.doFoo();
     Foo fooBack = writeAndRead(foo);
     fooBack.doFoo();
   }
 
-  @Test
-  public void deepTreeSerialization() throws IOException {
-    // crate a tree of loggers under "aaaaaaaa"
-    Logger a = lc.getLogger("aaaaaaaa");
-    lc.getLogger("aaaaaaaa.a");
-    lc.getLogger("aaaaaaaa.a.a");
-    lc.getLogger("aaaaaaaa.a.b");
-    lc.getLogger("aaaaaaaa.a.c");
-    lc.getLogger("aaaaaaaa.a.d");
-
-    lc.getLogger("aaaaaaaa.b");
-    lc.getLogger("aaaaaaaa.b.a");
-    lc.getLogger("aaaaaaaa.b.b");
-    lc.getLogger("aaaaaaaa.b.c");
-    lc.getLogger("aaaaaaaa.b.d");
-
-    lc.getLogger("aaaaaaaa.c");
-    lc.getLogger("aaaaaaaa.c.a");
-    lc.getLogger("aaaaaaaa.c.b");
-    lc.getLogger("aaaaaaaa.c.c");
-    lc.getLogger("aaaaaaaa.c.d");
-
-    lc.getLogger("aaaaaaaa.d");
-    lc.getLogger("aaaaaaaa.d.a");
-    lc.getLogger("aaaaaaaa.d.b");
-    lc.getLogger("aaaaaaaa.d.c");
-    lc.getLogger("aaaaaaaa.d.d");
-
-    Logger b = lc.getLogger("b");
-
-    writeObject(oos, a);
-    oos.close();
-    int sizeA = bos.size();
-
-    bos = new ByteArrayOutputStream();
-    oos = new ObjectOutputStream(bos);
-
-    writeObject(oos, b);
-    oos.close();
-    int sizeB = bos.size();
-
-    assertTrue("serialized logger should be less than 100 bytes", sizeA < 100);
-    // logger tree should not influnce serialization
-    assertTrue("serialized loggers should be nearly the same size a:" + sizeA + ", sizeB:" + sizeB, (sizeA - sizeB) < 10);
-  }
-
   private Foo writeAndRead(Foo foo) throws IOException,
-          ClassNotFoundException {
-    writeObject(oos, foo);
+      ClassNotFoundException {
+    oos.writeObject(foo);
+    oos.flush();
+    oos.close();
     ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
     inputStream = new ObjectInputStream(bis);
-    Foo fooBack = readFooObject(inputStream);
+
+    Foo fooBack =  (Foo) inputStream.readObject();
     inputStream.close();
     return fooBack;
   }
-
-  Foo readFooObject(ObjectInputStream inputStream) throws IOException, ClassNotFoundException {
-    return (Foo) readObject(inputStream);
-  }
-  private Object readObject(ObjectInputStream inputStream) throws IOException, ClassNotFoundException {
-    return inputStream.readObject();
-  }
-
-  private void writeObject(ObjectOutputStream oos, Object o) throws IOException {
-    oos.writeObject(o);
-    oos.flush();
-    oos.close();
-  }
-
-  @Test
-  public void testCompatibilityWith_v1_0_11 () throws IOException, ClassNotFoundException {
-    FileInputStream fis = new FileInputStream(SERIALIZATION_PREFIX+"logger_v1.0.11.ser");
-    ObjectInputStream ois = new ObjectInputStream(fis);
-    Logger a = (Logger) ois.readObject();
-    ois.close();
-    assertEquals("a", a.getName());
-  }
-
-  // interestingly enough, logback 1.0.11 and earlier can also read loggers serialized by 1.0.12.
-  // fields not serialized are set to their default values and since the fields are not
-  // used, it works out nicely
-  @Test
-  public void testCompatibilityWith_v1_0_12 () throws IOException, ClassNotFoundException {
-    FileInputStream fis = new FileInputStream(SERIALIZATION_PREFIX+"logger_v1.0.12.ser");
-    ObjectInputStream ois = new ObjectInputStream(fis);
-    Logger a = (Logger) ois.readObject();
-    ois.close();
-    assertEquals("a", a.getName());
-  }
-
 }
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/LoggerTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/LoggerTest.java
index 9a2d2b2..fa4fa0f 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/LoggerTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/LoggerTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/LoggerTestHelper.java b/logback-classic/src/test/java/ch/qos/logback/classic/LoggerTestHelper.java
index 94601be..d106a11 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/LoggerTestHelper.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/LoggerTestHelper.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/MDCTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/MDCTest.java
index 28911c3..f6b0490 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/MDCTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/MDCTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/MDCTestThread.java b/logback-classic/src/test/java/ch/qos/logback/classic/MDCTestThread.java
index e10e31d..ac26ec0 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/MDCTestThread.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/MDCTestThread.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/LoggerMessageFormattingTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/MessageFormattingTest.java
similarity index 93%
rename from logback-classic/src/test/java/ch/qos/logback/classic/LoggerMessageFormattingTest.java
rename to logback-classic/src/test/java/ch/qos/logback/classic/MessageFormattingTest.java
index 390852a..aa888e1 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/LoggerMessageFormattingTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/MessageFormattingTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -21,7 +21,7 @@ import org.junit.Test;
 import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.read.ListAppender;
 
-public class LoggerMessageFormattingTest {
+public class MessageFormattingTest  {
 
   LoggerContext lc;
   ListAppender<ILoggingEvent> listAppender;
@@ -81,6 +81,4 @@ public class LoggerMessageFormattingTest {
     assertEquals("12", formattedMessage);
   }
 
-
-
 }
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/PackageTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/PackageTest.java
index 31e61d1..8f9b686 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/PackageTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -21,7 +21,7 @@ import org.junit.runners.Suite.SuiteClasses;
 @SuiteClasses({LoggerContextTest.class, LoggerPerfTest.class,
         ScenarioBasedLoggerContextTest.class, PatternLayoutTest.class,
         LoggerTest.class, LoggerSerializationTest.class,
-        LoggerMessageFormattingTest.class, MDCTest.class,
+        MessageFormattingTest.class, MDCTest.class,
         TurboFilteringInLoggerTest.class,
         AsyncAppenderTest.class})
 public class PackageTest {
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/PatternLayoutTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/PatternLayoutTest.java
index faa058b..97132c9 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/PatternLayoutTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/PatternLayoutTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,6 +13,19 @@
  */
 package ch.qos.logback.classic;
 
+import static ch.qos.logback.classic.ClassicTestConstants.ISO_REGEX;
+import static ch.qos.logback.classic.ClassicTestConstants.MAIN_REGEX;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import ch.qos.logback.core.util.StatusPrinter;
+import org.junit.Before;
+import org.junit.Test;
+
 import ch.qos.logback.classic.joran.JoranConfigurator;
 import ch.qos.logback.classic.pattern.ConverterTest;
 import ch.qos.logback.classic.spi.ILoggingEvent;
@@ -23,15 +36,6 @@ import ch.qos.logback.core.joran.spi.JoranException;
 import ch.qos.logback.core.pattern.PatternLayoutBase;
 import ch.qos.logback.core.pattern.parser.AbstractPatternLayoutBaseTest;
 import ch.qos.logback.core.testUtil.StringListAppender;
-import ch.qos.logback.core.util.OptionHelper;
-import ch.qos.logback.core.util.StatusPrinter;
-import org.junit.Before;
-import org.junit.Test;
-import org.slf4j.MDC;
-
-import static ch.qos.logback.classic.ClassicTestConstants.ISO_REGEX;
-import static ch.qos.logback.classic.ClassicTestConstants.MAIN_REGEX;
-import static org.junit.Assert.*;
 
 public class PatternLayoutTest extends AbstractPatternLayoutBaseTest<ILoggingEvent> {
 
@@ -41,8 +45,9 @@ public class PatternLayoutTest extends AbstractPatternLayoutBaseTest<ILoggingEve
   Logger root = lc.getLogger(Logger.ROOT_LOGGER_NAME);
 
   ILoggingEvent le;
+  List<String> optionList = new ArrayList<String>();
 
-	public PatternLayoutTest() {
+  public PatternLayoutTest() {
     super();
     Exception ex = new Exception("Bogus exception");
     le = makeLoggingEvent(ex);
@@ -142,20 +147,6 @@ public class PatternLayoutTest extends AbstractPatternLayoutBaseTest<ILoggingEve
     assertTrue(val.matches(regex));
   }
 
-  @Test
-  public void mdcWithDefaultValue() {
-    String pattern = "%msg %mdc{foo} %mdc{bar:-[null]}";
-    pl.setPattern(OptionHelper.substVars(pattern, lc));
-    pl.start();
-    MDC.put("foo", "foo");
-    try {
-      String val = pl.doLayout(getEventObject());
-      assertEquals("Some message foo [null]", val);
-    } finally {
-      MDC.remove("foo");
-    }
-  }
-
 
   @Test
   public void contextNameTest() {
@@ -166,15 +157,6 @@ public class PatternLayoutTest extends AbstractPatternLayoutBaseTest<ILoggingEve
     assertEquals("aValue", val);
   }
 
-  @Test
-  public void cnTest() {
-    pl.setPattern("%cn");
-    lc.setName("aValue");
-    pl.start();
-    String val = pl.doLayout(getEventObject());
-    assertEquals("aValue", val);
-  }
-
   @Override
   public Context getContext() {
     return lc;
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/ScenarioBasedLoggerContextTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/ScenarioBasedLoggerContextTest.java
index 1e4401c..76486d8 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/ScenarioBasedLoggerContextTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/ScenarioBasedLoggerContextTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/TurboFilteringInLoggerTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/TurboFilteringInLoggerTest.java
index 40967ed..eefb617 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/TurboFilteringInLoggerTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/TurboFilteringInLoggerTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/boolex/ConditionalWithoutJanino.java b/logback-classic/src/test/java/ch/qos/logback/classic/boolex/ConditionalWithoutJanino.java
index 82003f7..ae3b8b1 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/boolex/ConditionalWithoutJanino.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/boolex/ConditionalWithoutJanino.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -42,7 +42,7 @@ public class ConditionalWithoutJanino {
 
   // assume that janino.jar ia NOT on the classpath
   @Test
-  public void conditionalWithoutJanino() throws JoranException {
+  public void condtionalWithoutJanino() throws JoranException {
     String configFile = ClassicTestConstants.JORAN_INPUT_PREFIX + "conditional/withoutJanino.xml";
     String currentDir = System.getProperty("user.dir");
     if(!currentDir.contains("logback-classic")) {
@@ -51,7 +51,7 @@ public class ConditionalWithoutJanino {
     configure(configFile);
     StatusPrinter.print(loggerContext);
     StatusChecker checker = new StatusChecker(loggerContext);
-    checker.assertContainsMatch(IfAction.MISSING_JANINO_MSG);
+    assertTrue(checker.containsMatch(IfAction.MISSING_JANINO_MSG));
 
     assertSame(Level.WARN, loggerContext.getLogger("a").getLevel());
     assertSame(Level.WARN, root.getLevel());
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/boolex/GEventEvaluatorTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/boolex/GEventEvaluatorTest.java
index 9b02442..79d27b1 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/boolex/GEventEvaluatorTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/boolex/GEventEvaluatorTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -22,10 +22,8 @@ import ch.qos.logback.classic.spi.LoggingEvent;
 import ch.qos.logback.core.CoreConstants;
 import ch.qos.logback.core.boolex.EvaluationException;
 import ch.qos.logback.core.status.StatusChecker;
-import ch.qos.logback.core.util.ContextUtil;
 import ch.qos.logback.core.util.StatusPrinter;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.slf4j.MDC;
 import org.slf4j.Marker;
@@ -70,9 +68,6 @@ public class GEventEvaluatorTest {
     StatusPrinter.printInCaseOfErrorsOrWarnings(context);
     assertTrue(statusChecker.isErrorFree(0));
 
-    ContextUtil contextUtil = new ContextUtil(context);
-    contextUtil.addGroovyPackages(context.getFrameworkPackages());
-    contextUtil.addFrameworkPackage(context.getFrameworkPackages(), "ch.qos.logback.classic.boolex");
 
     boolean result = gee.evaluate(event);
     assertEquals(expected, result);
@@ -133,12 +128,14 @@ public class GEventEvaluatorTest {
     MDC.clear();
   }
 
+
   @Test
   public void callerData() throws EvaluationException {
     LoggingEvent event = makeEvent("x");
     doEvaluateAndCheck("e.callerData.find{ it.className =~ /junit/ }", event, true);
   }
 
+
   double loop(GEventEvaluator gee) throws EvaluationException {
     long start = System.nanoTime();
     ILoggingEvent event = makeEvent("x");
@@ -158,8 +155,7 @@ public class GEventEvaluatorTest {
   }
 
   @Test
-  @Ignore
-  public void MANUAL_perfTest() throws EvaluationException {
+  public void perfTest() throws EvaluationException {
     gee.setExpression("event.timeStamp < 100 && event.message != 'xx' ");
     gee.start();
 
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/boolex/JaninoEventEvaluatorTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/boolex/JaninoEventEvaluatorTest.java
index 0e7c7cc..f808b82 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/boolex/JaninoEventEvaluatorTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/boolex/JaninoEventEvaluatorTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -204,7 +204,7 @@ public class JaninoEventEvaluatorTest {
       } catch (EvaluationException e) {
       }
     }
-    // after a few attempts the evaluator should processPriorToRemoval
+    // after a few attempts the evaluator should stop
     assertFalse(jee.isStarted());
 
   }
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/boolex/OnMarkerEvaluatorTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/boolex/OnMarkerEvaluatorTest.java
index 6b5dbaf..1484687 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/boolex/OnMarkerEvaluatorTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/boolex/OnMarkerEvaluatorTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/boolex/PackageTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/boolex/PackageTest.java
index a8ae160..35e3a7f 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/boolex/PackageTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/boolex/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/control/CLCTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/control/CLCTest.java
index 00c7513..77c3585 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/control/CLCTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/control/CLCTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/control/ControlLogger.java b/logback-classic/src/test/java/ch/qos/logback/classic/control/ControlLogger.java
index c3f81a2..22be684 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/control/ControlLogger.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/control/ControlLogger.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/control/ControlLoggerContext.java b/logback-classic/src/test/java/ch/qos/logback/classic/control/ControlLoggerContext.java
index eff1f76..2dcbbbf 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/control/ControlLoggerContext.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/control/ControlLoggerContext.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/control/CreateLogger.java b/logback-classic/src/test/java/ch/qos/logback/classic/control/CreateLogger.java
index f44e7af..fbe861c 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/control/CreateLogger.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/control/CreateLogger.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/control/PackageTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/control/PackageTest.java
index 0fbc097..d5b1148 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/control/PackageTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/control/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/control/Scenario.java b/logback-classic/src/test/java/ch/qos/logback/classic/control/Scenario.java
index 0d56f5d..323a7b9 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/control/Scenario.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/control/Scenario.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/control/ScenarioAction.java b/logback-classic/src/test/java/ch/qos/logback/classic/control/ScenarioAction.java
index 88d2fc6..0b5f1bc 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/control/ScenarioAction.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/control/ScenarioAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/control/ScenarioMaker.java b/logback-classic/src/test/java/ch/qos/logback/classic/control/ScenarioMaker.java
index c386360..e789682 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/control/ScenarioMaker.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/control/ScenarioMaker.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/control/ScenarioRandomUtil.java b/logback-classic/src/test/java/ch/qos/logback/classic/control/ScenarioRandomUtil.java
index bd85fec..f07933f 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/control/ScenarioRandomUtil.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/control/ScenarioRandomUtil.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -55,7 +55,7 @@ public class ScenarioRandomUtil {
 
   public static String randomLoggerName(int average, int stdDeviation) {
     int depth = RandomUtil.gaussianAsPositiveInt(random, average, stdDeviation);
-    StringBuilder buf = new StringBuilder();
+    StringBuffer buf = new StringBuffer();
     for (int i = 0; i < depth; i++) {
       if (i != 0) {
         buf.append('.');
@@ -68,7 +68,7 @@ public class ScenarioRandomUtil {
   public static String randomId() {
 
     int len = RandomUtil.gaussianAsPositiveInt(random, AVERAGE_ID_LEN, AVERAGE_ID_DEV);
-    StringBuilder buf = new StringBuilder();
+    StringBuffer buf = new StringBuffer();
     for (int i = 0; i < len; i++) {
       int offset = random.nextInt(26);
       char c = (char) ('a' + offset);
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/control/SetLevel.java b/logback-classic/src/test/java/ch/qos/logback/classic/control/SetLevel.java
index cb65bcb..605fa4a 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/control/SetLevel.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/control/SetLevel.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/corpus/Corpus.java b/logback-classic/src/test/java/ch/qos/logback/classic/corpus/Corpus.java
index b7f766e..0adc998 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/corpus/Corpus.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/corpus/Corpus.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/corpus/CorpusModel.java b/logback-classic/src/test/java/ch/qos/logback/classic/corpus/CorpusModel.java
index bed8f5e..3a5fcbe 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/corpus/CorpusModel.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/corpus/CorpusModel.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/corpus/ExceptionBuilder.java b/logback-classic/src/test/java/ch/qos/logback/classic/corpus/ExceptionBuilder.java
index de885b8..5e2e3d0 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/corpus/ExceptionBuilder.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/corpus/ExceptionBuilder.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/corpus/LogStatement.java b/logback-classic/src/test/java/ch/qos/logback/classic/corpus/LogStatement.java
index 236c8d0..8e93905 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/corpus/LogStatement.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/corpus/LogStatement.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -39,8 +39,4 @@ public class LogStatement {
     this.throwableProxy = tp;
   }
 
-
-  public String getLoggerName() {
-    return loggerName;
-  }
 }
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/corpus/MessageArgumentTuple.java b/logback-classic/src/test/java/ch/qos/logback/classic/corpus/MessageArgumentTuple.java
index 91540ad..58788b7 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/corpus/MessageArgumentTuple.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/corpus/MessageArgumentTuple.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/corpus/RandomUtil.java b/logback-classic/src/test/java/ch/qos/logback/classic/corpus/RandomUtil.java
index f372e88..44a6874 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/corpus/RandomUtil.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/corpus/RandomUtil.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/corpus/TextFileUtil.java b/logback-classic/src/test/java/ch/qos/logback/classic/corpus/TextFileUtil.java
index 5fe3d32..ea6c9ea 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/corpus/TextFileUtil.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/corpus/TextFileUtil.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/corpusTest/RandomUtilTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/corpusTest/RandomUtilTest.java
index f726b3b..561f110 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/corpusTest/RandomUtilTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/corpusTest/RandomUtilTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/corpusTest/TextFileUtilTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/corpusTest/TextFileUtilTest.java
index 20e9bce..da51fd2 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/corpusTest/TextFileUtilTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/corpusTest/TextFileUtilTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/db/DBAppenderH2Test.java b/logback-classic/src/test/java/ch/qos/logback/classic/db/DBAppenderH2Test.java
index 90e7803..b324537 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/db/DBAppenderH2Test.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/db/DBAppenderH2Test.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -23,8 +23,6 @@ import java.sql.Statement;
 import java.util.Date;
 import java.util.Map;
 
-import ch.qos.logback.classic.spi.CallerData;
-import ch.qos.logback.core.status.StatusChecker;
 import org.apache.log4j.MDC;
 import org.junit.After;
 import org.junit.Before;
@@ -41,25 +39,27 @@ import ch.qos.logback.core.util.StatusPrinter;
 
 public class DBAppenderH2Test {
 
-  LoggerContext loggerContext = new LoggerContext();;
+  LoggerContext lc;
   Logger logger;
   DBAppender appender;
   DriverManagerConnectionSource connectionSource;
   DBAppenderH2TestFixture dbAppenderH2TestFixture;
   int diff = RandomUtil.getPositiveInt();
-  StatusChecker checker = new StatusChecker(loggerContext);
 
   @Before
   public void setUp() throws SQLException {
     dbAppenderH2TestFixture = new DBAppenderH2TestFixture();
+
     dbAppenderH2TestFixture.setUp();
-    loggerContext.setName("default");
-    logger = loggerContext.getLogger("root");
+
+    lc = new LoggerContext();
+    lc.setName("default");
+    logger = lc.getLogger("root");
     appender = new DBAppender();
     appender.setName("DB");
-    appender.setContext(loggerContext);
+    appender.setContext(lc);
     connectionSource = new DriverManagerConnectionSource();
-    connectionSource.setContext(loggerContext);
+    connectionSource.setContext(lc);
     connectionSource.setDriverClass(DBAppenderH2TestFixture.H2_DRIVER_CLASS);
     connectionSource.setUrl(dbAppenderH2TestFixture.url);
     System.out.println("cs.url=" + dbAppenderH2TestFixture.url);
@@ -75,7 +75,7 @@ public class DBAppenderH2Test {
   @After
   public void tearDown() throws SQLException {
     logger = null;
-    loggerContext = null;
+    lc = null;
     appender = null;
     connectionSource = null;
     dbAppenderH2TestFixture.tearDown();
@@ -87,7 +87,7 @@ public class DBAppenderH2Test {
 
     appender.append(event);
 
-    StatusPrinter.print(loggerContext);
+    StatusPrinter.print(lc);
 
     Statement stmt = connectionSource.getConnection().createStatement();
     ResultSet rs = null;
@@ -150,11 +150,14 @@ public class DBAppenderH2Test {
       assertEquals(event.getTimeStamp(), rs.getLong(DBAppender.TIMESTMP_INDEX));
       assertEquals(event.getFormattedMessage(), rs.getString(DBAppender.FORMATTED_MESSAGE_INDEX));
     }
+
+    StatusPrinter.print(lc);
+
   }
 
   @Test
   public void testContextInfo() throws SQLException {
-    loggerContext.putProperty("testKey1", "testValue1");
+    lc.putProperty("testKey1", "testValue1");
     MDC.put("k" + diff, "v" + diff);
     ILoggingEvent event = createLoggingEvent();
 
@@ -197,27 +200,14 @@ public class DBAppenderH2Test {
     stmt.close();
   }
 
-  // http://jira.qos.ch/browse/LOGBACK-805
-  @Test
-  public void emptyCallerDataShouldBeHandledGracefully() {
-    LoggingEvent event = createLoggingEvent();
-    event.setCallerData(new StackTraceElement[0]);
-    appender.append(event);
-
-    event.setCallerData(new StackTraceElement[] {null});
-    appender.append(event);
-
-    checker.assertIsErrorFree();
-  }
-
 
-  private LoggingEvent createLoggingEvent(String msg, Object[] args) {
+  private ILoggingEvent createLoggingEvent(String msg, Object[] args) {
     return new LoggingEvent(this.getClass().getName(), logger,
             Level.DEBUG, msg, new Exception("test Ex"), args);
   }
 
 
-  private LoggingEvent createLoggingEvent() {
+  private ILoggingEvent createLoggingEvent() {
     return createLoggingEvent("test message", new Integer[]{diff});
   }
 
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/db/DBAppenderH2TestFixture.java b/logback-classic/src/test/java/ch/qos/logback/classic/db/DBAppenderH2TestFixture.java
index 98d2e8d..f87b665 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/db/DBAppenderH2TestFixture.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/db/DBAppenderH2TestFixture.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -76,7 +76,7 @@ public class DBAppenderH2TestFixture  {
 
   private void createTables() throws SQLException {
     assertNotNull(connection);
-    StringBuilder buf = new StringBuilder();
+    StringBuffer buf = new StringBuffer();
     buf.append("CREATE TABLE LOGGING_EVENT (");
     buf.append("TIMESTMP BIGINT NOT NULL,");
     buf.append("FORMATTED_MESSAGE LONGVARCHAR NOT NULL,");
@@ -95,7 +95,7 @@ public class DBAppenderH2TestFixture  {
     buf.append("EVENT_ID IDENTITY NOT NULL);");
     executeQuery(connection, buf.toString());
 
-    buf = new StringBuilder();
+    buf = new StringBuffer();
     buf.append("CREATE TABLE LOGGING_EVENT_PROPERTY (");
     buf.append("EVENT_ID BIGINT NOT NULL,");
     buf.append("MAPPED_KEY  VARCHAR(254) NOT NULL,");
@@ -104,7 +104,7 @@ public class DBAppenderH2TestFixture  {
     buf.append("FOREIGN KEY (EVENT_ID) REFERENCES LOGGING_EVENT(EVENT_ID));");
     executeQuery(connection, buf.toString());
 
-    buf = new StringBuilder();
+    buf = new StringBuffer();
     buf.append("CREATE TABLE LOGGING_EVENT_EXCEPTION (");
     buf.append("EVENT_ID BIGINT NOT NULL,");
     buf.append("I SMALLINT NOT NULL,");
@@ -115,15 +115,15 @@ public class DBAppenderH2TestFixture  {
   }
 
   private  void dropTables() throws SQLException {
-    StringBuilder buf = new StringBuilder();
+    StringBuffer buf = new StringBuffer();
     buf.append("DROP TABLE LOGGING_EVENT_EXCEPTION IF EXISTS;");
     executeQuery(connection, buf.toString());
 
-    buf = new StringBuilder();
+    buf = new StringBuffer();
     buf.append("DROP TABLE LOGGING_EVENT_PROPERTY IF EXISTS;");
     executeQuery(connection, buf.toString());
 
-    buf = new StringBuilder();
+    buf = new StringBuffer();
     buf.append("DROP TABLE LOGGING_EVENT IF EXISTS;");
     executeQuery(connection, buf.toString());
   }
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/db/DBAppenderHSQLTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/db/DBAppenderHSQLTest.java
index 09c6178..a2eac0b 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/db/DBAppenderHSQLTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/db/DBAppenderHSQLTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -23,7 +23,9 @@ import java.sql.Statement;
 import java.util.Map;
 
 import org.apache.log4j.MDC;
-import org.junit.*;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
 
 import ch.qos.logback.classic.Level;
 import ch.qos.logback.classic.Logger;
@@ -41,24 +43,14 @@ public class DBAppenderHSQLTest  {
   DBAppender appender;
   DriverManagerConnectionSource connectionSource;
 
-  static DBAppenderHSQLTestFixture DB_APPENDER_HSQL_TEST_FIXTURE;
+  DBAppenderHSQLTestFixture dbAppenderHSQLTestFixture;
   int diff = RandomUtil.getPositiveInt();
-  int existingRowCount;
-  Statement stmt;
-
-  @BeforeClass
-  public static void beforeClass() throws SQLException {
-    DB_APPENDER_HSQL_TEST_FIXTURE = new DBAppenderHSQLTestFixture();
-    DB_APPENDER_HSQL_TEST_FIXTURE.setUp();
-  }
-
-  @AfterClass
-  public static void afterClass() throws SQLException {
-    DB_APPENDER_HSQL_TEST_FIXTURE.tearDown();
-  }
-
+  
   @Before
   public void setUp() throws SQLException {
+    dbAppenderHSQLTestFixture = new DBAppenderHSQLTestFixture();
+    dbAppenderHSQLTestFixture.setUp();
+
     lc = new LoggerContext();
     lc.setName("default");
     logger = lc.getLogger("root");
@@ -68,49 +60,33 @@ public class DBAppenderHSQLTest  {
     connectionSource = new DriverManagerConnectionSource();
     connectionSource.setContext(lc);
     connectionSource.setDriverClass(DBAppenderHSQLTestFixture.HSQLDB_DRIVER_CLASS);
-    connectionSource.setUrl(DB_APPENDER_HSQL_TEST_FIXTURE.url);
-    connectionSource.setUser(DB_APPENDER_HSQL_TEST_FIXTURE.user);
-    connectionSource.setPassword(DB_APPENDER_HSQL_TEST_FIXTURE.password);
+    connectionSource.setUrl(dbAppenderHSQLTestFixture.url);
+    connectionSource.setUser(dbAppenderHSQLTestFixture.user);
+    connectionSource.setPassword(dbAppenderHSQLTestFixture.password);
     connectionSource.start();
     appender.setConnectionSource(connectionSource);
     appender.start();
-
-    stmt = connectionSource.getConnection().createStatement();
-    existingRowCount = existingRowCount(stmt);
-
   }
   
-
-
   @After
   public void tearDown() throws SQLException {
     logger = null;
     lc = null;
     appender = null;
     connectionSource = null;
-    stmt.close();
-  }
-
-  int existingRowCount(Statement stmt) throws SQLException {
-    ResultSet rs = stmt.executeQuery("SELECT count(*) FROM logging_event");
-    int result = -1;
-    if (rs.next()) {
-      result = rs.getInt(1);
-    }
-    rs.close();
-    return result;
+    dbAppenderHSQLTestFixture.tearDown();
   }
 
   @Test
   public void testAppendLoggingEvent() throws SQLException {
-
-
     ILoggingEvent event = createLoggingEvent();
+
     appender.append(event);
     StatusPrinter.printInCaseOfErrorsOrWarnings(lc);
     
+    Statement stmt = connectionSource.getConnection().createStatement();
     ResultSet rs = null;
-    rs = stmt.executeQuery("SELECT * FROM logging_event where EVENT_ID = "+ existingRowCount);
+    rs = stmt.executeQuery("SELECT * FROM logging_event");
     if (rs.next()) {
       assertEquals(event.getTimeStamp(), rs.getLong(DBAppender.TIMESTMP_INDEX));
       assertEquals(event.getFormattedMessage(), rs.getString(DBAppender.FORMATTED_MESSAGE_INDEX));
@@ -126,18 +102,20 @@ public class DBAppenderHSQLTest  {
     } else {
       fail("No row was inserted in the database");
     }
+    
     rs.close();
+    stmt.close();
   }
-
-
   
   @Test
   public void testAppendThrowable() throws SQLException {
     ILoggingEvent event = createLoggingEvent();
+
     appender.append(event);
     
+    Statement stmt = connectionSource.getConnection().createStatement();
     ResultSet rs = null;
-    rs = stmt.executeQuery("SELECT * FROM LOGGING_EVENT_EXCEPTION where EVENT_ID = "+ existingRowCount);
+    rs = stmt.executeQuery("SELECT * FROM LOGGING_EVENT_EXCEPTION where EVENT_ID = 0");
     
     rs.next();
     String expected = "java.lang.Exception: test Ex";
@@ -153,6 +131,7 @@ public class DBAppenderHSQLTest  {
     }
     assertTrue(i != 0);
     rs.close();
+    stmt.close();
   }
   
   @Test
@@ -165,7 +144,7 @@ public class DBAppenderHSQLTest  {
     
     Statement stmt = connectionSource.getConnection().createStatement();
     ResultSet rs = null;
-    rs = stmt.executeQuery("SELECT * FROM LOGGING_EVENT_PROPERTY  WHERE EVENT_ID = "+ existingRowCount);
+    rs = stmt.executeQuery("SELECT * FROM LOGGING_EVENT_PROPERTY  WHERE EVENT_ID = 0");
     Map<String, String> map = appender.mergePropertyMaps(event);
     System.out.println("ma.size="+map.size());
     int i = 0;
@@ -177,25 +156,27 @@ public class DBAppenderHSQLTest  {
     assertTrue(map.size() != 0);
     assertEquals(map.size(), i);
     rs.close();
+    stmt.close();
   }
   
   @Test
   public void testAppendMultipleEvents() throws SQLException {
-    int numEvents = 3;
-    for (int i = 0; i < numEvents; i++) {
+    for (int i = 0; i < 10; i++) {
       ILoggingEvent event = createLoggingEvent();
       appender.append(event);
     }
     
     Statement stmt = connectionSource.getConnection().createStatement();
     ResultSet rs = null;
-    rs = stmt.executeQuery("SELECT * FROM logging_event WHERE EVENT_ID >="+ existingRowCount);
+    rs = stmt.executeQuery("SELECT * FROM logging_event");
     int count = 0;
     while (rs.next()) {
       count++;
     }
-    assertEquals(numEvents, count);
+    assertEquals(10, count);
+    
     rs.close();
+    stmt.close();
   }
 
 
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/db/DBAppenderHSQLTestFixture.java b/logback-classic/src/test/java/ch/qos/logback/classic/db/DBAppenderHSQLTestFixture.java
index e16d38e..f6cfb6f 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/db/DBAppenderHSQLTestFixture.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/db/DBAppenderHSQLTestFixture.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -104,7 +104,7 @@ public class DBAppenderHSQLTestFixture  {
   private void createTables() throws SQLException {
     Connection conn = newConnection();
     assertNotNull(conn);
-    StringBuilder buf = new StringBuilder();
+    StringBuffer buf = new StringBuffer();
     buf.append("CREATE TABLE LOGGING_EVENT (");
     buf.append("TIMESTMP BIGINT NOT NULL,");
     buf.append("FORMATTED_MESSAGE LONGVARCHAR NOT NULL,");
@@ -126,7 +126,7 @@ public class DBAppenderHSQLTestFixture  {
     buf.append("EVENT_ID BIGINT NOT NULL IDENTITY);");
     query(conn, buf.toString());
 
-    buf = new StringBuilder();
+    buf = new StringBuffer();
     buf.append("CREATE TABLE LOGGING_EVENT_PROPERTY (");
     buf.append("EVENT_ID BIGINT NOT NULL,");
     buf.append("MAPPED_KEY  VARCHAR(254) NOT NULL,");
@@ -135,7 +135,7 @@ public class DBAppenderHSQLTestFixture  {
     buf.append("FOREIGN KEY (EVENT_ID) REFERENCES LOGGING_EVENT(EVENT_ID));");
     query(conn, buf.toString());
 
-    buf = new StringBuilder();
+    buf = new StringBuffer();
     buf.append("CREATE TABLE LOGGING_EVENT_EXCEPTION (");
     buf.append("EVENT_ID BIGINT NOT NULL,");
     buf.append("I SMALLINT NOT NULL,");
@@ -147,15 +147,15 @@ public class DBAppenderHSQLTestFixture  {
 
   private  void dropTables() throws SQLException {
     Connection conn = newConnection();
-    StringBuilder buf = new StringBuilder();
+    StringBuffer buf = new StringBuffer();
     buf.append("DROP TABLE LOGGING_EVENT_EXCEPTION IF EXISTS;");
     query(conn, buf.toString());
 
-    buf = new StringBuilder();
+    buf = new StringBuffer();
     buf.append("DROP TABLE LOGGING_EVENT_PROPERTY IF EXISTS;");
     query(conn, buf.toString());
 
-    buf = new StringBuilder();
+    buf = new StringBuffer();
     buf.append("DROP TABLE LOGGING_EVENT IF EXISTS;");
     query(conn, buf.toString());
   }
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/db/DBAppenderIntegrationTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/db/DBAppenderIntegrationTest.java
index f939cae..4338836 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/db/DBAppenderIntegrationTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/db/DBAppenderIntegrationTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,17 +13,9 @@
  */
 package ch.qos.logback.classic.db;
 
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.joran.JoranConfigurator;
-import ch.qos.logback.core.db.DriverManagerConnectionSource;
-import ch.qos.logback.core.joran.spi.JoranException;
-import ch.qos.logback.core.status.StatusChecker;
-import ch.qos.logback.core.testUtil.RandomUtil;
-import ch.qos.logback.core.util.EnvUtil;
-import ch.qos.logback.core.util.StatusPrinter;
-import org.junit.*;
-import org.slf4j.Logger;
-import org.slf4j.MDC;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 
 import java.net.InetAddress;
 import java.sql.Connection;
@@ -33,7 +25,23 @@ import java.sql.Statement;
 import java.util.HashMap;
 import java.util.Map;
 
-import static org.junit.Assert.*;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.MDC;
+
+import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.classic.joran.JoranConfigurator;
+import ch.qos.logback.core.db.DriverManagerConnectionSource;
+import ch.qos.logback.core.joran.spi.JoranException;
+import ch.qos.logback.core.status.StatusChecker;
+import ch.qos.logback.core.testUtil.Env;
+import ch.qos.logback.core.testUtil.RandomUtil;
+import ch.qos.logback.core.util.StatusPrinter;
 
 public class DBAppenderIntegrationTest {
 
@@ -102,7 +110,8 @@ public class DBAppenderIntegrationTest {
 
     // check that there were no errors
     StatusChecker checker = new StatusChecker(lc);
-    checker.assertIsErrorFree();
+    assertTrue(checker.isErrorFree(0));
+   
   }
 
   long getLastEventId() throws SQLException {
@@ -178,7 +187,7 @@ public class DBAppenderIntegrationTest {
   }
 
   static boolean isConformingHostAndJDK16OrHigher(String[] conformingHostList) {
-    if (!EnvUtil.isJDK6OrHigher()) {
+    if (!Env.isJDK6OrHigher()) {
       return false;
     }
     for (String conformingHost : conformingHostList) {
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/db/PackageTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/db/PackageTest.java
index 7114bdf..381ca30 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/db/PackageTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/db/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/db/SQLBuilderTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/db/SQLBuilderTest.java
index 7f5b63c..de8de63 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/db/SQLBuilderTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/db/SQLBuilderTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/db/names/DefaultDBNameResolverTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/db/names/DefaultDBNameResolverTest.java
index db49943..cf38033 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/db/names/DefaultDBNameResolverTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/db/names/DefaultDBNameResolverTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/db/names/PackageTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/db/names/PackageTest.java
index 8a6331f..88d3f36 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/db/names/PackageTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/db/names/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/db/names/SimpleDBNameResolverTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/db/names/SimpleDBNameResolverTest.java
index 3380724..895822e 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/db/names/SimpleDBNameResolverTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/db/names/SimpleDBNameResolverTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/encoder/LayoutInsteadOfEncoderTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/encoder/LayoutInsteadOfEncoderTest.java
index ce9bcab..3644314 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/encoder/LayoutInsteadOfEncoderTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/encoder/LayoutInsteadOfEncoderTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -33,7 +33,7 @@ import ch.qos.logback.core.util.StatusPrinter;
 
 public class LayoutInsteadOfEncoderTest {
 
-  // TeztConstants.TEST_SRC_PREFIX + "input/joran/ignore.xml"
+  // TeztConstants.TEST_DIR_PREFIX + "input/joran/ignore.xml"
   JoranConfigurator jc = new JoranConfigurator();
   LoggerContext loggerContext = new LoggerContext();
 
@@ -43,7 +43,7 @@ public class LayoutInsteadOfEncoderTest {
 
   }
 
-  // jc.doConfigure(TeztConstants.TEST_SRC_PREFIX + "input/joran/ignore.xml");
+  // jc.doConfigure(TeztConstants.TEST_DIR_PREFIX + "input/joran/ignore.xml");
 
   @Test
   public void layoutInsteadOfEncoer() throws JoranException {
@@ -51,8 +51,8 @@ public class LayoutInsteadOfEncoderTest {
         + "compatibility/layoutInsteadOfEncoder.xml");
     StatusPrinter.print(loggerContext);
     StatusChecker checker = new StatusChecker(loggerContext);
-    checker.assertContainsMatch(Status.WARN, "This appender no longer admits a layout as a sub-component");
-    checker.assertContainsMatch(Status.WARN, "See also "+CODES_URL+"#layoutInsteadOfEncoder for details");
+    assertTrue(checker.containsMatch(Status.WARN, "This appender no longer admits a layout as a sub-component"));
+    assertTrue(checker.containsMatch(Status.WARN, "See also "+CODES_URL+"#layoutInsteadOfEncoder for details"));
     
     ch.qos.logback.classic.Logger root = (ch.qos.logback.classic.Logger) loggerContext.getLogger(Logger.ROOT_LOGGER_NAME);
     FileAppender<ILoggingEvent> fileAppender = (FileAppender<ILoggingEvent>) root.getAppender("LIOE");
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/encoder/PackageTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/encoder/PackageTest.java
index c96c9a3..d538a99 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/encoder/PackageTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/encoder/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/encoder/PatternLayoutEncoderTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/encoder/PatternLayoutEncoderTest.java
index 220c083..4ba40e8 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/encoder/PatternLayoutEncoderTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/encoder/PatternLayoutEncoderTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/html/HTMLLayoutTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/html/HTMLLayoutTest.java
index c846280..e8f4845 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/html/HTMLLayoutTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/html/HTMLLayoutTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/html/PackageTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/html/PackageTest.java
index 781be1d..4f338c7 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/html/PackageTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/html/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/html/XHTMLEntityResolver.java b/logback-classic/src/test/java/ch/qos/logback/classic/html/XHTMLEntityResolver.java
index c13fa99..db7661b 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/html/XHTMLEntityResolver.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/html/XHTMLEntityResolver.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/issue/DarioCampagna/Main.java b/logback-classic/src/test/java/ch/qos/logback/classic/issue/DarioCampagna/Main.java
deleted file mode 100644
index a8144d3..0000000
--- a/logback-classic/src/test/java/ch/qos/logback/classic/issue/DarioCampagna/Main.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.issue.DarioCampagna;
-
-import ch.qos.cal10n.IMessageConveyor;
-import ch.qos.cal10n.MessageConveyor;
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.joran.JoranConfigurator;
-import ch.qos.logback.core.joran.spi.JoranException;
-import org.slf4j.LoggerFactory;
-import org.slf4j.Marker;
-import org.slf4j.MarkerFactory;
-import org.slf4j.cal10n.LocLogger;
-import org.slf4j.cal10n.LocLoggerFactory;
-
-import java.util.Locale;
-
-public class Main {
-  public static void main(String[] args) throws JoranException {
-
-    LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
-    context.reset();
-    JoranConfigurator joranConfigurator = new JoranConfigurator();
-    joranConfigurator.setContext(context);
-    joranConfigurator.doConfigure("src/test/java/ch/qos/logback/classic/issue/DarioCampagna/logback-marker.xml");
-    IMessageConveyor mc = new MessageConveyor(Locale.getDefault());
-    LocLoggerFactory llFactory_default = new LocLoggerFactory(mc);
-    LocLogger locLogger = llFactory_default.getLocLogger("defaultLocLogger");
-    Marker alwaysMarker = MarkerFactory.getMarker("ALWAYS");
-    locLogger.info(alwaysMarker, "This will always appear.");
-    locLogger.info("Hello!");
-  }
-}
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/issue/DarioCampagna/logback-marker.xml b/logback-classic/src/test/java/ch/qos/logback/classic/issue/DarioCampagna/logback-marker.xml
deleted file mode 100644
index a1fcbeb..0000000
--- a/logback-classic/src/test/java/ch/qos/logback/classic/issue/DarioCampagna/logback-marker.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<configuration debug="true">
-
-  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-    <encoder>
-      <pattern>%level - %date - %marker - %msg%n</pattern>
-    </encoder>
-  </appender>
-
-  <turboFilter class="ch.qos.logback.classic.turbo.MarkerFilter">
-    <Marker>ALWAYS</Marker>
-    <OnMatch>ACCEPT</OnMatch>
-    <OnMismatch>NEUTRAL</OnMismatch>
-  </turboFilter>
-
-  <root level="WARN">
-    <appender-ref ref="STDOUT"/>
-  </root>
-
-</configuration>
\ No newline at end of file
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/issue/LBCORE63.java b/logback-classic/src/test/java/ch/qos/logback/classic/issue/LBCORE63.java
index 79bf97a..5aebbe7 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/issue/LBCORE63.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/issue/LBCORE63.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/issue/PackageTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/issue/PackageTest.java
index ee7eda2..37728cf 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/issue/PackageTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/issue/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic135/LoggingRunnable.java b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic135/LoggingRunnable.java
index 9a06e81..37355e1 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic135/LoggingRunnable.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic135/LoggingRunnable.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic135/LoggingToFileThroughput.java b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic135/LoggingToFileThrouhput.java
similarity index 93%
rename from logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic135/LoggingToFileThroughput.java
rename to logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic135/LoggingToFileThrouhput.java
index 8098783..c372856 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic135/LoggingToFileThroughput.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic135/LoggingToFileThrouhput.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -25,7 +25,7 @@ import ch.qos.logback.core.contention.ThreadedThroughputCalculator;
  * 
  * @author Ceki Gulcu
  */
-public class LoggingToFileThroughput {
+public class LoggingToFileThrouhput {
 
   static int THREAD_COUNT = 1;
   static long OVERALL_DURATION_IN_MILLIS = 5000;
@@ -62,7 +62,7 @@ public class LoggingToFileThroughput {
     fileAppender.setAppend(false);
     fileAppender.start();
     root.addAppender(fileAppender);
-    return lc.getLogger(LoggingToFileThroughput.class);
+    return lc.getLogger(LoggingToFileThrouhput.class);
   }
 
   static LoggingRunnable[] buildArray(Logger logger) {
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic135/lbclassic139/Accessor.java b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic135/lbclassic139/Accessor.java
index cff1c06..a502e84 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic135/lbclassic139/Accessor.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic135/lbclassic139/Accessor.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic135/lbclassic139/LB139_DeadlockTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic135/lbclassic139/LB139_DeadlockTest.java
index b4fed8a..b7e23cc 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic135/lbclassic139/LB139_DeadlockTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic135/lbclassic139/LB139_DeadlockTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic135/lbclassic139/PackageTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic135/lbclassic139/PackageTest.java
index c59cee7..965d788 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic135/lbclassic139/PackageTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic135/lbclassic139/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic135/lbclassic139/Worker.java b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic135/lbclassic139/Worker.java
index 73ceca6..8ad695e 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic135/lbclassic139/Worker.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic135/lbclassic139/Worker.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -54,7 +54,8 @@ public class Worker extends RunnableWithCounterAndDone {
     synchronized (lock) {
       print("In Worker.toString() - got the lock");
       //sleep();
-      return "STATUS";
+      final StringBuffer buf = new StringBuffer("STATUS");
+      return buf.toString();
     }
   }
   
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/issue/logback474/LoggingAppender.java b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic154/LoggingAppender.java
similarity index 86%
rename from logback-classic/src/test/java/ch/qos/logback/classic/issue/logback474/LoggingAppender.java
rename to logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic154/LoggingAppender.java
index 4eecafa..0e16117 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/issue/logback474/LoggingAppender.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic154/LoggingAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -11,7 +11,7 @@
  * under the terms of the GNU Lesser General Public License version 2.1
  * as published by the Free Software Foundation.
  */
-package ch.qos.logback.classic.issue.logback474;
+package ch.qos.logback.classic.issue.lbclassic154;
 
 import org.slf4j.Logger;
 
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic180/HtmlEscapedMessageConverter.java b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic180/HtmlEscapedMessageConverter.java
index 71de33e..8faec03 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic180/HtmlEscapedMessageConverter.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic180/HtmlEscapedMessageConverter.java
@@ -1,16 +1,3 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
 package ch.qos.logback.classic.issue.lbclassic180;
 
 import ch.qos.logback.classic.pattern.ClassicConverter;
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic180/Main.java b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic180/Main.java
index 9186464..26bf04a 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic180/Main.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic180/Main.java
@@ -1,16 +1,3 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
 package ch.qos.logback.classic.issue.lbclassic180;
 
 import ch.qos.logback.classic.LoggerContext;
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic203/ConcurrentSiftingTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic203/ConcurrentSiftingTest.java
index 476d13f..c484ae5 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic203/ConcurrentSiftingTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic203/ConcurrentSiftingTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,6 +13,10 @@
  */
 package ch.qos.logback.classic.issue.lbclassic203;
 
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
 import ch.qos.logback.classic.ClassicTestConstants;
 import ch.qos.logback.classic.Logger;
 import ch.qos.logback.classic.LoggerContext;
@@ -21,9 +25,7 @@ import ch.qos.logback.classic.joran.JoranConfigurator;
 import ch.qos.logback.core.contention.MultiThreadedHarness;
 import ch.qos.logback.core.contention.RunnableWithCounterAndDone;
 import ch.qos.logback.core.joran.spi.JoranException;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
+import ch.qos.logback.core.status.StatusChecker;
 
 public class ConcurrentSiftingTest {
   final static int THREAD_COUNT = 5;
@@ -33,6 +35,7 @@ public class ConcurrentSiftingTest {
   LoggerContext loggerContext = new LoggerContext();
   protected Logger logger = loggerContext.getLogger(this.getClass().getName());
   protected Logger root = loggerContext.getLogger(Logger.ROOT_LOGGER_NAME);
+  StatusChecker sc = new StatusChecker(loggerContext);
 
   int totalTestDuration = 50;
   MultiThreadedHarness harness = new MultiThreadedHarness(totalTestDuration);
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic203/InstanceCountingAppender.java b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic203/InstanceCountingAppender.java
index 052df56..5e55656 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic203/InstanceCountingAppender.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic203/InstanceCountingAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic203/PackageTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic203/PackageTest.java
index 99b514a..d311913 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic203/PackageTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic203/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic323/Barebones.java b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic323/Barebones.java
index c718b5b..22a8a95 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic323/Barebones.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic323/Barebones.java
@@ -1,16 +1,3 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
 package ch.qos.logback.classic.issue.lbclassic323;
 
 import ch.qos.logback.core.Context;
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic323/Simple.java b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic323/Simple.java
index 6e51e41..43377c1 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic323/Simple.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic323/Simple.java
@@ -1,16 +1,3 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
 package ch.qos.logback.classic.issue.lbclassic323;
 
 import ch.qos.logback.classic.LoggerContext;
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic330/Main.java b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic330/Main.java
index f881963..6ef0528 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic330/Main.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic330/Main.java
@@ -1,16 +1,3 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
 package ch.qos.logback.classic.issue.lbclassic330;
 
 import ch.qos.logback.classic.LoggerContext;
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic36/DateFormatOriginal_tzest.java b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic36/DateFormatOriginal_tzest.java
index b129789..28a629c 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic36/DateFormatOriginal_tzest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic36/DateFormatOriginal_tzest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic36/DateFormatPerf_Tapp.java b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic36/DateFormatPerf_Tapp.java
index 5a511cd..48a6b5d 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic36/DateFormatPerf_Tapp.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic36/DateFormatPerf_Tapp.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic36/DateFormattingThreadedThroughputCalculator.java b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic36/DateFormattingThreadedThroughputCalculator.java
index 736fc18..c863118 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic36/DateFormattingThreadedThroughputCalculator.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic36/DateFormattingThreadedThroughputCalculator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic36/SelectiveDateFormattingRunnable.java b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic36/SelectiveDateFormattingRunnable.java
index e7226ac..c416636 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic36/SelectiveDateFormattingRunnable.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbclassic36/SelectiveDateFormattingRunnable.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbcore211/Lbcore211.java b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbcore211/Lbcore211.java
index 8c6763c..20cc5d3 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbcore211/Lbcore211.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbcore211/Lbcore211.java
@@ -1,16 +1,3 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
 package ch.qos.logback.classic.issue.lbcore211;
 
 import ch.qos.logback.classic.Logger;
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbcore224/Reduce.java b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbcore224/Reduce.java
index 46fc2bd..bfe99ed 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbcore224/Reduce.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbcore224/Reduce.java
@@ -1,16 +1,3 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
 package ch.qos.logback.classic.issue.lbcore224;
 
 import java.io.*;
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbcore243/Common.java b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbcore243/Common.java
index aa19be0..bb2f051 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbcore243/Common.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbcore243/Common.java
@@ -1,16 +1,3 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
 package ch.qos.logback.classic.issue.lbcore243;
 
 public class Common {
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbcore243/PerformanceComparatorLog4j.java b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbcore243/PerformanceComparatorLog4j.java
index 7ed085c..d65db5c 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbcore243/PerformanceComparatorLog4j.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbcore243/PerformanceComparatorLog4j.java
@@ -1,16 +1,3 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
 package ch.qos.logback.classic.issue.lbcore243;
 
 
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbcore243/PerformanceComparatorLogback.java b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbcore243/PerformanceComparatorLogback.java
index 2bf224a..7efcede 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbcore243/PerformanceComparatorLogback.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbcore243/PerformanceComparatorLogback.java
@@ -1,16 +1,3 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
 package ch.qos.logback.classic.issue.lbcore243;
 
 
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbcore26/Main.java b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbcore26/Main.java
index f0ade02..c9286cd 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbcore26/Main.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbcore26/Main.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbcore_155/Main.java b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbcore_155/Main.java
index cfb57ab..dffd8fe 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbcore_155/Main.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbcore_155/Main.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbcore_155/OThread.java b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbcore_155/OThread.java
index 8cbf5a1..339251f 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbcore_155/OThread.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/issue/lbcore_155/OThread.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/jmx/JMXConfiguratorTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/jmx/JMXConfiguratorTest.java
index 3d0867e..d48f2ca 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/jmx/JMXConfiguratorTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/jmx/JMXConfiguratorTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -99,7 +99,7 @@ public class JMXConfiguratorTest {
     
     lc.stop();
     
-    // check that after lc.processPriorToRemoval, jmxConfigurator is no longer
+    // check that after lc.stop, jmxConfigurator is no longer
     // registered as a listener in the loggerContext nor as an
     // MBean in mbs
     listenerList = lc.getCopyOfListenerList();
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/jmx/PackageTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/jmx/PackageTest.java
index 3fb092c..04a332c 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/jmx/PackageTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/jmx/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/joran/EvaluatorJoranTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/joran/EvaluatorJoranTest.java
index b068c3a..62de939 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/joran/EvaluatorJoranTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/joran/EvaluatorJoranTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/joran/JoranConfiguratorTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/joran/JoranConfiguratorTest.java
index c3b7581..0b4f0d8 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/joran/JoranConfiguratorTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/joran/JoranConfiguratorTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -15,16 +15,17 @@ package ch.qos.logback.classic.joran;
 
 import java.io.File;
 import java.io.IOException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
 import java.util.concurrent.TimeUnit;
+import java.util.logging.LogManager;
 
 import ch.qos.logback.classic.jul.JULHelper;
+import ch.qos.logback.classic.turbo.ReconfigureOnChangeFilter;
 import ch.qos.logback.core.pattern.parser.Parser;
-import ch.qos.logback.core.spi.ScanException;
+import ch.qos.logback.core.pattern.parser.ScanException;
 import ch.qos.logback.core.status.Status;
 import ch.qos.logback.core.testUtil.RandomUtil;
 import ch.qos.logback.core.util.CachingDateFormatter;
+import ch.qos.logback.core.util.StatusPrinter;
 import org.junit.Ignore;
 import org.junit.Test;
 import org.slf4j.MDC;
@@ -59,7 +60,6 @@ public class JoranConfiguratorTest {
   void configure(String file) throws JoranException {
     JoranConfigurator jc = new JoranConfigurator();
     jc.setContext(loggerContext);
-    loggerContext.putProperty("diff", "" + diff);
     jc.doConfigure(file);
   }
 
@@ -145,6 +145,7 @@ public class JoranConfiguratorTest {
   @Test
   public void statusListener() throws JoranException {
     configure(ClassicTestConstants.JORAN_INPUT_PREFIX + "statusListener.xml");
+    // StatusPrinter.print(loggerContext);
   }
 
   @Test
@@ -305,9 +306,10 @@ public class JoranConfiguratorTest {
     loggerContext.getExecutorService().shutdown();
     loggerContext.getExecutorService().awaitTermination(1000, TimeUnit.MILLISECONDS);
 
+    //StatusPrinter.print(loggerContext);
     StatusChecker checker = new StatusChecker(loggerContext);
-    checker.assertIsErrorFree();
-    checker.assertContainsMatch(CoreConstants.RESET_MSG_PREFIX);
+    assertTrue(checker.isErrorFree(0));
+    assertTrue(checker.containsMatch(CoreConstants.RESET_MSG_PREFIX));
   }
 
   @Test
@@ -315,7 +317,7 @@ public class JoranConfiguratorTest {
           InterruptedException {
 
     String configFileAsStr = ClassicTestConstants.JORAN_INPUT_PREFIX
-            + "timestamp-context.xml";
+            + "timestamp.xml";
     configure(configFileAsStr);
 
     String r = loggerContext.getProperty("testTimestamp");
@@ -326,30 +328,6 @@ public class JoranConfiguratorTest {
   }
 
   @Test
-  public void timestampLocal() throws JoranException, IOException,
-          InterruptedException {
-
-    String sysProp = "ch.qos.logback.classic.joran.JoranConfiguratorTest.timestampLocal";
-    System.setProperty(sysProp, "");
-
-    String configFileAsStr = ClassicTestConstants.JORAN_INPUT_PREFIX
-            + "timestamp-local.xml";
-    configure(configFileAsStr);
-
-    // It's hard to test the local variable has been set, as it's not
-    // visible from here. But instead we test that it's not set in the
-    // context. And check that a system property has been replaced with the
-    // contents of the local variable
-
-    String r = loggerContext.getProperty("testTimestamp");
-    assertNull(r);
-
-    String expected = "today is " + new SimpleDateFormat("yyyy-MM").format(new Date());
-    String sysPropValue = System.getProperty(sysProp);
-    assertEquals(expected, sysPropValue);
-  }
-
-  @Test
   public void encoderCharset() throws JoranException, IOException,
           InterruptedException {
 
@@ -364,11 +342,14 @@ public class JoranConfiguratorTest {
     assertEquals("UTF-8", encoder.getCharset().displayName());
 
     StatusChecker checker = new StatusChecker(loggerContext);
-    checker.assertIsErrorFree();
+    assertTrue(checker.isErrorFree(0));
   }
 
   void verifyJULLevel(String loggerName, Level expectedLevel) {
+    LogManager lm = LogManager.getLogManager();
+
     java.util.logging.Logger julLogger = JULHelper.asJULLogger(loggerName);
+
     java.util.logging.Level julLevel = julLogger.getLevel();
 
     if (expectedLevel == null) {
@@ -383,31 +364,33 @@ public class JoranConfiguratorTest {
   @Test
   public void levelChangePropagator0() throws JoranException, IOException,
           InterruptedException {
-    String loggerName = "changePropagator0" + diff;
+    String loggerName = "changePropagator0"+diff;
     java.util.logging.Logger.getLogger(loggerName).setLevel(java.util.logging.Level.INFO);
     String configFileAsStr = ClassicTestConstants.JORAN_INPUT_PREFIX
             + "/jul/levelChangePropagator0.xml";
     configure(configFileAsStr);
+    StatusPrinter.print(loggerContext);
     StatusChecker checker = new StatusChecker(loggerContext);
-    checker.assertIsErrorFree();
+    assertTrue(checker.isErrorFree(0));
     verifyJULLevel(loggerName, null);
-    verifyJULLevel("a.b.c." + diff, Level.WARN);
+    verifyJULLevel("a.b.c", Level.WARN);
     verifyJULLevel(Logger.ROOT_LOGGER_NAME, Level.TRACE);
   }
 
   @Test
   public void levelChangePropagator1() throws JoranException, IOException,
           InterruptedException {
-    String loggerName = "changePropagator1" + diff;
+    String loggerName = "changePropagator1"+diff;
     java.util.logging.Logger.getLogger(loggerName).setLevel(java.util.logging.Level.INFO);
     verifyJULLevel(loggerName, Level.INFO);
     String configFileAsStr = ClassicTestConstants.JORAN_INPUT_PREFIX
             + "/jul/levelChangePropagator1.xml";
     configure(configFileAsStr);
+    StatusPrinter.print(loggerContext);
     StatusChecker checker = new StatusChecker(loggerContext);
-    checker.assertIsErrorFree();
+    assertTrue(checker.isErrorFree(0));
     verifyJULLevel(loggerName, Level.INFO);
-    verifyJULLevel("a.b.c." + diff, Level.WARN);
+    verifyJULLevel("a.b.c", Level.WARN);
     verifyJULLevel(Logger.ROOT_LOGGER_NAME, Level.TRACE);
   }
 
@@ -428,9 +411,10 @@ public class JoranConfiguratorTest {
   public void lbcore193() throws JoranException {
     String configFileAsStr = ClassicTestConstants.ISSUES_PREFIX + "lbcore193.xml";
     configure(configFileAsStr);
-    checker.asssertContainsException(ScanException.class);
-    checker.assertContainsMatch(Status.ERROR, "Expecting RIGHT_PARENTHESIS token but got null");
-    checker.assertContainsMatch(Status.ERROR, "See also " + Parser.MISSING_RIGHT_PARENTHESIS);
+    //StatusPrinter.print(loggerContext);
+    checker.containsException(ScanException.class);
+    checker.containsMatch(Status.ERROR, "Expecting RIGHT_PARENTHESIS token but got null");
+    checker.containsMatch(Status.ERROR, "See also " + Parser.MISSING_RIGHT_PARENTHESIS);
   }
 
 
@@ -448,18 +432,19 @@ public class JoranConfiguratorTest {
     assertEquals("node0", loggerContext.getProperty("nodeId"));
     assertEquals("tem", System.getProperty("sys"));
     assertNotNull(loggerContext.getProperty("path"));
-    checker.assertIsErrorFree();
+    assertTrue(checker.isErrorFree(0));
+    StatusPrinter.print(loggerContext);
   }
 
 
   // see also http://jira.qos.ch/browse/LBCORE-254
   @Test
   public void sysProps() throws JoranException {
-    System.setProperty("k.lbcore254", ClassicTestConstants.ISSUES_PREFIX + "lbcore254");
+    System.setProperty("k.lbcore254", ClassicTestConstants.ISSUES_PREFIX+"lbcore254");
     JoranConfigurator configurator = new JoranConfigurator();
     configurator.setContext(loggerContext);
-    configurator.doConfigure(ClassicTestConstants.ISSUES_PREFIX + "lbcore254.xml");
+    configurator.doConfigure(ClassicTestConstants.ISSUES_PREFIX+"lbcore254.xml");
 
-    checker.assertIsErrorFree();
-  }
+    checker.isErrorFree(0);
+ }
 }
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/joran/PackageTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/joran/PackageTest.java
index f4688c4..23fcb54 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/joran/PackageTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/joran/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/joran/conditional/ConditionalTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/joran/conditional/ConditionalTest.java
index fbac410..82ba2b1 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/joran/conditional/ConditionalTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/joran/conditional/ConditionalTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -80,7 +80,7 @@ public class ConditionalTest {
     ConsoleAppender consoleAppender = (ConsoleAppender) root.getAppender("CON");
     assertNotNull(consoleAppender);
     StatusChecker checker = new StatusChecker(context);
-    checker.assertIsErrorFree();
+    assertTrue(checker.isErrorFree(0));
   }
 
   @SuppressWarnings("rawtypes")
@@ -97,7 +97,7 @@ public class ConditionalTest {
     ConsoleAppender consoleAppender = (ConsoleAppender) root.getAppender("CON");
     assertNull(consoleAppender);
     StatusChecker checker = new StatusChecker(context);
-    checker.assertIsErrorFree();
+    assertTrue(checker.isErrorFree(0));
   }
 
   @SuppressWarnings("rawtypes")
@@ -120,7 +120,7 @@ public class ConditionalTest {
 
     // StatusPrinter.printIfErrorsOccured(context);
     StatusChecker checker = new StatusChecker(context);
-    checker.assertIsErrorFree();
+    assertTrue(checker.isErrorFree(0));
   }
 
   @Test
@@ -131,10 +131,11 @@ public class ConditionalTest {
              + "conditional/conditionalIncludeExistingFile.xml";
      configure(configFileAsStr);
 
+     StatusPrinter.print(context);
      ConsoleAppender consoleAppender = (ConsoleAppender) root.getAppender("CON");
      assertNotNull(consoleAppender);
      StatusChecker checker = new StatusChecker(context);
-    checker.assertIsErrorFree();
+     assertTrue(checker.isErrorFree(0));
    }
   @Test
 
@@ -145,10 +146,11 @@ public class ConditionalTest {
              + "conditional/conditionalIncludeInexistentFile.xml";
      configure(configFileAsStr);
 
+     StatusPrinter.print(context);
      ConsoleAppender consoleAppender = (ConsoleAppender) root.getAppender("CON");
      assertNull(consoleAppender);
      StatusChecker checker = new StatusChecker(context);
-     checker.assertIsErrorFree();
+     assertTrue(checker.isErrorFree(0));
    }
 
 
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/joran/conditional/PackageTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/joran/conditional/PackageTest.java
index 096cd8f..caf7032 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/joran/conditional/PackageTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/joran/conditional/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/jul/LevelChangePropagatorTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/jul/LevelChangePropagatorTest.java
index 1f1c74d..c08a3b0 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/jul/LevelChangePropagatorTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/jul/LevelChangePropagatorTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -17,11 +17,8 @@ import ch.qos.logback.classic.Level;
 import ch.qos.logback.classic.Logger;
 import ch.qos.logback.classic.LoggerContext;
 import ch.qos.logback.core.testUtil.RandomUtil;
-
 import org.junit.Before;
-import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.ExpectedException;
 
 import static org.junit.Assert.assertEquals;
 
@@ -30,9 +27,6 @@ public class LevelChangePropagatorTest {
   LoggerContext loggerContext = new LoggerContext();
   LevelChangePropagator levelChangePropagator = new LevelChangePropagator();
 
-  @Rule
-  public ExpectedException exception = ExpectedException.none();
-
   @Before
   public void setUp() {
     levelChangePropagator.setContext(loggerContext);
@@ -72,26 +66,4 @@ public class LevelChangePropagatorTest {
     assertEquals(julLevel, julLogger.getLevel());
  }
 
-  @Test
-  public void julHelperAsJulLevelRejectsNull() {
-    exception.expect(IllegalArgumentException.class);
-    exception.expectMessage("Unexpected level [null]");
-    JULHelper.asJULLevel(null);
-  }
-
-  @Test
-  public void settingLevelToNullGetsParentLevel() {
-    // first set level of "a" (the parent) to DEBUG
-    Logger parent = loggerContext.getLogger("a");
-    parent.setLevel(Level.DEBUG);
-
-    // then set level of "a.b" (child logger of a) to null
-    // for b to inherit its parent's level
-    Logger child = loggerContext.getLogger("a.b");
-    child.setLevel(Level.INFO);
-    child.setLevel(null);
-
-    assertEquals(parent.getEffectiveLevel(), child.getEffectiveLevel());
-    assertEquals(Level.DEBUG, child.getEffectiveLevel());
-  }
 }
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/jul/PackageTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/jul/PackageTest.java
index 6bc5e2b..8acdd91 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/jul/PackageTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/jul/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/multiJVM/Checker.java b/logback-classic/src/test/java/ch/qos/logback/classic/multiJVM/Checker.java
index 8723821..7ae10ba 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/multiJVM/Checker.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/multiJVM/Checker.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/multiJVM/FileAppenderPerf.java b/logback-classic/src/test/java/ch/qos/logback/classic/multiJVM/FileAppenderPerf.java
index a21c373..69d5e51 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/multiJVM/FileAppenderPerf.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/multiJVM/FileAppenderPerf.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/multiJVM/LoggingThread.java b/logback-classic/src/test/java/ch/qos/logback/classic/multiJVM/LoggingThread.java
index 3334350..b393fbd 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/multiJVM/LoggingThread.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/multiJVM/LoggingThread.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/multiJVM/SafeModeFileAppender.java b/logback-classic/src/test/java/ch/qos/logback/classic/multiJVM/SafeModeFileAppender.java
index 4fc00a9..dd53c3c 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/multiJVM/SafeModeFileAppender.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/multiJVM/SafeModeFileAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/multiJVM/SafeModeRollingFileAppender.java b/logback-classic/src/test/java/ch/qos/logback/classic/multiJVM/SafeModeRollingFileAppender.java
index c5bb880..8608174 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/multiJVM/SafeModeRollingFileAppender.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/multiJVM/SafeModeRollingFileAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/CounterBasedEvaluator.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/CounterBasedEvaluator.java
index c1dc63d..c020013 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/CounterBasedEvaluator.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/CounterBasedEvaluator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/DilutedSMTPAppenderTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/DilutedSMTPAppenderTest.java
index afe30ac..7500fea 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/DilutedSMTPAppenderTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/DilutedSMTPAppenderTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -36,8 +36,8 @@ import ch.qos.logback.core.Layout;
 public class DilutedSMTPAppenderTest {
 
   SMTPAppender appender;
-  CyclicBufferTracker<ILoggingEvent> cbTracker;
-  CyclicBuffer<ILoggingEvent> cb;
+  CyclicBufferTracker cbTracker;
+  CyclicBuffer cb;
 
   @Before
   public void setUp() throws Exception {
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/ExternalMockSocketServer.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/ExternalMockSocketServer.java
index 1657160..c24c4bc 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/ExternalMockSocketServer.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/ExternalMockSocketServer.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSQueueAppenderTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSQueueAppenderTest.java
index 6544371..a64aa4a 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSQueueAppenderTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSQueueAppenderTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSQueueAppenderTestApp.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSQueueAppenderTestApp.java
index 3245e8b..d866320 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSQueueAppenderTestApp.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSQueueAppenderTestApp.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSTopicAppenderTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSTopicAppenderTest.java
index 341cf0d..18188f9 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSTopicAppenderTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSTopicAppenderTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSTopicAppenderTestApp.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSTopicAppenderTestApp.java
index 935bf4d..85ec3b5 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSTopicAppenderTestApp.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSTopicAppenderTestApp.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/NOPOutputStream.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/NOPOutputStream.java
index 07720fd..25147de 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/NOPOutputStream.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/NOPOutputStream.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/PackageTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/PackageTest.java
index 85d9920..b48ef11 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/PackageTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -19,8 +19,7 @@ import org.junit.runners.Suite.SuiteClasses;
 
 @RunWith(Suite.class)
 @SuiteClasses( { SyslogAppenderTest.class, DilutedSMTPAppenderTest.class,
-        JMSQueueAppenderTest.class, JMSTopicAppenderTest.class,
-        SMTPAppender_GreenTest.class, SMTPAppender_SubethaSMTPTest.class,
-        SocketReceiverTest.class, SSLSocketReceiverTest.class })
+    SocketAppenderTest.class, JMSQueueAppenderTest.class, JMSTopicAppenderTest.class,
+        SMTPAppender_GreenTest.class, SMTPAppender_SubethaSMTPTest.class })
 public class PackageTest {
 }
\ No newline at end of file
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/SMTPAppender_GreenTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/SMTPAppender_GreenTest.java
index 7f54c79..05a6b9c 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/SMTPAppender_GreenTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/SMTPAppender_GreenTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,6 +13,19 @@
  */
 package ch.qos.logback.classic.net;
 
+import java.io.IOException;
+import java.util.concurrent.TimeUnit;
+
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
+import javax.mail.internet.MimeMultipart;
+
+import org.dom4j.io.SAXReader;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.slf4j.MDC;
+
 import ch.qos.logback.classic.ClassicTestConstants;
 import ch.qos.logback.classic.Logger;
 import ch.qos.logback.classic.LoggerContext;
@@ -21,247 +34,188 @@ import ch.qos.logback.classic.html.HTMLLayout;
 import ch.qos.logback.classic.html.XHTMLEntityResolver;
 import ch.qos.logback.classic.joran.JoranConfigurator;
 import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.CoreConstants;
 import ch.qos.logback.core.Layout;
 import ch.qos.logback.core.joran.spi.JoranException;
-import ch.qos.logback.core.status.OnConsoleStatusListener;
-import ch.qos.logback.core.testUtil.EnvUtilForTests;
 import ch.qos.logback.core.testUtil.RandomUtil;
+import ch.qos.logback.core.util.StatusPrinter;
 
 import com.icegreen.greenmail.util.GreenMail;
 import com.icegreen.greenmail.util.GreenMailUtil;
 import com.icegreen.greenmail.util.ServerSetup;
 
-import org.dom4j.DocumentException;
-import org.dom4j.io.SAXReader;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.slf4j.MDC;
-
-import javax.mail.MessagingException;
-import javax.mail.internet.MimeMessage;
-import javax.mail.internet.MimeMultipart;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.concurrent.TimeUnit;
-
 import static org.junit.Assert.*;
 
 public class SMTPAppender_GreenTest {
 
-  static final String HEADER = "HEADER\n";
-  static final String FOOTER = "FOOTER\n";
-  static final String DEFAULT_PATTERN = "%-4relative %mdc [%thread] %-5level %class - %msg%n";
-
-  static final boolean SYNCHRONOUS = false;
-  static final boolean ASYNCHRONOUS = true;
-
   int port = RandomUtil.getRandomServerPort();
-  // GreenMail cannot be static. As a shared server induces race conditions
-  GreenMail greenMailServer;
-
+  GreenMail greenMail;
   SMTPAppender smtpAppender;
-  LoggerContext loggerContext = new LoggerContext();
-  Logger logger = loggerContext.getLogger(this.getClass());
+  LoggerContext lc = new LoggerContext();
+  Logger logger = lc.getLogger(this.getClass());
 
+  static final String TEST_SUBJECT = "test subject";
+  static final String HEADER = "HEADER\n";
+  static final String FOOTER = "FOOTER\n";
 
   @Before
   public void setUp() throws Exception {
-
-    OnConsoleStatusListener.addNewInstanceToContext(loggerContext);
     MDC.clear();
     ServerSetup serverSetup = new ServerSetup(port, "localhost",
             ServerSetup.PROTOCOL_SMTP);
-    greenMailServer = new GreenMail(serverSetup);
-    greenMailServer.start();
-    // give the server a head start
-    if (EnvUtilForTests.isRunningOnSlowJenkins()) {
-      Thread.sleep(2000);
-    } else {
-      Thread.sleep(50);
-    }
+    greenMail = new GreenMail(serverSetup);
+    greenMail.start();
+    // let the grean mail server get a head start
+    Thread.sleep(100);
   }
 
   @After
   public void tearDown() throws Exception {
-    greenMailServer.stop();
+    greenMail.stop();
   }
 
-  void buildSMTPAppender(String subject, boolean synchronicity) throws Exception {
+  void buildSMTPAppender() throws Exception {
     smtpAppender = new SMTPAppender();
-    smtpAppender.setContext(loggerContext);
+    smtpAppender.setContext(lc);
     smtpAppender.setName("smtp");
     smtpAppender.setFrom("user at host.dom");
     smtpAppender.setSMTPHost("localhost");
     smtpAppender.setSMTPPort(port);
-    smtpAppender.setSubject(subject);
+    smtpAppender.setSubject(TEST_SUBJECT);
     smtpAppender.addTo("nospam at qos.ch");
-    smtpAppender.setAsynchronousSending(synchronicity);
+    // smtpAppender.start();
   }
 
-  private Layout<ILoggingEvent> buildPatternLayout(String pattern) {
+  private Layout<ILoggingEvent> buildPatternLayout(LoggerContext lc) {
     PatternLayout layout = new PatternLayout();
-    layout.setContext(loggerContext);
+    layout.setContext(lc);
     layout.setFileHeader(HEADER);
     layout.setOutputPatternAsHeader(false);
-    layout.setPattern(pattern);
+    layout.setPattern("%-4relative %mdc [%thread] %-5level %class - %msg%n");
     layout.setFileFooter(FOOTER);
     layout.start();
     return layout;
   }
 
-  private Layout<ILoggingEvent> buildHTMLLayout() {
+  private Layout<ILoggingEvent> buildHTMLLayout(LoggerContext lc) {
     HTMLLayout layout = new HTMLLayout();
-    layout.setContext(loggerContext);
+    layout.setContext(lc);
+    // layout.setFileHeader(HEADER);
     layout.setPattern("%level%class%msg");
+    // layout.setFileFooter(FOOTER);
     layout.start();
     return layout;
   }
 
-  private void waitForServerToReceiveEmails(int emailCount) throws InterruptedException {
-    greenMailServer.waitForIncomingEmail(5000, emailCount);
-  }
-
-  private MimeMultipart verifyAndExtractMimeMultipart(String subject) throws MessagingException,
-          IOException, InterruptedException {
-    int oldCount = 0;
-    int expectedEmailCount = 1;
-    // wait for the server to receive the messages
-    waitForServerToReceiveEmails(expectedEmailCount);
-    MimeMessage[] mma = greenMailServer.getReceivedMessages();
+  private MimeMultipart verify(String subject) throws MessagingException,
+          IOException {
+    MimeMessage[] mma = greenMail.getReceivedMessages();
     assertNotNull(mma);
-    assertEquals(expectedEmailCount, mma.length);
-    MimeMessage mm = mma[oldCount];
+    assertEquals(1, mma.length);
+    MimeMessage mm = mma[0];
     // http://jira.qos.ch/browse/LBCLASSIC-67
     assertEquals(subject, mm.getSubject());
     return (MimeMultipart) mm.getContent();
   }
 
   void waitUntilEmailIsSent() throws InterruptedException {
-    loggerContext.getExecutorService().shutdown();
-    loggerContext.getExecutorService().awaitTermination(1000, TimeUnit.MILLISECONDS);
+    lc.getExecutorService().shutdown();
+    lc.getExecutorService().awaitTermination(1000, TimeUnit.MILLISECONDS);
   }
 
   @Test
-  public void synchronousSmoke() throws Exception {
-    String subject = "synchronousSmoke";
-    buildSMTPAppender(subject, SYNCHRONOUS);
-
-    smtpAppender.setLayout(buildPatternLayout(DEFAULT_PATTERN));
+  public void smoke() throws Exception {
+    buildSMTPAppender();
+    smtpAppender.setLayout(buildPatternLayout(lc));
     smtpAppender.start();
     logger.addAppender(smtpAppender);
     logger.debug("hello");
     logger.error("en error", new Exception("an exception"));
 
-    MimeMultipart mp = verifyAndExtractMimeMultipart(subject);
+    waitUntilEmailIsSent();
+//    synchronized (smtpAppender) {
+//      smtpAppender.wait();
+//    }
+
+    StatusPrinter.print(lc);
+    MimeMultipart mp = verify(TEST_SUBJECT);
     String body = GreenMailUtil.getBody(mp.getBodyPart(0));
     assertTrue(body.startsWith(HEADER.trim()));
     assertTrue(body.endsWith(FOOTER.trim()));
   }
 
   @Test
-  public void asynchronousSmoke() throws Exception {
-    String subject = "asynchronousSmoke";
-    buildSMTPAppender(subject, ASYNCHRONOUS);
-    smtpAppender.setLayout(buildPatternLayout(DEFAULT_PATTERN));
+  public void LBCLASSIC_104() throws Exception {
+    buildSMTPAppender();
+    smtpAppender.setLayout(buildPatternLayout(lc));
     smtpAppender.start();
     logger.addAppender(smtpAppender);
+    MDC.put("key", "val");
     logger.debug("hello");
+    MDC.clear();
     logger.error("en error", new Exception("an exception"));
 
     waitUntilEmailIsSent();
-    MimeMultipart mp = verifyAndExtractMimeMultipart(subject);
+    MimeMultipart mp = verify(TEST_SUBJECT);
     String body = GreenMailUtil.getBody(mp.getBodyPart(0));
     assertTrue(body.startsWith(HEADER.trim()));
+    assertTrue(body.contains("key=val"));
     assertTrue(body.endsWith(FOOTER.trim()));
   }
 
-  // See also http://jira.qos.ch/browse/LOGBACK-734
   @Test
-  public void callerDataShouldBeCorrectlySetWithAsynchronousSending() throws Exception {
-    String subject = "LOGBACK-734";
-    buildSMTPAppender("LOGBACK-734", ASYNCHRONOUS);
-    smtpAppender.setLayout(buildPatternLayout(DEFAULT_PATTERN));
-    smtpAppender.setIncludeCallerData(true);
+  public void html() throws Exception {
+    buildSMTPAppender();
+    smtpAppender.setLayout(buildHTMLLayout(lc));
     smtpAppender.start();
     logger.addAppender(smtpAppender);
-    logger.debug("LOGBACK-734");
-    logger.error("callerData", new Exception("ShouldBeCorrectlySetWithAsynchronousSending"));
+    logger.debug("hello");
+    logger.error("en error", new Exception("an exception"));
 
     waitUntilEmailIsSent();
-    MimeMultipart mp = verifyAndExtractMimeMultipart(subject);
-    String body = GreenMailUtil.getBody(mp.getBodyPart(0));
-    assertTrue("actual [" + body + "]", body.contains("DEBUG " + this.getClass().getName() + " - LOGBACK-734"));
-  }
+    MimeMultipart mp = verify(TEST_SUBJECT);
 
-  // lost MDC
-  @Test
-  public void LBCLASSIC_104() throws Exception {
-    String subject = "LBCLASSIC_104";
-    buildSMTPAppender(subject, SYNCHRONOUS);
-    smtpAppender.setAsynchronousSending(false);
-    smtpAppender.setLayout(buildPatternLayout(DEFAULT_PATTERN));
-    smtpAppender.start();
-    logger.addAppender(smtpAppender);
-    MDC.put("key", "val");
-    logger.debug("LBCLASSIC_104");
-    MDC.clear();
-    logger.error("en error", new Exception("test"));
+    // verify strict adherence to xhtml1-strict.dtd
+    SAXReader reader = new SAXReader();
+    reader.setValidation(true);
+    reader.setEntityResolver(new XHTMLEntityResolver());
+    reader.read(mp.getBodyPart(0).getInputStream());
 
-    MimeMultipart mp = verifyAndExtractMimeMultipart(subject);
-    String body = GreenMailUtil.getBody(mp.getBodyPart(0));
-    assertTrue(body.startsWith(HEADER.trim()));
-    System.out.println(body);
-    assertTrue(body.contains("key=val"));
-    assertTrue(body.endsWith(FOOTER.trim()));
   }
 
   @Test
-  public void html() throws Exception {
-    String subject = "html";
-    buildSMTPAppender(subject, SYNCHRONOUS);
-    smtpAppender.setAsynchronousSending(false);
-    smtpAppender.setLayout(buildHTMLLayout());
+  /**
+   * Checks that even when many events are processed, the output is still
+   * conforms to xhtml-strict.dtd.
+   *
+   * Note that SMTPAppender only keeps only 500 or so (=buffer size) events. So
+   * the generated output will be rather short.
+   */
+  public void htmlLong() throws Exception {
+    buildSMTPAppender();
+    smtpAppender.setLayout(buildHTMLLayout(lc));
     smtpAppender.start();
     logger.addAppender(smtpAppender);
-    logger.debug("html");
+    for (int i = 0; i < CoreConstants.TABLE_ROW_LIMIT * 3; i++) {
+      logger.debug("hello " + i);
+    }
     logger.error("en error", new Exception("an exception"));
 
-    MimeMultipart mp = verifyAndExtractMimeMultipart(subject);
+    waitUntilEmailIsSent();
+    MimeMultipart mp = verify(TEST_SUBJECT);
 
-    // verifyAndExtractMimeMultipart strict adherence to xhtml1-strict.dtd
+    // verify strict adherence to xhtml1-strict.dtd
     SAXReader reader = new SAXReader();
     reader.setValidation(true);
     reader.setEntityResolver(new XHTMLEntityResolver());
-    byte[] messageBytes = getAsByteArray(mp.getBodyPart(0).getInputStream());
-    ByteArrayInputStream bais = new ByteArrayInputStream(messageBytes);
-    try {
-      reader.read(bais);
-    } catch (DocumentException de) {
-      System.out.println("incoming message:");
-      System.out.println(new String(messageBytes));
-      throw de;
-    }
-  }
-
-  private byte[] getAsByteArray(InputStream inputStream) throws IOException {
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-
-    byte[] buffer = new byte[1024];
-    int n = -1;
-    while ((n = inputStream.read(buffer)) != -1) {
-      baos.write(buffer, 0, n);
-    }
-    return baos.toByteArray();
+    reader.read(mp.getBodyPart(0).getInputStream());
   }
 
   private void configure(String file) throws JoranException {
     JoranConfigurator jc = new JoranConfigurator();
-    jc.setContext(loggerContext);
-    loggerContext.putProperty("port", "" + port);
+    jc.setContext(lc);
+    System.out.println("port=" + port);
+    lc.putProperty("port", "" + port);
     jc.doConfigure(file);
   }
 
@@ -270,14 +224,14 @@ public class SMTPAppender_GreenTest {
     configure(ClassicTestConstants.JORAN_INPUT_PREFIX
             + "smtp/customEvaluator.xml");
 
-    logger.debug("test");
-    String msg2 = "CustomEvaluator";
+    logger.debug("hello");
+    String msg2 = "world";
     logger.debug(msg2);
     logger.debug("invisible");
     waitUntilEmailIsSent();
-    MimeMultipart mp = verifyAndExtractMimeMultipart("testCustomEvaluator " + this.getClass().getName() + " - " + msg2);
+    MimeMultipart mp = verify(this.getClass().getName() + " - " + msg2);
     String body = GreenMailUtil.getBody(mp.getBodyPart(0));
-    assertEquals("testCustomEvaluator", body);
+    assertEquals("helloworld", body);
   }
 
   @Test
@@ -290,35 +244,33 @@ public class SMTPAppender_GreenTest {
     String msg = "hello";
     logger.error(msg);
     waitUntilEmailIsSent();
-    MimeMultipart mp = verifyAndExtractMimeMultipart("testCustomBufferSize " + this.getClass().getName() + " - " + msg);
+    MimeMultipart mp = verify(this.getClass().getName() + " - " + msg);
     String body = GreenMailUtil.getBody(mp.getBodyPart(0));
     assertEquals(msg, body);
   }
 
-  // this test fails intermittently on Jenkins.
   @Test
   public void testMultipleTo() throws Exception {
-    buildSMTPAppender("testMultipleTo", SYNCHRONOUS);
-    smtpAppender.setLayout(buildPatternLayout(DEFAULT_PATTERN));
-    // buildSMTPAppender() already added one destination address
+    buildSMTPAppender();
+    smtpAppender.setLayout(buildPatternLayout(lc));
     smtpAppender.addTo("Test <test at example.com>, other-test at example.com");
     smtpAppender.start();
     logger.addAppender(smtpAppender);
-    logger.debug("testMultipleTo hello");
-    logger.error("testMultipleTo en error", new Exception("an exception"));
-    Thread.yield();
-    int expectedEmailCount = 3;
-    waitForServerToReceiveEmails(expectedEmailCount);
-    MimeMessage[] mma = greenMailServer.getReceivedMessages();
+    logger.debug("hello");
+    logger.error("en error", new Exception("an exception"));
+
+    waitUntilEmailIsSent();
+    MimeMessage[] mma = greenMail.getReceivedMessages();
     assertNotNull(mma);
-    assertEquals(expectedEmailCount, mma.length);
+    assertEquals(3, mma.length);
   }
 
+
   // http://jira.qos.ch/browse/LBCLASSIC-221
   @Test
   public void bufferShouldBeResetBetweenMessages() throws Exception {
-    buildSMTPAppender("bufferShouldBeResetBetweenMessages", SYNCHRONOUS);
-    smtpAppender.setLayout(buildPatternLayout(DEFAULT_PATTERN));
+    buildSMTPAppender();
+    smtpAppender.setLayout(buildPatternLayout(lc));
     smtpAppender.start();
     logger.addAppender(smtpAppender);
     String msg0 = "hello zero";
@@ -329,44 +281,25 @@ public class SMTPAppender_GreenTest {
     logger.debug(msg1);
     logger.error("error one");
 
-    Thread.yield();
-    int oldCount = 0;
-    int expectedEmailCount = oldCount + 2;
-    waitForServerToReceiveEmails(expectedEmailCount);
+    waitUntilEmailIsSent();
 
-    MimeMessage[] mma = greenMailServer.getReceivedMessages();
+    MimeMessage[] mma = greenMail.getReceivedMessages();
     assertNotNull(mma);
-    assertEquals(expectedEmailCount, mma.length);
+    assertEquals(2, mma.length);
 
-    MimeMessage mm0 = mma[oldCount];
+    MimeMessage mm0 = mma[0];
     MimeMultipart content0 = (MimeMultipart) mm0.getContent();
     String body0 = GreenMailUtil.getBody(content0.getBodyPart(0));
+    System.out.println(body0);
+    System.out.println("--------------");
 
-    MimeMessage mm1 = mma[oldCount + 1];
+    MimeMessage mm1 = mma[1];
     MimeMultipart content1 = (MimeMultipart) mm1.getContent();
     String body1 = GreenMailUtil.getBody(content1.getBodyPart(0));
+    System.out.println(body1);
     // second body should not contain content from first message
     assertFalse(body1.contains(msg0));
-  }
 
-  @Test
-  public void multiLineSubjectTruncatedAtFirstNewLine() throws Exception {
-    String line1 = "line 1 of subject";
-    String subject = line1 + "\nline 2 of subject\n";
-    buildSMTPAppender(subject, ASYNCHRONOUS);
 
-    smtpAppender.setLayout(buildPatternLayout(DEFAULT_PATTERN));
-    smtpAppender.start();
-    logger.addAppender(smtpAppender);
-    logger.debug("hello");
-    logger.error("en error", new Exception("an exception"));
-
-    Thread.yield();
-    waitUntilEmailIsSent();
-    waitForServerToReceiveEmails(1);
-
-    MimeMessage[] mma = greenMailServer.getReceivedMessages();
-    assertEquals(1, mma.length);
-    assertEquals(line1, mma[0].getSubject());
   }
 }
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/SMTPAppender_SubethaSMTPTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/SMTPAppender_SubethaSMTPTest.java
index 8636cde..34b57bd 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/SMTPAppender_SubethaSMTPTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/SMTPAppender_SubethaSMTPTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -28,7 +28,10 @@ import javax.mail.internet.MimeMessage;
 import javax.mail.internet.MimeMultipart;
 
 import org.dom4j.io.SAXReader;
-import org.junit.*;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
 import org.subethamail.smtp.AuthenticationHandler;
 import org.subethamail.smtp.AuthenticationHandlerFactory;
 import org.subethamail.smtp.auth.LoginAuthenticationHandler;
@@ -51,51 +54,34 @@ import ch.qos.logback.core.Layout;
 import ch.qos.logback.core.util.StatusPrinter;
 
 public class SMTPAppender_SubethaSMTPTest {
-  static final String TEST_SUBJECT = "test subject";
-  static final String HEADER = "HEADER\n";
-  static final String FOOTER = "FOOTER\n";
 
-  static int DIFF = 1024 + new Random().nextInt(30000);
-  static Wiser WISER;
+  int diff = 1024 + new Random().nextInt(30000);
+  Wiser wiser;
 
   SMTPAppender smtpAppender;
   LoggerContext loggerContext = new LoggerContext();
 
-  int numberOfOldMessages;
-
-
-  @BeforeClass
-  static public void beforeClass() {
-    WISER = new Wiser();
-    WISER.setPort(DIFF);
-    WISER.start();
-  }
-
-  @AfterClass
-  static public void afterClass() throws Exception {
-    WISER.stop();
-  }
+  static final String TEST_SUBJECT = "test subject";
+  static final String HEADER = "HEADER\n";
+  static final String FOOTER = "FOOTER\n";
 
   @Before
-  public void setUp() throws Exception {
-    numberOfOldMessages = WISER.getMessages().size();
+  public void setUp() throws Exception { 
+    wiser = new Wiser();
+    wiser.setPort(diff);
+    wiser.start();
+    //StartTLSCommand s;
     buildSMTPAppender();
   }
 
-  @After
-  public void tearDown() {
-    // clear any authentication handler factory
-    MessageListenerAdapter mla = (MessageListenerAdapter) WISER.getServer().getMessageHandlerFactory();
-    mla.setAuthenticationHandlerFactory(null);
-  }
-
   void buildSMTPAppender() throws Exception {
     smtpAppender = new SMTPAppender();
     smtpAppender.setContext(loggerContext);
     smtpAppender.setName("smtp");
     smtpAppender.setFrom("user at host.dom");
     smtpAppender.setSMTPHost("localhost");
-    smtpAppender.setSMTPPort(DIFF);
+    System.out.println("diff="+diff);
+    smtpAppender.setSMTPPort(diff);
     smtpAppender.setSubject(TEST_SUBJECT);
     smtpAppender.addTo("noreply at qos.ch");
   }
@@ -120,6 +106,10 @@ public class SMTPAppender_SubethaSMTPTest {
     return layout;
   }
 
+  @After
+  public void tearDown() throws Exception {
+    wiser.stop();
+  }
 
   private static String getWholeMessage(Part msg) {
     try {
@@ -141,7 +131,7 @@ public class SMTPAppender_SubethaSMTPTest {
     String all = getWholeMessage(msg);
     int i = all.indexOf("\r\n\r\n");
     return all.substring(i + 4, all.length());
-  }
+}
 
   @Test
   public void smoke() throws Exception {
@@ -153,27 +143,25 @@ public class SMTPAppender_SubethaSMTPTest {
     logger.error("en error", new Exception("an exception"));
 
     waitUntilEmailIsSent();
-    System.out.println("*** " + ((ThreadPoolExecutor) loggerContext.getExecutorService()).getCompletedTaskCount());
-    List<WiserMessage> wiserMsgList = WISER.getMessages();
-
+    System.out.println("*** "+((ThreadPoolExecutor)loggerContext.getExecutorService()).getCompletedTaskCount());
+    List<WiserMessage> wiserMsgList = wiser.getMessages();
+    
     assertNotNull(wiserMsgList);
-    assertEquals(numberOfOldMessages+1, wiserMsgList.size());
-    WiserMessage wm = wiserMsgList.get(numberOfOldMessages);
+    assertEquals(1, wiserMsgList.size());
+    WiserMessage wm = wiserMsgList.get(0);
     // http://jira.qos.ch/browse/LBCLASSIC-67
     MimeMessage mm = wm.getMimeMessage();
     assertEquals(TEST_SUBJECT, mm.getSubject());
 
     MimeMultipart mp = (MimeMultipart) mm.getContent();
     String body = getBody(mp.getBodyPart(0));
-    System.out.println("[" + body);
+    System.out.println("["+body);
     assertTrue(body.startsWith(HEADER.trim()));
     assertTrue(body.endsWith(FOOTER.trim()));
   }
 
-
   @Test
   public void html() throws Exception {
-
     smtpAppender.setLayout(buildHTMLLayout(loggerContext));
     smtpAppender.start();
     Logger logger = loggerContext.getLogger("test");
@@ -181,12 +169,11 @@ public class SMTPAppender_SubethaSMTPTest {
     logger.debug("hello");
     logger.error("en error", new Exception("an exception"));
     waitUntilEmailIsSent();
-
-    List<WiserMessage> wiserMsgList = WISER.getMessages();
-
+    List<WiserMessage> wiserMsgList = wiser.getMessages();
+    
     assertNotNull(wiserMsgList);
-    assertEquals(numberOfOldMessages + 1, wiserMsgList.size());
-    WiserMessage wm = wiserMsgList.get(numberOfOldMessages);
+    assertEquals(1, wiserMsgList.size());
+    WiserMessage wm = wiserMsgList.get(0);
     MimeMessage mm = wm.getMimeMessage();
     assertEquals(TEST_SUBJECT, mm.getSubject());
 
@@ -204,7 +191,7 @@ public class SMTPAppender_SubethaSMTPTest {
   /**
    * Checks that even when many events are processed, the output is still
    * conforms to xhtml-strict.dtd.
-   *
+   * 
    * Note that SMTPAppender only keeps only 500 or so (=buffer size) events. So
    * the generated output will be rather short.
    */
@@ -218,11 +205,11 @@ public class SMTPAppender_SubethaSMTPTest {
     }
     logger.error("en error", new Exception("an exception"));
     waitUntilEmailIsSent();
-    List<WiserMessage> wiserMsgList = WISER.getMessages();
-
+    List<WiserMessage> wiserMsgList = wiser.getMessages();
+    
     assertNotNull(wiserMsgList);
-    assertEquals(numberOfOldMessages + 1, wiserMsgList.size());
-    WiserMessage wm = wiserMsgList.get(numberOfOldMessages);
+    assertEquals(1, wiserMsgList.size());
+    WiserMessage wm = wiserMsgList.get(0);
     MimeMessage mm = wm.getMimeMessage();
     assertEquals(TEST_SUBJECT, mm.getSubject());
 
@@ -234,15 +221,15 @@ public class SMTPAppender_SubethaSMTPTest {
     reader.setEntityResolver(new XHTMLEntityResolver());
     reader.read(mp.getBodyPart(0).getInputStream());
   }
-
+  
   @Test
   public void authenticated() throws Exception {
-    MessageListenerAdapter mla = (MessageListenerAdapter) WISER.getServer().getMessageHandlerFactory();
+    MessageListenerAdapter mla = (MessageListenerAdapter)wiser.getServer().getMessageHandlerFactory();
     mla.setAuthenticationHandlerFactory(new TrivialAuthHandlerFactory());
 
     smtpAppender.setUsername("x");
     smtpAppender.setPassword("x");
-
+    
     smtpAppender.setLayout(buildPatternLayout(loggerContext));
     smtpAppender.start();
     Logger logger = loggerContext.getLogger("test");
@@ -250,11 +237,11 @@ public class SMTPAppender_SubethaSMTPTest {
     logger.debug("hello");
     logger.error("en error", new Exception("an exception"));
     waitUntilEmailIsSent();
-    List<WiserMessage> wiserMsgList = WISER.getMessages();
+    List<WiserMessage> wiserMsgList = wiser.getMessages();
 
     assertNotNull(wiserMsgList);
-    assertEquals(numberOfOldMessages + 1, wiserMsgList.size());
-    WiserMessage wm = wiserMsgList.get(numberOfOldMessages);
+    assertEquals(1, wiserMsgList.size());
+    WiserMessage wm = wiserMsgList.get(0);
     // http://jira.qos.ch/browse/LBCLASSIC-67
     MimeMessage mm = wm.getMimeMessage();
     assertEquals(TEST_SUBJECT, mm.getSubject());
@@ -264,20 +251,19 @@ public class SMTPAppender_SubethaSMTPTest {
     assertTrue(body.startsWith(HEADER.trim()));
     assertTrue(body.endsWith(FOOTER.trim()));
   }
-
+  
   @Test
-  @Ignore
+  @Ignore 
   // Unfortunately, there seems to be a problem with SubethaSMTP's implementation
   // of startTLS. The same SMTPAppender code works fine when tested with gmail.
   public void authenticatedSSL() throws Exception {
-    MessageListenerAdapter mla = (MessageListenerAdapter) WISER.getServer().getMessageHandlerFactory();
+    MessageListenerAdapter mla = (MessageListenerAdapter)wiser.getServer().getMessageHandlerFactory();
     mla.setAuthenticationHandlerFactory(new TrivialAuthHandlerFactory());
-
-
+    
     smtpAppender.setSTARTTLS(true);
     smtpAppender.setUsername("xx");
-    smtpAppender.setPassword("xx");
-
+    smtpAppender.setPassword("xx");    
+  
     smtpAppender.setLayout(buildPatternLayout(loggerContext));
     smtpAppender.start();
     Logger logger = loggerContext.getLogger("test");
@@ -286,23 +272,23 @@ public class SMTPAppender_SubethaSMTPTest {
     logger.error("en error", new Exception("an exception"));
 
     waitUntilEmailIsSent();
-    List<WiserMessage> wiserMsgList = WISER.getMessages();
+    List<WiserMessage> wiserMsgList = wiser.getMessages();
 
     assertNotNull(wiserMsgList);
     assertEquals(1, wiserMsgList.size());
   }
-
+  
   @Test
   @Ignore
   public void authenticatedGmailStartTLS() throws Exception {
     smtpAppender.setSMTPHost("smtp.gmail.com");
     smtpAppender.setSMTPPort(587);
-
+    
     smtpAppender.addTo("XXX at gmail.com");
     smtpAppender.setSTARTTLS(true);
     smtpAppender.setUsername("XXX at gmail.com");
-    smtpAppender.setPassword("XXX");
-
+    smtpAppender.setPassword("XXX");    
+  
     smtpAppender.setLayout(buildPatternLayout(loggerContext));
     smtpAppender.start();
     Logger logger = loggerContext.getLogger("authenticatedGmailSTARTTLS");
@@ -312,18 +298,18 @@ public class SMTPAppender_SubethaSMTPTest {
 
     StatusPrinter.print(loggerContext);
   }
-
+  
   @Test
   @Ignore
   public void authenticatedGmail_SSL() throws Exception {
     smtpAppender.setSMTPHost("smtp.gmail.com");
     smtpAppender.setSMTPPort(465);
-
+    
     smtpAppender.addTo("XXX at gmail.com");
     smtpAppender.setSSL(true);
     smtpAppender.setUsername("XXX at gmail.com");
-    smtpAppender.setPassword("XXX");
-
+    smtpAppender.setPassword("XXX");    
+  
     smtpAppender.setLayout(buildPatternLayout(loggerContext));
     smtpAppender.start();
     Logger logger = loggerContext.getLogger("authenticatedGmail_SSL");
@@ -344,20 +330,20 @@ public class SMTPAppender_SubethaSMTPTest {
     logger.debug("hello");
     logger.error("en error", new Exception("an exception"));
     waitUntilEmailIsSent();
+    List<WiserMessage> wiserMsgList = wiser.getMessages();
 
-    List<WiserMessage> wiserMsgList = WISER.getMessages();
     assertNotNull(wiserMsgList);
-    assertEquals(numberOfOldMessages + 3, wiserMsgList.size());
+    assertEquals(3, wiserMsgList.size());
   }
-
+  
   public class TrivialAuthHandlerFactory implements AuthenticationHandlerFactory {
     public AuthenticationHandler create() {
       PluginAuthenticationHandler ret = new PluginAuthenticationHandler();
       UsernamePasswordValidator validator = new UsernamePasswordValidator() {
         public void login(String username, String password)
-                throws LoginFailedException {
-          if (!username.equals(password)) {
-            throw new LoginFailedException("username=" + username + ", password=" + password);
+            throws LoginFailedException {
+          if(!username.equals(password)) {
+            throw new LoginFailedException("username="+username+", password="+password);
           }
         }
       };
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/SSLSocketReceiverTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/SSLSocketReceiverTest.java
deleted file mode 100644
index dad1166..0000000
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/SSLSocketReceiverTest.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.net;
-
-import static org.junit.Assert.assertNotNull;
-
-import java.net.InetAddress;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.slf4j.LoggerFactory;
-
-import ch.qos.logback.classic.LoggerContext;
-
-/**
- * Unit tests for {@link SSLSocketReceiver}.
- *
- * @author Carl Harris
- */
-public class SSLSocketReceiverTest {
-
-  private SSLSocketReceiver remote =
-      new SSLSocketReceiver();
-  
-  @Before
-  public void setUp() throws Exception {
-    LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
-    remote.setContext(lc);
-  }
-  
-  @Test
-  public void testUsingDefaultConfig() throws Exception {
-    // should be able to start successfully with no SSL configuration at all
-    remote.setRemoteHost(InetAddress.getLocalHost().getHostAddress());
-    remote.setPort(6000);
-    remote.start();
-    assertNotNull(remote.getSocketFactory());
-  }
-  
-}
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/SerializationPerfTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/SerializationPerfTest.java
index 2438ada..0a17aef 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/SerializationPerfTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/SerializationPerfTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/SocketAppenderMessageLossTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/SocketAppenderMessageLossTest.java
deleted file mode 100644
index b2a7216..0000000
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/SocketAppenderMessageLossTest.java
+++ /dev/null
@@ -1,116 +0,0 @@
-package ch.qos.logback.classic.net;
-
-import ch.qos.logback.classic.Logger;
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.core.AppenderBase;
-import ch.qos.logback.core.read.ListAppender;
-import ch.qos.logback.core.testUtil.RandomUtil;
-import ch.qos.logback.core.util.Duration;
-import org.junit.Test;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.CountDownLatch;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-public class SocketAppenderMessageLossTest {
-  int runLen = 100;
-  Duration reconnectionDelay =  new Duration(1000);
-
-  @Test(timeout = 1000)
-  public void synchronousSocketAppender() throws Exception {
-
-    SocketAppender socketAppender = new SocketAppender();
-    socketAppender.setReconnectionDelay(reconnectionDelay);
-    socketAppender.setIncludeCallerData(true);
-
-    runTest(socketAppender);
-  }
-
-  @Test(timeout = 1000)
-  public void smallQueueSocketAppender() throws Exception {
-
-    SocketAppender socketAppender = new SocketAppender();
-    socketAppender.setReconnectionDelay(reconnectionDelay);
-    socketAppender.setQueueSize(runLen/10);
-
-    runTest(socketAppender);
-  }
-
-  @Test(timeout = 1000)
-  public void largeQueueSocketAppender() throws Exception {
-    SocketAppender socketAppender = new SocketAppender();
-    socketAppender.setReconnectionDelay(reconnectionDelay);
-    socketAppender.setQueueSize(runLen*5);
-
-    runTest(socketAppender);
-  }
-
-  // appender used to signal when the N'th event (as set in the latch) is received by the server
-  // this allows us to have test which are both more robust and quicker.
-  static public class ListAppenderWithLatch extends AppenderBase<ILoggingEvent> {
-    public List<ILoggingEvent> list = new ArrayList<ILoggingEvent>();
-    CountDownLatch latch;
-
-    ListAppenderWithLatch(CountDownLatch latch) {
-      this.latch = latch;
-    }
-    protected void append(ILoggingEvent e) {
-      list.add(e);
-      latch.countDown();
-   }
-  }
-
-
-  public void runTest(SocketAppender socketAppender) throws Exception {
-    final int port = RandomUtil.getRandomServerPort();
-
-   LoggerContext serverLoggerContext = new LoggerContext();
-    serverLoggerContext.setName("serverLoggerContext");
-
-    CountDownLatch allMessagesReceivedLatch = new CountDownLatch(runLen);
-    ListAppenderWithLatch listAppender = new ListAppenderWithLatch(allMessagesReceivedLatch);
-    listAppender.setContext(serverLoggerContext);
-    listAppender.start();
-
-    Logger serverLogger = serverLoggerContext.getLogger(getClass());
-    serverLogger.setAdditive(false);
-    serverLogger.addAppender(listAppender);
-
-
-    LoggerContext loggerContext = new LoggerContext();
-    loggerContext.setName("clientLoggerContext");
-    socketAppender.setContext(loggerContext);
-
-    CountDownLatch latch = new  CountDownLatch(1);
-    SimpleSocketServer simpleSocketServer =  new SimpleSocketServer(serverLoggerContext, port);
-    simpleSocketServer.start();
-    simpleSocketServer.setLatch(latch);
-
-    latch.await();
-
-    socketAppender.setPort(port);
-    socketAppender.setRemoteHost("localhost");
-    socketAppender.setReconnectionDelay(reconnectionDelay);
-    socketAppender.start();
-    assertTrue(socketAppender.isStarted());
-
-    Logger logger = loggerContext.getLogger(getClass());
-    logger.setAdditive(false);
-    logger.addAppender(socketAppender);
-
-
-    for (int i = 0; i < runLen; ++i) {
-      logger.info("hello");
-    }
-
-    allMessagesReceivedLatch.await();
-
-    assertEquals(runLen, listAppender.list.size());
-    loggerContext.stop();
-    simpleSocketServer.close();
-  }
-}
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/SocketAppenderTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/SocketAppenderTest.java
new file mode 100644
index 0000000..4ca63ab
--- /dev/null
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/SocketAppenderTest.java
@@ -0,0 +1,286 @@
+/**
+ * Logback: the reliable, generic, fast and flexible logging framework.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
+ *
+ * This program and the accompanying materials are dual-licensed under
+ * either the terms of the Eclipse Public License v1.0 as published by
+ * the Eclipse Foundation
+ *
+ *   or (per the licensee's choosing)
+ *
+ * under the terms of the GNU Lesser General Public License version 2.1
+ * as published by the Free Software Foundation.
+ */
+package ch.qos.logback.classic.net;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Map;
+
+import ch.qos.logback.core.testUtil.RandomUtil;
+import org.junit.Before;
+import org.junit.Test;
+import org.slf4j.MDC;
+import org.slf4j.Marker;
+import org.slf4j.MarkerFactory;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.Logger;
+import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.classic.spi.LoggerContextVO;
+import ch.qos.logback.core.read.ListAppender;
+import ch.qos.logback.core.util.StatusPrinter;
+
+public class SocketAppenderTest {
+
+  static final String LIST_APPENDER_NAME = "la";
+  static final int JOIN_OR_WAIT_TIMEOUT = 200;
+  static final int SLEEP_AFTER_LOG = 100;
+
+  int diff = RandomUtil.getPositiveInt();
+
+  int port = 1024+(diff%30000);
+  String mdcKey = "key"+diff;
+
+  LoggerContext lc = new LoggerContext();
+  LoggerContext serverLC = new LoggerContext();
+  ListAppender<ILoggingEvent> la = new ListAppender<ILoggingEvent>();
+  SocketAppender socketAppender = new SocketAppender();
+  private boolean includeCallerData = false;
+  private SimpleSocketServer simpleSocketServer;
+
+  @Before
+  public void setUp() {
+    System.out.println("SocketAppenderTest, start at "+System.currentTimeMillis()+", port="+port);
+  }
+
+  @Test
+  public void startFailNoRemoteHost() {
+    SocketAppender appender = new SocketAppender();
+    appender.setContext(lc);
+    appender.setPort(port);
+    appender.start();
+    assertEquals(1, lc.getStatusManager().getCount());
+  }
+
+  @Test
+  public void receiveMessage() throws InterruptedException {
+    fireServer();
+    waitForServerToStart();
+    configureClient();
+
+    Logger logger = lc.getLogger(Logger.ROOT_LOGGER_NAME);
+    logger.debug("test msg");
+
+    Thread.sleep(SLEEP_AFTER_LOG);
+
+    simpleSocketServer.close();
+    simpleSocketServer.join(JOIN_OR_WAIT_TIMEOUT);
+    assertTrue(simpleSocketServer.isClosed());
+    assertEquals(1, la.list.size());
+
+    ILoggingEvent remoteEvent = la.list.get(0);
+    assertNull(remoteEvent.getCallerData());
+    assertEquals("test msg", remoteEvent.getMessage());
+    assertEquals(Level.DEBUG, remoteEvent.getLevel());
+  }
+
+  @Test
+  public void receiveWithContext() throws InterruptedException {
+    fireServer();
+    waitForServerToStart();
+    configureClient();
+
+    Logger logger = lc.getLogger(Logger.ROOT_LOGGER_NAME);
+    logger.debug("test msg");
+    Thread.sleep(SLEEP_AFTER_LOG);
+
+    simpleSocketServer.close();
+    simpleSocketServer.join(JOIN_OR_WAIT_TIMEOUT);
+    assertTrue(simpleSocketServer.isClosed());
+    assertEquals(1, la.list.size());
+
+    ILoggingEvent remoteEvent = la.list.get(0);
+
+    String loggerName = remoteEvent.getLoggerName();
+    assertNotNull(loggerName);
+    assertEquals(Logger.ROOT_LOGGER_NAME, loggerName);
+
+    LoggerContextVO loggerContextRemoteView = remoteEvent
+        .getLoggerContextVO();
+    assertNull(remoteEvent.getCallerData());
+    assertNotNull(loggerContextRemoteView);
+    assertEquals("test", loggerContextRemoteView.getName());
+    Map<String, String> props = loggerContextRemoteView.getPropertyMap();
+    assertEquals("testValue", props.get("testKey"));
+  }
+
+  @Test
+  public void messageWithMDC() throws InterruptedException {
+    fireServer();
+    waitForServerToStart();
+    configureClient();
+
+    Logger root = lc.getLogger(Logger.ROOT_LOGGER_NAME);
+
+    MDC.put(mdcKey, "testValue");
+    root.debug("test msg");
+
+    Thread.sleep(SLEEP_AFTER_LOG);
+    simpleSocketServer.close();
+    simpleSocketServer.join(JOIN_OR_WAIT_TIMEOUT);
+    assertTrue(simpleSocketServer.isClosed());
+    ListAppender<ILoggingEvent> la = getListAppender();
+    assertEquals(1, la.list.size());
+
+    ILoggingEvent remoteEvent = la.list.get(0);
+    Map<String, String> MDCPropertyMap = remoteEvent.getMDCPropertyMap();
+    assertEquals("testValue", MDCPropertyMap.get(mdcKey));
+    assertNull(remoteEvent.getCallerData());
+  }
+
+  // test http://jira.qos.ch/browse/LBCLASSIC-145
+  @Test
+  public void withCallerData() throws InterruptedException {
+    includeCallerData = true;
+    fireServer();
+    waitForServerToStart();
+    configureClient();
+
+    Logger logger = lc.getLogger(Logger.ROOT_LOGGER_NAME);
+    logger.debug("test msg");
+
+    Thread.sleep(SLEEP_AFTER_LOG);
+    simpleSocketServer.close();
+    simpleSocketServer.join(JOIN_OR_WAIT_TIMEOUT);
+    assertTrue(simpleSocketServer.isClosed());
+    ListAppender<ILoggingEvent> la = getListAppender();
+    assertEquals(1, la.list.size());
+
+    ILoggingEvent remoteEvent = la.list.get(0);
+    assertNotNull(remoteEvent.getCallerData());
+  }
+  
+  @Test
+  public void messageWithMarker() throws InterruptedException {
+    fireServer();
+    waitForServerToStart();
+
+    // Thread.sleep(SLEEP_AFTER_SERVER_START);
+    configureClient();
+
+    Logger logger = lc.getLogger(Logger.ROOT_LOGGER_NAME);
+
+    Marker marker = MarkerFactory.getMarker("testMarker");
+    logger.debug(marker, "test msg");
+    Thread.sleep(SLEEP_AFTER_LOG);
+
+    simpleSocketServer.close();
+    simpleSocketServer.join(JOIN_OR_WAIT_TIMEOUT);
+    assertTrue(simpleSocketServer.isClosed());
+    assertEquals(1, la.list.size());
+
+    ILoggingEvent remoteEvent = la.list.get(0);
+    assertEquals("testMarker", remoteEvent.getMarker().getName());
+  }
+
+  @Test
+  public void messageWithUpdatedMDC() throws InterruptedException {
+    fireServer();
+    waitForServerToStart();
+
+    configureClient();
+
+    Logger root = lc.getLogger(Logger.ROOT_LOGGER_NAME);
+
+    MDC.put(mdcKey, "testValue");
+    root.debug("test msg");
+
+    MDC.put(mdcKey, "updatedTestValue");
+    root.debug("test msg 2");
+    Thread.sleep(SLEEP_AFTER_LOG);
+
+    simpleSocketServer.close();
+    simpleSocketServer.join(JOIN_OR_WAIT_TIMEOUT);
+    assertTrue(simpleSocketServer.isClosed());
+    ListAppender<ILoggingEvent> la = getListAppender();
+
+    assertEquals(2, la.list.size());
+
+    // We observe the second logging event. It should provide us with
+    // the updated MDC property.
+    ILoggingEvent remoteEvent = la.list.get(1);
+    Map<String, String> MDCPropertyMap = remoteEvent.getMDCPropertyMap();
+    assertEquals("updatedTestValue", MDCPropertyMap.get(mdcKey));
+  }
+
+  @Test
+  public void lateServerLaunch() throws InterruptedException {
+    socketAppender.setReconnectionDelay(20);
+    configureClient();
+    Logger logger = lc.getLogger(Logger.ROOT_LOGGER_NAME);
+    logger.debug("test msg");
+
+    fireServer();
+    waitForServerToStart();
+    Thread.sleep(SLEEP_AFTER_LOG); // allow time for client and server to
+                                    // connect
+    logger.debug("test msg 2");
+    Thread.sleep(SLEEP_AFTER_LOG);
+
+    simpleSocketServer.close();
+    Thread.sleep(SLEEP_AFTER_LOG);
+    simpleSocketServer.join(JOIN_OR_WAIT_TIMEOUT);
+    StatusPrinter.print(lc);
+    assertTrue(simpleSocketServer.isClosed());
+    assertEquals(1, la.list.size());
+
+    ILoggingEvent remoteEvent = la.list.get(0);
+    assertEquals("test msg 2", remoteEvent.getMessage());
+    assertEquals(Level.DEBUG, remoteEvent.getLevel());
+  }
+
+  private void waitForServerToStart() throws InterruptedException {
+    synchronized (simpleSocketServer) {
+      simpleSocketServer.wait(JOIN_OR_WAIT_TIMEOUT);
+    }
+  }
+
+  private void fireServer() throws InterruptedException {
+    Logger root = serverLC.getLogger("root");
+    Logger socketNodeLogger = serverLC.getLogger(SocketNode.class);
+    socketNodeLogger.setLevel(Level.WARN);
+
+    la.setName(LIST_APPENDER_NAME);
+    la.setContext(serverLC);
+    la.start();
+    root.addAppender(la);
+    simpleSocketServer = new SimpleSocketServer(serverLC, port);
+    simpleSocketServer.start();
+    Thread.yield();
+    Thread.sleep(50);
+  }
+
+  ListAppender<ILoggingEvent> getListAppender() {
+    Logger root = serverLC.getLogger("root");
+    return (ListAppender<ILoggingEvent>) root.getAppender(LIST_APPENDER_NAME);
+  }
+
+  private void configureClient() {
+    lc = new LoggerContext();
+    lc.setName("test");
+    lc.putProperty("testKey", "testValue");
+    Logger root = lc.getLogger(Logger.ROOT_LOGGER_NAME);
+    socketAppender.setContext(lc);
+    socketAppender.setName("socket");
+    socketAppender.setPort(port);
+    socketAppender.setRemoteHost("localhost");
+    socketAppender.setIncludeCallerData(includeCallerData);
+    root.addAppender(socketAppender);
+    socketAppender.start();
+  }
+}
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/SocketMin.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/SocketMin.java
index c297c47..5cbae2e 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/SocketMin.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/SocketMin.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -56,9 +56,7 @@ public class SocketMin {
     try {
       int port = Integer.parseInt(portStr);
       logger.info("Creating socket appender (" + host + "," + port + ").");
-      s = new SocketAppender();
-      s.setRemoteHost(host);
-      s.setPort(port);
+      s = new SocketAppender(host, port);
       s.setName("S");
       root.addAppender(s);
     } catch (java.lang.NumberFormatException e) {
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/SocketReceiverTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/SocketReceiverTest.java
deleted file mode 100644
index 8feac6f..0000000
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/SocketReceiverTest.java
+++ /dev/null
@@ -1,289 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.net;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-import java.io.IOException;
-import java.io.ObjectOutputStream;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.net.UnknownHostException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.TimeUnit;
-
-import javax.net.SocketFactory;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import ch.qos.logback.classic.Level;
-import ch.qos.logback.classic.Logger;
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.net.mock.MockAppender;
-import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.classic.spi.LoggingEvent;
-import ch.qos.logback.classic.spi.LoggingEventVO;
-import ch.qos.logback.core.net.SocketConnector;
-import ch.qos.logback.core.net.server.ServerSocketUtil;
-import ch.qos.logback.core.status.Status;
-
-/**
- * Unit tests for {@link SocketReceiver}.
- *
- * @author Carl Harris
- */
-public class SocketReceiverTest {
-
-  private static final int DELAY = 1000;
-  private static final String TEST_HOST_NAME = "NOT.A.VALID.HOST.NAME";
-
-
-  private ServerSocket serverSocket;
-  private Socket socket;
-  private MockSocketFactory socketFactory = new MockSocketFactory();
-  private MockSocketConnector connector;
-  private MockAppender appender;
-  private LoggerContext lc;
-  private Logger logger;
-  
-  private InstrumentedSocketReceiver receiver = 
-      new InstrumentedSocketReceiver();
-  
-  @Before
-  public void setUp() throws Exception {
-    serverSocket = ServerSocketUtil.createServerSocket();
-    socket = new Socket(serverSocket.getInetAddress(), 
-        serverSocket.getLocalPort());
-    connector = new MockSocketConnector(socket);
-
-    lc = new LoggerContext();
-    lc.reset();
-    receiver.setContext(lc);    
-    appender = new MockAppender();
-    appender.start();
-    logger = lc.getLogger(getClass());
-    logger.addAppender(appender);
-  }
-  
-  @After
-  public void tearDown() throws Exception {
-    receiver.stop();
-    ExecutorService executor = lc.getExecutorService();
-    executor.shutdownNow();
-    assertTrue(executor.awaitTermination(DELAY, TimeUnit.MILLISECONDS));
-    socket.close();
-    serverSocket.close();
-    lc.stop();
-  }
-  
-  @Test
-  public void testStartNoRemoteAddress() throws Exception {
-    receiver.start();
-    assertFalse(receiver.isStarted());
-    int count = lc.getStatusManager().getCount();
-    Status status = lc.getStatusManager().getCopyOfStatusList().get(count - 1);
-    assertTrue(status.getMessage().contains("host"));
-  }
-
-  @Test
-  public void testStartNoPort() throws Exception {
-    receiver.setRemoteHost(TEST_HOST_NAME);
-    receiver.start();
-    assertFalse(receiver.isStarted());
-    int count = lc.getStatusManager().getCount();
-    Status status = lc.getStatusManager().getCopyOfStatusList().get(count - 1);
-    assertTrue(status.getMessage().contains("port"));
-  }
-
-  @Test
-  public void testStartUnknownHost() throws Exception {
-    receiver.setPort(6000);
-    receiver.setRemoteHost(TEST_HOST_NAME);
-    receiver.start();
-    assertFalse(receiver.isStarted());
-    int count = lc.getStatusManager().getCount();
-    Status status = lc.getStatusManager().getCopyOfStatusList().get(count - 1);
-    assertTrue(status.getMessage().contains("unknown host"));
-  }
-  
-  @Test
-  public void testStartStop() throws Exception {
-    receiver.setRemoteHost(InetAddress.getLocalHost().getHostName());
-    receiver.setPort(6000);
-    receiver.setAcceptConnectionTimeout(DELAY / 2);
-    receiver.start();
-    assertTrue(receiver.isStarted());
-    receiver.awaitConnectorCreated(DELAY);
-    receiver.stop();
-    assertFalse(receiver.isStarted());
-  }
-  
-  @Test
-  public void testServerSlowToAcceptConnection() throws Exception {
-    receiver.setRemoteHost(InetAddress.getLocalHost().getHostName());
-    receiver.setPort(6000);
-    receiver.setAcceptConnectionTimeout(DELAY / 4);
-    receiver.start();
-    assertTrue(receiver.awaitConnectorCreated(DELAY / 2));
-    // note that we don't call serverSocket.accept() here
-    // but processPriorToRemoval (in tearDown) should still clean up everything
-  }
-
-  @Test
-  public void testServerDropsConnection() throws Exception {
-    receiver.setRemoteHost(InetAddress.getLocalHost().getHostName());
-    receiver.setPort(6000);
-    receiver.start();
-    assertTrue(receiver.awaitConnectorCreated(DELAY));
-    Socket socket = serverSocket.accept();
-    socket.close();
-  }
-  
-  @Test
-  public void testDispatchEventForEnabledLevel() throws Exception {
-    receiver.setRemoteHost(InetAddress.getLocalHost().getHostName());
-    receiver.setPort(6000);
-    receiver.start();
-    assertTrue(receiver.awaitConnectorCreated(DELAY));
-    Socket socket = serverSocket.accept();
-
-    ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
-    
-    logger.setLevel(Level.DEBUG);
-    ILoggingEvent event = new LoggingEvent(logger.getName(), logger, 
-        Level.DEBUG, "test message", null, new Object[0]);
-
-    LoggingEventVO eventVO = LoggingEventVO.build(event);
-    oos.writeObject(eventVO);
-    oos.flush();
-
-    ILoggingEvent rcvdEvent = appender.awaitAppend(DELAY);
-    assertNotNull(rcvdEvent);
-    assertEquals(event.getLoggerName(), rcvdEvent.getLoggerName());
-    assertEquals(event.getLevel(), rcvdEvent.getLevel());
-    assertEquals(event.getMessage(), rcvdEvent.getMessage());
-  }
-
-  @Test
-  public void testNoDispatchEventForDisabledLevel() throws Exception {
-    receiver.setRemoteHost(InetAddress.getLocalHost().getHostName());
-    receiver.setPort(6000);
-    receiver.start();
-    assertTrue(receiver.awaitConnectorCreated(DELAY));
-    Socket socket = serverSocket.accept();
-
-    ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
-    
-    logger.setLevel(Level.INFO);
-    ILoggingEvent event = new LoggingEvent(logger.getName(), logger, 
-        Level.DEBUG, "test message", null, new Object[0]);
-
-    LoggingEventVO eventVO = LoggingEventVO.build(event);
-    oos.writeObject(eventVO);
-    oos.flush();
-
-    assertNull(appender.awaitAppend(DELAY));
-  }
-
-  /**
-   * A {@link SocketReceiver} with instrumentation for unit testing.
-   */
-  private class InstrumentedSocketReceiver extends SocketReceiver {
-
-    private boolean connectorCreated;
-
-    @Override
-    protected synchronized SocketConnector newConnector(
-        InetAddress address, int port, int initialDelay, int retryDelay) {
-      connectorCreated = true;
-      notifyAll();
-      return connector;
-    }
-
-    @Override
-    protected SocketFactory getSocketFactory() {
-      return socketFactory;
-    }
-
-    public synchronized boolean awaitConnectorCreated(long delay) 
-        throws InterruptedException {
-      while (!connectorCreated) {
-        wait(delay);
-      }
-      return connectorCreated;
-    }
-
-  }
-  
-  /**
-   * A {@link SocketConnector} with instrumentation for unit testing.
-   */
-  private static class MockSocketConnector implements SocketConnector {
-
-    private final Socket socket;
-    
-    public MockSocketConnector(Socket socket) {
-      this.socket = socket;
-    }
-
-    public Socket call() throws InterruptedException {
-      return socket;
-    }
-
-    public void setExceptionHandler(ExceptionHandler exceptionHandler) {
-    }
-
-    public void setSocketFactory(SocketFactory socketFactory) {
-    }
-
-  }
-
-  /**
-   * A no-op {@link SocketFactory} to support unit testing.
-   */
-  private static class MockSocketFactory extends SocketFactory {
-
-    @Override
-    public Socket createSocket(InetAddress address, int port,
-        InetAddress localAddress, int localPort) throws IOException {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Socket createSocket(InetAddress host, int port) throws IOException {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Socket createSocket(String host, int port, InetAddress localHost,
-        int localPort) throws IOException, UnknownHostException {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Socket createSocket(String host, int port) throws IOException,
-        UnknownHostException {
-      throw new UnsupportedOperationException();
-    }
-    
-  }
-  
-}
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/SyslogAppenderTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/SyslogAppenderTest.java
index 34a584c..5395d6d 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/SyslogAppenderTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/SyslogAppenderTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -35,8 +35,6 @@ import ch.qos.logback.core.util.StatusPrinter;
 
 public class SyslogAppenderTest {
 
-  private static final String SYSLOG_PREFIX_REGEX = "<\\d{2}>\\w{3} [\\d ]\\d \\d{2}(:\\d{2}){2} [\\w.-]* ";
-
   LoggerContext lc = new LoggerContext();
   SyslogAppender sa = new SyslogAppender();
   MockSyslogServer mockServer;
@@ -53,7 +51,7 @@ public class SyslogAppenderTest {
   public void tearDown() throws Exception {
   }
 
-  public void setMockServerAndConfigure(int expectedCount, String suffixPattern)
+  public void setMockServerAndConfigure(int expectedCount)
       throws InterruptedException {
     int port = RandomUtil.getRandomServerPort();
 
@@ -66,7 +64,7 @@ public class SyslogAppenderTest {
     sa.setSyslogHost("localhost");
     sa.setFacility("MAIL");
     sa.setPort(port);
-    sa.setSuffixPattern(suffixPattern);
+    sa.setSuffixPattern("[%thread] %logger %msg");
     sa.setStackTracePattern("[%thread] foo "+CoreConstants.TAB);
     sa.start();
     assertTrue(sa.isStarted());
@@ -76,11 +74,6 @@ public class SyslogAppenderTest {
     logger.addAppender(sa);
 
   }
-  
-  public void setMockServerAndConfigure(int expectedCount)
-	      throws InterruptedException {
-	 this.setMockServerAndConfigure(expectedCount, "[%thread] %logger %msg");   
-  }
 
   @Test
   public void basic() throws InterruptedException {
@@ -103,35 +96,11 @@ public class SyslogAppenderTest {
         + (SyslogConstants.LOG_MAIL + SyslogConstants.DEBUG_SEVERITY) + ">";
     assertTrue(msg.startsWith(expected));
 
-    checkRegexMatch(msg, SYSLOG_PREFIX_REGEX + "\\[" + threadName + "\\] " + loggerName + " "
+    String first = "<\\d{2}>\\w{3} \\d{2} \\d{2}(:\\d{2}){2} [\\w.-]* ";
+    checkRegexMatch(msg, first + "\\[" + threadName + "\\] " + loggerName + " "
         + logMsg);
 
   }
-  
-  @Test
-  public void suffixPatternWithTag() throws InterruptedException {
-    setMockServerAndConfigure(1, "test/something [%thread] %logger %msg");
-    String logMsg = "hello";
-    logger.debug(logMsg);
-
-    // wait max 2 seconds for mock server to finish. However, it should
-    // much sooner than that.
-    mockServer.join(8000);
-
-    assertTrue(mockServer.isFinished());
-    assertEquals(1, mockServer.getMessageList().size());
-    String msg = mockServer.getMessageList().get(0);
-
-    String threadName = Thread.currentThread().getName();
-
-    String expected = "<"
-        + (SyslogConstants.LOG_MAIL + SyslogConstants.DEBUG_SEVERITY) + ">";
-    assertTrue(msg.startsWith(expected));
-
-    checkRegexMatch(msg, SYSLOG_PREFIX_REGEX + "test/something \\[" + threadName + "\\] " + loggerName + " "
-            + logMsg);
-
-  }
 
   @Test
   public void tException() throws InterruptedException {
@@ -160,18 +129,15 @@ public class SyslogAppenderTest {
         + (SyslogConstants.LOG_MAIL + SyslogConstants.DEBUG_SEVERITY) + ">";
     assertTrue(msg.startsWith(expected));
 
+    String expectedPrefix = "<\\d{2}>\\w{3} \\d{2} \\d{2}(:\\d{2}){2} [\\w.-]* ";
     String threadName = Thread.currentThread().getName();
-    String regex = SYSLOG_PREFIX_REGEX + "\\[" + threadName + "\\] " + loggerName
+    String regex = expectedPrefix + "\\[" + threadName + "\\] " + loggerName
         + " " + logMsg;
     checkRegexMatch(msg, regex);
 
     msg = mockServer.getMessageList().get(1);
-    assertTrue(msg.contains(ex.getClass().getName()));
-    assertTrue(msg.contains(ex.getMessage()));
-
-    msg = mockServer.getMessageList().get(2);
     assertTrue(msg.startsWith(expected));
-    regex = SYSLOG_PREFIX_REGEX + "\\[" + threadName + "\\] " +  "foo "+CoreConstants.TAB + "at ch\\.qos.*";
+    regex = expectedPrefix + "\\[" + threadName + "\\] " +  "foo "+CoreConstants.TAB + "at ch\\.qos.*";
     checkRegexMatch(msg, regex);
   }
 
@@ -181,8 +147,8 @@ public class SyslogAppenderTest {
   }
 
   @Test
-  public void large() throws Exception {
-    setMockServerAndConfigure(2);
+  public void large() throws InterruptedException {
+    setMockServerAndConfigure(1);
     StringBuilder largeBuf = new StringBuilder();
     for (int i = 0; i < 2 * 1024 * 1024; i++) {
       largeBuf.append('a');
@@ -196,25 +162,16 @@ public class SyslogAppenderTest {
     
     mockServer.join(8000);
     assertTrue(mockServer.isFinished());
- 
-    // both messages received
-    assertEquals(2, mockServer.getMessageList().size());
-
+    
+    // the first message is wasted
+    assertEquals(1, mockServer.getMessageList().size());
+    String msg = mockServer.getMessageList().get(0);
     String expected = "<"
         + (SyslogConstants.LOG_MAIL + SyslogConstants.DEBUG_SEVERITY) + ">";
-    String threadName = Thread.currentThread().getName();
-
-    // large message is truncated
-    final int maxMessageSize = sa.getMaxMessageSize();
-    String largeMsg = mockServer.getMessageList().get(0);
-    assertTrue(largeMsg.startsWith(expected));
-    String largeRegex = SYSLOG_PREFIX_REGEX + "\\[" + threadName + "\\] " + loggerName
-        + " " + "a{" + (maxMessageSize - 2000) + "," + maxMessageSize + "}";
-    checkRegexMatch(largeMsg, largeRegex);
-
-    String msg = mockServer.getMessageList().get(1);
     assertTrue(msg.startsWith(expected));
-    String regex = SYSLOG_PREFIX_REGEX + "\\[" + threadName + "\\] " + loggerName
+    String expectedPrefix = "<\\d{2}>\\w{3} \\d{2} \\d{2}(:\\d{2}){2} [\\w.-]* ";
+    String threadName = Thread.currentThread().getName();
+    String regex = expectedPrefix + "\\[" + threadName + "\\] " + loggerName
         + " " + logMsg;
     checkRegexMatch(msg, regex);
   }
@@ -233,13 +190,4 @@ public class SyslogAppenderTest {
     org.slf4j.Logger logger = LoggerFactory.getLogger(this.getClass());
     logger.info("hello");
   }
-
-  @Test
-  public void unknownHostShouldNotCauseStopToFail() {
-    // See LOGBACK-960
-    sa.setSyslogHost("unknown.host");
-    sa.setFacility("MAIL");
-    sa.start();
-    sa.stop();
-  }
 }
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockAppender.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockAppender.java
deleted file mode 100644
index 145952c..0000000
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockAppender.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.net.mock;
-
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.locks.Condition;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
-
-import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.core.AppenderBase;
-
-/**
- * A mock {@link AppenderBase} with instrumentation for unit testing.
- *
- * @author Carl Harris
- */
-public class MockAppender extends AppenderBase<ILoggingEvent> {
-
-  private final Lock lock = new ReentrantLock();
-  private final Condition appendCondition = lock.newCondition();
-  private final BlockingQueue<ILoggingEvent> events = 
-      new LinkedBlockingQueue<ILoggingEvent>();
-  
-  @Override
-  protected void append(ILoggingEvent eventObject) {
-    lock.lock();
-    try {
-      events.offer(eventObject);
-      appendCondition.signalAll();
-    }
-    finally {
-      lock.unlock();
-    }
-  }
-  
-  public ILoggingEvent awaitAppend(long delay) throws InterruptedException {
-    return events.poll(delay, TimeUnit.MILLISECONDS);
-  }
-
-  public ILoggingEvent getLastEvent() {
-    return events.peek();
-  }
-
-}
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockObjectMessage.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockObjectMessage.java
index 407b8bd..c817ab7 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockObjectMessage.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockObjectMessage.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueue.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueue.java
index 30fc4c4..195610c 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueue.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueue.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueueConnection.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueueConnection.java
index e0047c1..e5b1a2d 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueueConnection.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueueConnection.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueueConnectionFactory.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueueConnectionFactory.java
index 12da63b..87e7b25 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueueConnectionFactory.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueueConnectionFactory.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueueSender.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueueSender.java
index 8e54b05..99ff47a 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueueSender.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueueSender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueueSession.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueueSession.java
index d073fa1..b320929 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueueSession.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueueSession.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockSyslogServer.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockSyslogServer.java
index 788b342..90773de 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockSyslogServer.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockSyslogServer.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -44,7 +44,7 @@ public class MockSyslogServer extends Thread {
       socket = new DatagramSocket(port);
 
       for (int i = 0; i < loopLen; i++) {
-        byte[] buf = new byte[65536];
+        byte[] buf = new byte[2048];
         DatagramPacket packet = new DatagramPacket(buf, buf.length);
         //System.out.println("Waiting for message");
         socket.receive(packet);
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockTopic.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockTopic.java
index 1a7439e..2e1f319 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockTopic.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockTopic.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockTopicConnection.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockTopicConnection.java
index 422a2f0..dfcc284 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockTopicConnection.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockTopicConnection.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockTopicConnectionFactory.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockTopicConnectionFactory.java
index c8edf3d..eb2ac92 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockTopicConnectionFactory.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockTopicConnectionFactory.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockTopicPublisher.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockTopicPublisher.java
index da5363f..3362a57 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockTopicPublisher.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockTopicPublisher.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockTopicSession.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockTopicSession.java
index 898a8b5..2748f29 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockTopicSession.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockTopicSession.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/server/InstrumentedServerSocketReceiver.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/server/InstrumentedServerSocketReceiver.java
deleted file mode 100644
index 64dc1c5..0000000
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/server/InstrumentedServerSocketReceiver.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.net.server;
-
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.util.concurrent.Executor;
-
-import javax.net.ServerSocketFactory;
-
-import ch.qos.logback.classic.net.server.RemoteAppenderClient;
-import ch.qos.logback.classic.net.server.RemoteAppenderServerListener;
-import ch.qos.logback.classic.net.server.ServerSocketReceiver;
-import ch.qos.logback.core.net.server.ServerListener;
-import ch.qos.logback.core.net.server.ServerRunner;
-
-
-/**
- * A {@link ServerSocketReceiver} with instrumentation for unit testing.
- *
- * @author Carl Harris
- */
-public class InstrumentedServerSocketReceiver extends ServerSocketReceiver {
-  
-  private final ServerSocket serverSocket;
-  private final ServerListener<RemoteAppenderClient> listener;
-  private final ServerRunner<RemoteAppenderClient> runner;
-  
-  private ServerListener lastListener;
-  
-  public InstrumentedServerSocketReceiver(ServerSocket serverSocket) {
-    this(serverSocket, new RemoteAppenderServerListener(serverSocket), null);
-  }
-  
-  public InstrumentedServerSocketReceiver(ServerSocket serverSocket,
-      ServerListener<RemoteAppenderClient> listener, 
-      ServerRunner<RemoteAppenderClient> runner) {
-    this.serverSocket = serverSocket;
-    this.listener = listener;
-    this.runner = runner;
-  }
-
-  @Override
-  protected ServerSocketFactory getServerSocketFactory() throws Exception {
-    return new ServerSocketFactory() {
-
-      @Override
-      public ServerSocket createServerSocket(int port) throws IOException {
-        return serverSocket;
-      }
-
-      @Override
-      public ServerSocket createServerSocket(int port, int backlog)
-          throws IOException {
-        return serverSocket;
-      }
-
-      @Override
-      public ServerSocket createServerSocket(int port, int backlog,
-          InetAddress ifAddress) throws IOException {
-        return serverSocket;
-      }        
-    };
-  }
-
-  @Override
-  protected ServerRunner createServerRunner(
-      ServerListener<RemoteAppenderClient> listener,
-      Executor executor) {
-    lastListener = listener;
-    return runner != null ? runner : super.createServerRunner(listener, executor);
-  }
-
-  @Override
-  protected ServerListener<RemoteAppenderClient> createServerListener(
-      ServerSocket socket) {
-    return listener;
-  }
-
-  public ServerListener getLastListener() {
-    return lastListener;
-  }
-
-}
\ No newline at end of file
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/server/MockSSLConfiguration.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/server/MockSSLConfiguration.java
deleted file mode 100644
index 2c39b27..0000000
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/server/MockSSLConfiguration.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.net.server;
-
-import java.security.KeyManagementException;
-import java.security.KeyStoreException;
-import java.security.NoSuchAlgorithmException;
-import java.security.NoSuchProviderException;
-import java.security.UnrecoverableKeyException;
-import java.security.cert.CertificateException;
-
-import javax.net.ssl.SSLContext;
-
-import ch.qos.logback.core.net.ssl.SSLConfiguration;
-import ch.qos.logback.core.spi.ContextAware;
-
-/**
- * A mock {@link SSLConfiguration} with instrumentation for unit testing.
- *
- * @author Carl Harris
- */
-class MockSSLConfiguration extends SSLConfiguration {
-
-  private boolean contextCreated;
-  
-  @Override
-  public SSLContext createContext(ContextAware context)
-      throws NoSuchProviderException, NoSuchAlgorithmException,
-      KeyManagementException, UnrecoverableKeyException, KeyStoreException,
-      CertificateException {
-    contextCreated = true;
-    return super.createContext(context);
-  }
-
-  public boolean isContextCreated() {
-    return contextCreated;
-  }
-
-}
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/server/MockSSLParametersConfiguration.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/server/MockSSLParametersConfiguration.java
deleted file mode 100644
index fe6ba5e..0000000
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/server/MockSSLParametersConfiguration.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.net.server;
-
-import ch.qos.logback.core.Context;
-import ch.qos.logback.core.net.ssl.SSLParametersConfiguration;
-
-/**
- * A mock {@link SSLParametersConfiguration} with instrumentation for
- * unit testing.
- *
- * @author Carl Harris
- */
-class MockSSLParametersConfiguration extends SSLParametersConfiguration {
-
-  private boolean contextInjected;
-  
-  @Override
-  public void setContext(Context context) {
-    contextInjected = true;
-    super.setContext(context);
-  }
-
-  public boolean isContextInjected() {
-    return contextInjected;
-  }
-  
-}
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/server/RemoteAppenderStreamClientTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/server/RemoteAppenderStreamClientTest.java
deleted file mode 100644
index 9276ae0..0000000
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/server/RemoteAppenderStreamClientTest.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.net.server;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.ObjectOutputStream;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.slf4j.LoggerFactory;
-
-import ch.qos.logback.classic.Level;
-import ch.qos.logback.classic.Logger;
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.net.mock.MockAppender;
-import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.classic.spi.LoggingEvent;
-import ch.qos.logback.classic.spi.LoggingEventVO;
-
-/**
- * Unit tests for {@link RemoteAppenderStreamClient}.
- *
- * @author Carl Harris
- */
-public class RemoteAppenderStreamClientTest {
-
-  private MockAppender appender;
-  private Logger logger;
-  private LoggingEvent event;
-  private RemoteAppenderStreamClient client;
-
-  @Before
-  public void setUp() throws Exception {
-    LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
-    
-    appender = new MockAppender();
-    appender.start();
-   
-    logger = lc.getLogger(getClass());
-    logger.addAppender(appender);
-
-    event = new LoggingEvent(logger.getName(), logger, 
-        Level.DEBUG, "test message", null, new Object[0]);
-    
-    LoggingEventVO eventVO = LoggingEventVO.build(event);
-    
-    ByteArrayOutputStream bos = new ByteArrayOutputStream();
-    ObjectOutputStream oos = new ObjectOutputStream(bos);
-    oos.writeObject(eventVO);
-    oos.close();
-   
-    ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
-    client = new RemoteAppenderStreamClient("some client ID", bis);
-    client.setLoggerContext(lc);
-  }
-  
-  @Test
-  public void testWithEnabledLevel() throws Exception {
-    logger.setLevel(Level.DEBUG);
-    client.run();
-    client.close();
-    
-    ILoggingEvent rcvdEvent = appender.getLastEvent();
-    assertEquals(event.getLoggerName(), rcvdEvent.getLoggerName());
-    assertEquals(event.getLevel(), rcvdEvent.getLevel());
-    assertEquals(event.getMessage(), rcvdEvent.getMessage());
-  }
-
-  @Test
-  public void testWithDisabledLevel() throws Exception {
-    logger.setLevel(Level.INFO);
-    client.run();
-    client.close();
-    assertNull(appender.getLastEvent());
-  }
-
-}
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/server/SSLServerSocketReceiverTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/server/SSLServerSocketReceiverTest.java
deleted file mode 100644
index 0ab1c63..0000000
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/server/SSLServerSocketReceiverTest.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.net.server;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import javax.net.ServerSocketFactory;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import ch.qos.logback.core.net.mock.MockContext;
-
-/**
- * Unit tests for {@link SSLServerSocketReceiver}.
- *
- * @author Carl Harris
- */
-public class SSLServerSocketReceiverTest {
-
-  private MockContext context = new MockContext();
-  
-  private MockSSLConfiguration ssl = new MockSSLConfiguration();
-  
-  private MockSSLParametersConfiguration parameters = 
-      new MockSSLParametersConfiguration();
-  
-  private SSLServerSocketReceiver receiver = new SSLServerSocketReceiver();
-  
-  @Before
-  public void setUp() throws Exception {
-    receiver.setContext(context);
-    receiver.setSsl(ssl);
-    ssl.setParameters(parameters);
-  }
-  
-  @Test
-  public void testGetServerSocketFactory() throws Exception {
-    ServerSocketFactory socketFactory = receiver.getServerSocketFactory();
-    assertNotNull(socketFactory);
-    assertTrue(ssl.isContextCreated());
-    assertTrue(parameters.isContextInjected());
-  }
-
-}
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/server/ServerSocketReceiverFunctionalTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/server/ServerSocketReceiverFunctionalTest.java
deleted file mode 100644
index b3bc5dd..0000000
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/server/ServerSocketReceiverFunctionalTest.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.net.server;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.io.ObjectOutputStream;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.TimeUnit;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import ch.qos.logback.classic.Level;
-import ch.qos.logback.classic.Logger;
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.net.mock.MockAppender;
-import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.classic.spi.LoggingEvent;
-import ch.qos.logback.classic.spi.LoggingEventVO;
-import ch.qos.logback.core.net.server.ServerSocketUtil;
-
-/**
- * A functional test for {@link ServerSocketReceiver}.
- * <p>
- * In this test we create a SocketServer, connect to it over the local
- * network interface, and validate that it receives messages and delivers
- * them to its appender.
- */
-public class ServerSocketReceiverFunctionalTest {
-
-  private static final int EVENT_COUNT = 10;
-  private static final int SHUTDOWN_DELAY = 10000;
-  
-  private MockAppender appender;
-  private Logger logger;
-  private ServerSocket serverSocket;
-  private InstrumentedServerSocketReceiver receiver;
-  private LoggerContext lc;
-  
-  @Before
-  public void setUp() throws Exception {
-    lc = new LoggerContext();
-    
-    appender = new MockAppender();
-    appender.start();
-   
-    logger = lc.getLogger(getClass());
-    logger.addAppender(appender);
-
-    serverSocket = ServerSocketUtil.createServerSocket();
-    
-    receiver = new InstrumentedServerSocketReceiver(serverSocket);
-        
-    receiver.setContext(lc);
-    receiver.start();
-  }
-  
-  @After
-  public void tearDown() throws Exception {
-    receiver.stop();
-    ExecutorService executor = lc.getExecutorService();
-    executor.shutdownNow();
-    executor.awaitTermination(SHUTDOWN_DELAY, TimeUnit.MILLISECONDS);
-    assertTrue(executor.isTerminated());
-  }
-  
-  @Test
-  public void testLogEventFromClient() throws Exception {
-    ILoggingEvent event = new LoggingEvent(logger.getName(), logger, 
-        Level.DEBUG, "test message", null, new Object[0]);
-    Socket socket = new Socket(InetAddress.getLocalHost(), 
-        serverSocket.getLocalPort());
-    
-    try {      
-      LoggingEventVO eventVO = LoggingEventVO.build(event);
-      
-      ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
-      for (int i = 0; i < EVENT_COUNT; i++) {
-        oos.writeObject(eventVO);
-      }
-
-      oos.writeObject(eventVO);
-      oos.flush();
-    }
-    finally {
-      socket.close();
-    }
-    
-    ILoggingEvent rcvdEvent = appender.awaitAppend(SHUTDOWN_DELAY);
-    assertNotNull(rcvdEvent);
-    assertEquals(event.getLoggerName(), rcvdEvent.getLoggerName());
-    assertEquals(event.getLevel(), rcvdEvent.getLevel());
-    assertEquals(event.getMessage(), rcvdEvent.getMessage());
-  }
-
-}
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/server/ServerSocketReceiverTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/server/ServerSocketReceiverTest.java
deleted file mode 100644
index f4d4ceb..0000000
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/server/ServerSocketReceiverTest.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.net.server;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-
-import java.io.IOException;
-import java.net.ServerSocket;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import ch.qos.logback.core.net.mock.MockContext;
-import ch.qos.logback.core.net.server.MockServerListener;
-import ch.qos.logback.core.net.server.MockServerRunner;
-import ch.qos.logback.core.net.server.ServerSocketUtil;
-import ch.qos.logback.core.status.ErrorStatus;
-import ch.qos.logback.core.status.Status;
-
-/**
- * Unit tests for {@link ServerSocketReceiver}.
- *
- * @author Carl Harris
- */
-public class ServerSocketReceiverTest {
-
-  private MockContext context = new MockContext();
-  
-  private MockServerRunner<RemoteAppenderClient> runner = 
-      new MockServerRunner<RemoteAppenderClient>();
-  
-  private MockServerListener<RemoteAppenderClient> listener = 
-      new MockServerListener<RemoteAppenderClient>();
-  
-  private ServerSocket serverSocket;
-  private InstrumentedServerSocketReceiver receiver;
-  
-  @Before
-  public void setUp() throws Exception {
-    serverSocket = ServerSocketUtil.createServerSocket();
-    receiver = new InstrumentedServerSocketReceiver(serverSocket, listener, runner);
-    receiver.setContext(context);
-  }
-  
-  @After
-  public void tearDown() throws Exception {
-    serverSocket.close();
-  }
-  
-  @Test
-  public void testStartStop() throws Exception {
-    receiver.start();
-    assertTrue(runner.isContextInjected());
-    assertTrue(runner.isRunning());
-    assertSame(listener, receiver.getLastListener());
-    
-    receiver.stop();
-    assertFalse(runner.isRunning());
-  }
-
-  @Test
-  public void testStartWhenAlreadyStarted() throws Exception {
-    receiver.start();
-    receiver.start();
-    assertEquals(1, runner.getStartCount());
-  }
-
-  @Test
-  public void testStopThrowsException() throws Exception {
-    receiver.start();
-    assertTrue(receiver.isStarted());
-    IOException ex = new IOException("test exception");
-    runner.setStopException(ex);
-    receiver.stop();
-    
-    Status status = context.getLastStatus();
-    assertNotNull(status);    
-    assertTrue(status instanceof ErrorStatus);
-    assertTrue(status.getMessage().contains(ex.getMessage()));
-    assertSame(ex, status.getThrowable());
-  }
-
-  @Test
-  public void testStopWhenNotStarted() throws Exception {
-    receiver.stop();
-    assertEquals(0, runner.getStartCount());
-  }
-
-}
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/Builder.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/Builder.java
index b07038b..013861f 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/Builder.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/Builder.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/LoggingEventBuilderInContext.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/LoggingEventBuilderInContext.java
index df194d8..d93f3b4 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/LoggingEventBuilderInContext.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/LoggingEventBuilderInContext.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2012, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -11,6 +11,7 @@
  * under the terms of the GNU Lesser General Public License version 2.1
  * as published by the Free Software Foundation.
  */
+
 package ch.qos.logback.classic.net.testObjectBuilders;
 
 import ch.qos.logback.classic.Level;
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/LoggingEventWithParametersBuilder.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/LoggingEventWithParametersBuilder.java
index 2161c36..2b3c859 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/LoggingEventWithParametersBuilder.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/LoggingEventWithParametersBuilder.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2012, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -22,8 +22,8 @@ public class LoggingEventWithParametersBuilder implements Builder<LoggingEvent>
 
   final String MSG = "aaaaabbbbbcccc {} cdddddaaaaabbbbbcccccdddddaaaa {}";
 
-  LoggerContext loggerContext = new LoggerContext();
-  private Logger logger = loggerContext.getLogger(Logger.ROOT_LOGGER_NAME);
+  private Logger logger = new LoggerContext()
+      .getLogger(Logger.ROOT_LOGGER_NAME);
 
   public LoggingEvent build(int i) {
 
@@ -42,7 +42,7 @@ public class LoggingEventWithParametersBuilder implements Builder<LoggingEvent>
     le.getFormattedMessage();
     le.setLevel(Level.DEBUG);
     le.setLoggerName(logger.getName());
-    le.setLoggerContextRemoteView(loggerContext.getLoggerContextRemoteView());
+    le.setLoggerContextRemoteView(logger.getLoggerRemoteView().getLoggerContextView());
     le.setThreadName("threadName");
     return le;
   }
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/MinimalSerBuilder.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/MinimalSerBuilder.java
index 04bffb8..9ddb142 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/MinimalSerBuilder.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/MinimalSerBuilder.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/TrivialLoggingEventBuilder.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/TrivialLoggingEventBuilder.java
index 08c7694..72cffc8 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/TrivialLoggingEventBuilder.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/TrivialLoggingEventBuilder.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -20,16 +20,15 @@ import ch.qos.logback.classic.spi.LoggingEvent;
 
 public class TrivialLoggingEventBuilder implements Builder {
 
-  LoggerContext loggerContext = new LoggerContext();
-
-  private Logger logger = loggerContext.getLogger(Logger.ROOT_LOGGER_NAME);
+  private Logger logger = new LoggerContext()
+      .getLogger(Logger.ROOT_LOGGER_NAME);
 
   public Object build(int i) {
     LoggingEvent le = new LoggingEvent();
     le.setTimeStamp(System.currentTimeMillis());
     le.setLevel(Level.DEBUG);
     le.setLoggerName(logger.getName());
-    le.setLoggerContextRemoteView(loggerContext.getLoggerContextRemoteView());
+    le.setLoggerContextRemoteView(logger.getLoggerRemoteView().getLoggerContextView());
     le.setMessage(MSG_PREFIX);
     le.setThreadName("threadName");
     return le;
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/TrivialLoggingEventVOBuilder.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/TrivialLoggingEventVOBuilder.java
index 5d7901c..b6209c3 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/TrivialLoggingEventVOBuilder.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/testObjectBuilders/TrivialLoggingEventVOBuilder.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/pattern/ConverterTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/pattern/ConverterTest.java
index e34f4f8..587cff7 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/pattern/ConverterTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/pattern/ConverterTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/pattern/ExtendedThrowableProxyConverterTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/pattern/ExtendedThrowableProxyConverterTest.java
index bf5ed27..b4a1211 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/pattern/ExtendedThrowableProxyConverterTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/pattern/ExtendedThrowableProxyConverterTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -65,7 +65,7 @@ public class ExtendedThrowableProxyConverterTest {
     String res = pl.doLayout(e);
 
     // make sure that at least some package data was output
-    Pattern p = Pattern.compile("\\s*at .*?\\[.*?\\]");
+    Pattern p = Pattern.compile(" \\[junit.*\\]");
     Matcher m = p.matcher(res);
     int i = 0;
     while(m.find()) {
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/pattern/MDCConverterTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/pattern/MDCConverterTest.java
index 6326005..4c2cc59 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/pattern/MDCConverterTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/pattern/MDCConverterTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -14,9 +14,7 @@
 package ch.qos.logback.classic.pattern;
 
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
 
-import ch.qos.logback.core.testUtil.RandomUtil;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -33,14 +31,12 @@ public class MDCConverterTest {
 
   LoggerContext lc;
   MDCConverter converter;
-  int diff = RandomUtil.getPositiveInt();
 
   @Before
   public void setUp() throws Exception {
     lc = new LoggerContext();
     converter = new MDCConverter();
     converter.start();
-    MDC.clear();
   }
 
   @After
@@ -48,28 +44,29 @@ public class MDCConverterTest {
     lc = null;
     converter.stop();
     converter = null;
-    MDC.clear();
   }
 
   @Test
-  public void testConvertWithOneEntry() {
-    String k = "MDCConverterTest_k"+diff;
-    String v = "MDCConverterTest_v"+diff;
-
-    MDC.put(k, v);
+  public void testConverWithOneEntry() {
+    MDC.clear();
+    MDC.put("testKey", "testValue");
     ILoggingEvent le = createLoggingEvent();
     String result = converter.convert(le);
-    assertEquals(k+"="+v, result);
+    assertEquals("testKey=testValue", result);
   }
 
   @Test
-  public void testConvertWithMultipleEntries() {
+  public void testConverWithMultipleEntries() {
+    MDC.clear();
     MDC.put("testKey", "testValue");
     MDC.put("testKey2", "testValue2");
     ILoggingEvent le = createLoggingEvent();
     String result = converter.convert(le);
-    boolean isConform = result.matches("testKey2?=testValue2?, testKey2?=testValue2?");
-    assertTrue(result + " is not conform", isConform);
+    if (SystemInfo.getJavaVendor().contains("IBM")) {
+      assertEquals("testKey2=testValue2, testKey=testValue", result);
+    } else {
+      assertEquals("testKey=testValue, testKey2=testValue2", result);
+    }
   }
 
   private ILoggingEvent createLoggingEvent() {
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/pattern/MarkerConverterTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/pattern/MarkerConverterTest.java
index e4e9891..1a7a98a 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/pattern/MarkerConverterTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/pattern/MarkerConverterTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/pattern/PackageTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/pattern/PackageTest.java
index 55dd9af..4edbde2 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/pattern/PackageTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/pattern/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/pattern/RootCauseFirstThrowableProxyConverterTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/pattern/RootCauseFirstThrowableProxyConverterTest.java
index e99cf13..af4490c 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/pattern/RootCauseFirstThrowableProxyConverterTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/pattern/RootCauseFirstThrowableProxyConverterTest.java
@@ -1,16 +1,3 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
 package ch.qos.logback.classic.pattern;
 
 import ch.qos.logback.classic.Level;
@@ -19,7 +6,6 @@ import ch.qos.logback.classic.LoggerContext;
 import ch.qos.logback.classic.PatternLayout;
 import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.spi.LoggingEvent;
-
 import org.junit.Before;
 import org.junit.Test;
 
@@ -69,7 +55,7 @@ public class RootCauseFirstThrowableProxyConverterTest {
 
     //then
     // make sure that at least some package data was output
-    Pattern p = Pattern.compile("\\s*at .*?\\[.*?\\]");
+    Pattern p = Pattern.compile(" \\[junit.*\\]");
     Matcher m = p.matcher(result);
     int i = 0;
     while(m.find()) {
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/pattern/SyslogStartConverterTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/pattern/SyslogStartConverterTest.java
deleted file mode 100644
index 64d749a..0000000
--- a/logback-classic/src/test/java/ch/qos/logback/classic/pattern/SyslogStartConverterTest.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2014, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.pattern;
-
-import ch.qos.logback.classic.Level;
-import ch.qos.logback.classic.Logger;
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.spi.LoggingEvent;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.Locale;
-
-import static org.junit.Assert.assertEquals;
-
-public class SyslogStartConverterTest {
-
-  private LoggerContext lc;
-  private SyslogStartConverter converter;
-  private final String HOSTNAME = findHostname();
-  private final Calendar calendar = Calendar.getInstance(Locale.US);
-
-  @Before
-  public void setUp() throws Exception {
-    lc = new LoggerContext();
-    converter = new SyslogStartConverter();
-    converter.setOptionList(Arrays.asList("local7"));
-    converter.start();
-  }
-
-  @After
-  public void tearDown() throws Exception {
-    lc = null;
-    converter.stop();
-    converter = null;
-  }
-
-  @Test
-  public void datesLessThanTen() {
-    // RFC 3164, section 4.1.2:
-    // If the day of the month is less than 10, then it MUST be represented as
-    // a space and then the number.  For example, the 7th day of August would be
-    // represented as "Aug  7", with two spaces between the "g" and the "7".
-    LoggingEvent le = createLoggingEvent();
-    calendar.set(2012, Calendar.AUGUST, 7, 13, 15, 0);
-    le.setTimeStamp(calendar.getTimeInMillis());
-    assertEquals("<191>Aug  7 13:15:00 " + HOSTNAME + " ", converter.convert(le));
-  }
-
-  @Test
-  public void datesGreaterThanTen() {
-    LoggingEvent le = createLoggingEvent();
-    calendar.set(2012, Calendar.OCTOBER, 11, 22, 14, 15);
-    le.setTimeStamp(calendar.getTimeInMillis());
-    assertEquals("<191>Oct 11 22:14:15 " + HOSTNAME + " ", converter.convert(le));
-  }
-
-  @Test
-  public void multipleConversions() {
-    LoggingEvent le = createLoggingEvent();
-    calendar.set(2012, Calendar.OCTOBER, 11, 22, 14, 15);
-    le.setTimeStamp(calendar.getTimeInMillis());
-    assertEquals("<191>Oct 11 22:14:15 " + HOSTNAME + " ", converter.convert(le));
-    assertEquals("<191>Oct 11 22:14:15 " + HOSTNAME + " ", converter.convert(le));
-
-    calendar.set(2012, Calendar.OCTOBER, 11, 22, 14, 16);
-    le.setTimeStamp(calendar.getTimeInMillis());
-    assertEquals("<191>Oct 11 22:14:16 " + HOSTNAME + " ", converter.convert(le));
-  }
-
-  @Test
-  public void ignoreDefaultLocale() {
-    Locale originalDefaultLocale = Locale.getDefault();
-    Locale.setDefault(Locale.TRADITIONAL_CHINESE);
-
-    try {
-      converter.start();
-
-      LoggingEvent le = createLoggingEvent();
-      calendar.set(2012, Calendar.OCTOBER, 11, 22, 14, 15);
-      le.setTimeStamp(calendar.getTimeInMillis());
-      String result = converter.convert(le);
-      assertEquals("<191>Oct 11 22:14:15 " + HOSTNAME + " ", result);
-    } finally {
-      Locale.setDefault(originalDefaultLocale);
-    }
-  }
-
-  @Test
-  @Ignore
-  public void hostnameShouldNotIncludeDomain() throws Exception {
-    // RFC 3164, section 4.1.2:
-    // The Domain Name MUST NOT be included in the HOSTNAME field.
-    String host = HOSTNAME;
-    final int firstPeriod = host.indexOf(".");
-    if (firstPeriod != -1) {
-      host = host.substring(0, firstPeriod);
-    }
-    LoggingEvent le = createLoggingEvent();
-    calendar.set(2012, Calendar.OCTOBER, 11, 22, 14, 15);
-    le.setTimeStamp(calendar.getTimeInMillis());
-    assertEquals("<191>Oct 11 22:14:15 " + host + " ", converter.convert(le));
-  }
-
-  private LoggingEvent createLoggingEvent() {
-    return new LoggingEvent(this.getClass().getName(), lc
-        .getLogger(Logger.ROOT_LOGGER_NAME), Level.DEBUG, "test message", null,
-        null);
-  }
-
-  private static String findHostname() {
-    try {
-      return InetAddress.getLocalHost().getHostName();
-    } catch (UnknownHostException e) {
-      return "UNKNOWN_LOCALHOST";
-    }
-  }
-}
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/pattern/TargetLengthBasedClassNameAbbreviatorTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/pattern/TargetLengthBasedClassNameAbbreviatorTest.java
index 841a305..1f01aca 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/pattern/TargetLengthBasedClassNameAbbreviatorTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/pattern/TargetLengthBasedClassNameAbbreviatorTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/pattern/ThrowableProxyConverterTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/pattern/ThrowableProxyConverterTest.java
index 10b1031..e095d27 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/pattern/ThrowableProxyConverterTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/pattern/ThrowableProxyConverterTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,13 +13,10 @@
  */
 package ch.qos.logback.classic.pattern;
 
-import java.io.BufferedReader;
+import static org.junit.Assert.assertEquals;
+
 import java.io.PrintWriter;
-import java.io.StringReader;
 import java.io.StringWriter;
-import java.lang.reflect.InvocationTargetException;
-import java.util.Arrays;
-import java.util.List;
 
 import org.junit.After;
 import org.junit.Before;
@@ -32,10 +29,6 @@ import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.spi.LoggingEvent;
 import ch.qos.logback.classic.util.TeztHelper;
 
-import static ch.qos.logback.classic.util.TeztHelper.addSuppressed;
-import static org.junit.Assert.*;
-import static org.junit.Assume.assumeTrue;
-
 public class ThrowableProxyConverterTest {
 
   LoggerContext lc = new LoggerContext();
@@ -60,57 +53,6 @@ public class ThrowableProxyConverterTest {
   }
 
   @Test
-  public void suppressed() throws InvocationTargetException, IllegalAccessException
-  {
-    assumeTrue(TeztHelper.suppressedSupported()); // only execute on Java 7, would work anyway but doesn't make sense.
-    Exception ex = null;
-    try {
-      someMethod();
-    } catch (Exception e) {
-      Exception fooException = new Exception("Foo");
-      Exception barException = new Exception("Bar");
-      addSuppressed(e, fooException);
-      addSuppressed(e, barException);
-      ex = e;
-    }
-    verify(ex);
-  }
-
-  @Test
-  public void suppressedWithCause() throws InvocationTargetException, IllegalAccessException
-  {
-    assumeTrue(TeztHelper.suppressedSupported()); // only execute on Java 7, would work anyway but doesn't make sense.
-    Exception ex = null;
-    try {
-      someMethod();
-    } catch (Exception e) {
-      ex=new Exception("Wrapper", e);
-      Exception fooException = new Exception("Foo");
-      Exception barException = new Exception("Bar");
-      addSuppressed(ex, fooException);
-      addSuppressed(e, barException);
-    }
-    verify(ex);
-  }
-
-  @Test
-  public void suppressedWithSuppressed() throws Exception
-  {
-    assumeTrue(TeztHelper.suppressedSupported()); // only execute on Java 7, would work anyway but doesn't make sense.
-    Exception ex = null;
-    try {
-      someMethod();
-    } catch (Exception e) {
-      ex=new Exception("Wrapper", e);
-      Exception fooException = new Exception("Foo");
-      Exception barException = new Exception("Bar");
-      addSuppressed(barException, fooException);
-      addSuppressed(e, barException);
-    }
-    verify(ex);
-  }
-
-  @Test
   public void smoke() {
     Exception t = new Exception("smoke");
     verify(t);
@@ -122,46 +64,6 @@ public class ThrowableProxyConverterTest {
     verify(t);
   }
 
-  @Test
-  public void withArgumentOfOne() throws Exception {
-    final Throwable t = TeztHelper.makeNestedException(0);
-    t.printStackTrace(pw);
-    final ILoggingEvent le = createLoggingEvent(t);
-
-    final List<String> optionList = Arrays.asList("1");
-    tpc.setOptionList(optionList);
-    tpc.start();
-
-    final String result = tpc.convert(le);
-
-    final BufferedReader reader = new BufferedReader(new StringReader(result));
-    assertTrue(reader.readLine().contains(t.getMessage()));
-    assertNotNull(reader.readLine());
-    assertNull("Unexpected line in stack trace", reader.readLine());
-  }
-
-  @Test
-  public void withShortArgument() throws Exception {
-    final Throwable t = TeztHelper.makeNestedException(0);
-    t.printStackTrace(pw);
-    final ILoggingEvent le = createLoggingEvent(t);
-
-    final List<String> options = Arrays.asList("short");
-    tpc.setOptionList(options);
-    tpc.start();
-
-    final String result = tpc.convert(le);
-
-    final BufferedReader reader = new BufferedReader(new StringReader(result));
-    assertTrue(reader.readLine().contains(t.getMessage()));
-    assertNotNull(reader.readLine());
-    assertNull("Unexpected line in stack trace", reader.readLine());
-  }
-
-  void someMethod() throws Exception {
-    throw new Exception("someMethod");
-  }
-
   void verify(Throwable t) {
     t.printStackTrace(pw);
 
@@ -171,4 +73,6 @@ public class ThrowableProxyConverterTest {
     result = result.replace("common frames omitted", "more");
     assertEquals(sw.toString(), result);
   }
+
+
 }
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/rolling/PackageTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/rolling/PackageTest.java
index 85adfab..3f7ec91 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/rolling/PackageTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/rolling/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/rolling/TimeBasedRollingWithConfigFileTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/rolling/TimeBasedRollingWithConfigFileTest.java
index 79a2882..40589be 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/rolling/TimeBasedRollingWithConfigFileTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/rolling/TimeBasedRollingWithConfigFileTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -38,7 +38,6 @@ public class TimeBasedRollingWithConfigFileTest extends
         ScaffoldingForRollingTests {
 
   LoggerContext lc = new LoggerContext();
-  StatusChecker statusChecker = new StatusChecker(lc);
   Logger logger = lc.getLogger(this.getClass());
   int fileSize = 0;
   int fileIndexCounter = -1;
@@ -70,7 +69,9 @@ public class TimeBasedRollingWithConfigFileTest extends
     lc.putProperty("testId", testId);
     loadConfig(ClassicTestConstants.JORAN_INPUT_PREFIX + "rolling/" + testId
             + ".xml");
-    statusChecker.assertIsErrorFree();
+    StatusChecker sc = new StatusChecker(lc);
+    StatusPrinter.print(lc  );
+    assertTrue(sc.isErrorFree(0));
 
     Logger root = lc.getLogger(Logger.ROOT_LOGGER_NAME);
 
@@ -117,7 +118,8 @@ public class TimeBasedRollingWithConfigFileTest extends
     RollingFileAppender<ILoggingEvent> rfa = (RollingFileAppender<ILoggingEvent>) root
             .getAppender("ROLLING");
 
-    statusChecker.assertIsErrorFree();
+    StatusChecker sc = new StatusChecker(lc);
+    assertTrue(sc.isErrorFree(0));
 
     TimeBasedRollingPolicy tprp = (TimeBasedRollingPolicy<ILoggingEvent>) rfa
             .getTriggeringPolicy();
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/rolling/UniqueFileTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/rolling/UniqueFileTest.java
index e2a1d42..81bcacf 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/rolling/UniqueFileTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/rolling/UniqueFileTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -16,7 +16,6 @@ package ch.qos.logback.classic.rolling;
 import static org.junit.Assert.assertTrue;
 
 import ch.qos.logback.core.util.CachingDateFormatter;
-import ch.qos.logback.core.util.StatusPrinter;
 import org.junit.Test;
 
 import ch.qos.logback.classic.ClassicTestConstants;
@@ -38,7 +37,6 @@ import ch.qos.logback.core.util.CoreTestConstants;
 public class UniqueFileTest {
 
   LoggerContext lc = new LoggerContext();
-  StatusChecker sc = new StatusChecker(lc);
   Logger logger = lc.getLogger(this.getClass());
 
 
@@ -53,8 +51,9 @@ public class UniqueFileTest {
     loadConfig(ClassicTestConstants.JORAN_INPUT_PREFIX + "unique.xml");
     CachingDateFormatter sdf = new CachingDateFormatter("yyyyMMdd'T'HHmmss");
     String timestamp = sdf.format(System.currentTimeMillis());
-
-    sc.assertIsErrorFree();
+    
+    StatusChecker sc = new StatusChecker(lc);
+    assertTrue(sc.isErrorFree(0));
 
     Logger root = lc.getLogger(Logger.ROOT_LOGGER_NAME);
     root.info("hello");
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/selector/ContextDetachingSCLTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/selector/ContextDetachingSCLTest.java
index 8c6c0f1..4aedaff 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/selector/ContextDetachingSCLTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/selector/ContextDetachingSCLTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/selector/ContextJNDISelectorTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/selector/ContextJNDISelectorTest.java
index 4f4f7fd..718b187 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/selector/ContextJNDISelectorTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/selector/ContextJNDISelectorTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/selector/PackageTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/selector/PackageTest.java
index a1e1962..bc789b8 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/selector/PackageTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/selector/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/sift/MDCBasedDiscriminatorTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/sift/MDCBasedDiscriminatorTest.java
index ff92277..98f2887 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/sift/MDCBasedDiscriminatorTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/sift/MDCBasedDiscriminatorTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -42,8 +42,8 @@ public class MDCBasedDiscriminatorTest {
   Logger logger = context.getLogger(this.getClass());
 
   int diff = RandomUtil.getPositiveInt();
-  String key = "MDCBasedDiscriminatorTest_key" + diff;
-  String value = "MDCBasedDiscriminatorTest_val" + diff;
+  String key = "k" + diff;
+  String value = "val" + diff;
   LoggingEvent event;
 
   @Before
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/sift/PackageTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/sift/PackageTest.java
index d530188..7a2cfad 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/sift/PackageTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/sift/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/sift/SiftingAppenderTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/sift/SiftingAppenderTest.java
index e7ee029..e0b4619 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/sift/SiftingAppenderTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/sift/SiftingAppenderTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,29 +13,31 @@
  */
 package ch.qos.logback.classic.sift;
 
-import ch.qos.logback.classic.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.List;
+
+import org.junit.Test;
+import org.slf4j.MDC;
+
+import ch.qos.logback.classic.ClassicTestConstants;
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.Logger;
+import ch.qos.logback.classic.LoggerContext;
 import ch.qos.logback.classic.joran.JoranConfigurator;
 import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.spi.LoggingEvent;
-import ch.qos.logback.core.Appender;
 import ch.qos.logback.core.helpers.NOPAppender;
 import ch.qos.logback.core.joran.spi.JoranException;
 import ch.qos.logback.core.read.ListAppender;
 import ch.qos.logback.core.sift.AppenderTracker;
-import ch.qos.logback.core.spi.AbstractComponentTracker;
-import ch.qos.logback.core.spi.ComponentTracker;
 import ch.qos.logback.core.status.ErrorStatus;
 import ch.qos.logback.core.status.StatusChecker;
-import ch.qos.logback.core.testUtil.RandomUtil;
 import ch.qos.logback.core.testUtil.StringListAppender;
 import ch.qos.logback.core.util.StatusPrinter;
-import org.junit.Test;
-import org.slf4j.MDC;
-
-import java.util.List;
-
-import static org.junit.Assert.*;
-import static org.junit.Assert.assertEquals;
 
 public class SiftingAppenderTest {
 
@@ -44,10 +46,8 @@ public class SiftingAppenderTest {
   LoggerContext loggerContext = new LoggerContext();
   Logger logger = loggerContext.getLogger(this.getClass().getName());
   Logger root = loggerContext.getLogger(Logger.ROOT_LOGGER_NAME);
-  StatusChecker statusChecker = new StatusChecker(loggerContext);
-  int diff = RandomUtil.getPositiveInt();
-  int now = 0;
-
+  StatusChecker sc = new StatusChecker(loggerContext);
+  
   protected void configure(String file) throws JoranException {
     JoranConfigurator jc = new JoranConfigurator();
     jc.setContext(loggerContext);
@@ -66,19 +66,16 @@ public class SiftingAppenderTest {
   public void smoke() throws JoranException {
     configure(SIFT_FOLDER_PREFIX + "smoke.xml");
     logger.debug("smoke");
-    Appender<ILoggingEvent> appender = getAppenderTracker().find("smokeDefault");
-    assertNotNull(appender);
-    ListAppender<ILoggingEvent> listAppender = (ListAppender<ILoggingEvent>) appender;
+    long timestamp = 0;
+    SiftingAppender ha = (SiftingAppender) root.getAppender("SIFT");
+    ListAppender<ILoggingEvent> listAppender = (ListAppender<ILoggingEvent>) ha
+        .getAppenderTracker().get("smoke", timestamp);
+    assertNotNull(listAppender);
     List<ILoggingEvent> eventList = listAppender.list;
     assertEquals(1, listAppender.list.size());
     assertEquals("smoke", eventList.get(0).getMessage());
   }
 
-  private AppenderTracker<ILoggingEvent> getAppenderTracker() {
-    SiftingAppender ha = (SiftingAppender) root.getAppender("SIFT");
-    return ha.getAppenderTracker();
-  }
-
   @Test
   public void zeroNesting() throws JoranException {
     configure(SIFT_FOLDER_PREFIX + "zeroNesting.xml");
@@ -87,14 +84,18 @@ public class SiftingAppenderTest {
     logger.debug("hello");
     logger.debug("hello");
     logger.debug("hello");
-    SiftingAppender sa = (SiftingAppender) root.getAppender("SIFT");
 
-    Appender<ILoggingEvent> appender = getAppenderTracker().find("zeroDefault");
-    assertNotNull(appender);
-    NOPAppender<ILoggingEvent> nopa = (NOPAppender<ILoggingEvent>) appender;
+    long timestamp = 0;
+
+    SiftingAppender sa = (SiftingAppender) root.getAppender("SIFT");
+    NOPAppender<ILoggingEvent> nopa = (NOPAppender<ILoggingEvent>) sa
+        .getAppenderTracker().get("smoke", timestamp);
     StatusPrinter.printInCaseOfErrorsOrWarnings(loggerContext);
 
-    statusChecker.assertContainsMatch(ErrorStatus.ERROR, "No nested appenders found");
+    assertNotNull(nopa);
+    assertTrue(sc.containsMatch(ErrorStatus.ERROR, "No nested appenders found"));
+    assertTrue(sc.containsMatch(ErrorStatus.ERROR,
+        "Failed to build an appender for discriminating value \\[smoke\\]"));
   }
 
   @Test
@@ -104,21 +105,26 @@ public class SiftingAppenderTest {
     logger.debug("hello");
     logger.debug("hello");
 
-    Appender<ILoggingEvent> listAppender = getAppenderTracker().find("multipleDefault");
+    long timestamp = 0;
+
+    SiftingAppender sa = (SiftingAppender) root.getAppender("SIFT");
+    ListAppender<ILoggingEvent> listAppender = (ListAppender<ILoggingEvent>) sa
+        .getAppenderTracker().get("smoke", timestamp);
     StatusPrinter.printInCaseOfErrorsOrWarnings(loggerContext);
 
     assertNotNull(listAppender);
-    statusChecker.assertContainsMatch(ErrorStatus.ERROR,
-            "Only and only one appender can be nested");
+    assertTrue(sc.containsMatch(ErrorStatus.ERROR,
+        "Only and only one appender can be nested"));
   }
 
   @Test
   public void defaultLayoutRule() throws JoranException {
     configure(SIFT_FOLDER_PREFIX + "defaultLayoutRule.xml");
     logger.debug("hello");
+    long timestamp = 0;
     SiftingAppender ha = (SiftingAppender) root.getAppender("SIFT");
     StringListAppender<ILoggingEvent> listAppender = (StringListAppender<ILoggingEvent>) ha
-            .getAppenderTracker().find("default");
+        .getAppenderTracker().get("default", timestamp);
 
     assertNotNull(listAppender);
     List<String> strList = listAppender.strList;
@@ -133,9 +139,9 @@ public class SiftingAppenderTest {
     MDC.put(mdcKey, "a");
     logger.debug("smoke");
     long timestamp = System.currentTimeMillis();
-    SiftingAppender sa = (SiftingAppender) root.getAppender("SIFT");
-    ListAppender<ILoggingEvent> listAppender = (ListAppender<ILoggingEvent>)
-            sa.getAppenderTracker().find("a");
+    SiftingAppender ha = (SiftingAppender) root.getAppender("SIFT");
+    ListAppender<ILoggingEvent> listAppender = (ListAppender<ILoggingEvent>) ha
+        .getAppenderTracker().get("a", timestamp);
     assertNotNull(listAppender);
     List<ILoggingEvent> eventList = listAppender.list;
     assertEquals(1, listAppender.list.size());
@@ -143,130 +149,12 @@ public class SiftingAppenderTest {
 
     MDC.remove(mdcKey);
     LoggingEvent le = new LoggingEvent("x", logger, Level.INFO, "hello", null,
-            null);
-    le.setTimeStamp(timestamp + ComponentTracker.DEFAULT_TIMEOUT + 1);
-    sa.doAppend(le);
+        null);
+    le.setTimeStamp(timestamp + AppenderTracker.THRESHOLD * 2);
+    ha.doAppend(le);
     assertFalse(listAppender.isStarted());
-    assertEquals(1, sa.getAppenderTracker().allKeys().size());
-    assertTrue(sa.getAppenderTracker().allKeys().contains("cycleDefault"));
-  }
-
-  @Test
-  public void sessionFinalizationShouldCauseLingering() throws JoranException {
-    String mdcKey = "linger";
-    String mdcVal = "session" + diff;
-    configure(SIFT_FOLDER_PREFIX + "lingering.xml");
-    MDC.put(mdcKey, mdcVal);
-    logger.debug("linger 1");
-    logger.debug(ClassicConstants.FINALIZE_SESSION_MARKER, "linger 2");
-    long now = System.currentTimeMillis();
-    SiftingAppender sa = (SiftingAppender) root.getAppender("SIFT");
-    AppenderTracker<ILoggingEvent> tracker = sa.getAppenderTracker();
-
-    assertEquals(1, tracker.allKeys().size());
-    Appender<ILoggingEvent> appender = tracker.find(mdcVal);
-    assertTrue(appender.isStarted());
-
-    tracker.removeStaleComponents(now + AppenderTracker.LINGERING_TIMEOUT + 1);
-    // previously lingering appenders should be closed upon timeout
-    assertFalse(appender.isStarted());
-    // and they should be gone
-    assertEquals(0, tracker.allKeys().size());
-  }
-
-  @Test
-  public void localPropertiesShouldBeVisible() throws JoranException {
-    String mdcKey = "localProperty";
-    String mdcVal = "" + diff;
-    String msg = "localPropertiesShouldBeVisible";
-    String prefix = "Y";
-    configure(SIFT_FOLDER_PREFIX + "propertyPropagation.xml");
-    MDC.put(mdcKey, mdcVal);
-    logger.debug(msg);
-    SiftingAppender sa = (SiftingAppender) root.getAppender("SIFT");
-    StringListAppender<ILoggingEvent> listAppender = (StringListAppender<ILoggingEvent>) sa
-            .getAppenderTracker().find(mdcVal);
-    assertNotNull(listAppender);
-    List<String> strList = listAppender.strList;
-    assertEquals(1, listAppender.strList.size());
-    assertEquals(prefix + msg, strList.get(0));
-  }
-
-  @Test
-  public void propertyDefinedWithinSiftElementShouldBeVisible() throws JoranException {
-    String mdcKey = "propertyDefinedWithinSift";
-    String mdcVal = "" + diff;
-    String msg = "propertyDefinedWithinSiftElementShouldBeVisible";
-    String prefix = "Y";
-    configure(SIFT_FOLDER_PREFIX + "propertyDefinedInSiftElement.xml");
-    MDC.put(mdcKey, mdcVal);
-    logger.debug(msg);
-    SiftingAppender sa = (SiftingAppender) root.getAppender("SIFT");
-    StringListAppender<ILoggingEvent> listAppender = (StringListAppender<ILoggingEvent>) sa
-            .getAppenderTracker().find(mdcVal);
-    assertNotNull(listAppender);
-    List<String> strList = listAppender.strList;
-    assertEquals(1, listAppender.strList.size());
-    assertEquals(prefix + msg, strList.get(0));
-  }
-
-  @Test
-  public void compositePropertyShouldCombineWithinAndWithoutSiftElement() throws JoranException {
-    String mdcKey = "compositeProperty";
-    String mdcVal = "" + diff;
-    String msg = "compositePropertyShouldCombineWithinAndWithoutSiftElement";
-    String prefix = "composite";
-    configure(SIFT_FOLDER_PREFIX + "compositeProperty.xml");
-    MDC.put(mdcKey, mdcVal);
-    logger.debug(msg);
-    SiftingAppender sa = (SiftingAppender) root.getAppender("SIFT");
-    StringListAppender<ILoggingEvent> listAppender = (StringListAppender<ILoggingEvent>) sa
-            .getAppenderTracker().find(mdcVal);
-    assertNotNull(listAppender);
-    List<String> strList = listAppender.strList;
-    assertEquals(1, listAppender.strList.size());
-    assertEquals(prefix + msg, strList.get(0));
-  }
-
-  @Test
-  public void maxAppendersCountPropertyShouldBeHonored() throws JoranException {
-    configure(SIFT_FOLDER_PREFIX + "maxAppenderCount.xml");
-    int max = 5;
-    SiftingAppender sa = (SiftingAppender) root.getAppender("SIFT");
-    String mdcKey = "max";
-    for(int i = 0; i <= max; i++) {
-      MDC.put(mdcKey, "" + (diff + i));
-      LoggingEvent event = new LoggingEvent("", logger, Level.DEBUG, "max"+i, null, null);
-      event.setTimeStamp(now);
-      sa.doAppend(event);
-      now += AbstractComponentTracker.WAIT_BETWEEN_SUCCESSIVE_REMOVAL_ITERATIONS;
-    }
-    AppenderTracker<ILoggingEvent> tracker = sa.getAppenderTracker();
-    assertEquals(max, tracker.allKeys().size());
-    assertNull(tracker.find("" + (diff + 0)));
-    for(int i = 1; i <= max; i++) {
-      assertNotNull(tracker.find("" + (diff + i)));
-    }
-  }
-
-  @Test
-  public void timeoutPropertyShouldBeHonored() throws JoranException, InterruptedException {
-    configure(SIFT_FOLDER_PREFIX + "timeout.xml");
-    long timeout = 30*1000;
-    SiftingAppender sa = (SiftingAppender) root.getAppender("SIFT");
-
-    LoggingEvent event = new LoggingEvent("", logger, Level.DEBUG, "timeout", null, null);
-    event.setTimeStamp(now);
-    sa.doAppend(event);
-
-    AppenderTracker<ILoggingEvent> tracker = sa.getAppenderTracker();
-
-    assertEquals(1, tracker.getComponentCount());
-
-    now += timeout+1;
-    tracker.removeStaleComponents(now);
-    assertEquals(0, tracker.getComponentCount());
-    statusChecker.assertIsErrorFree();
+    assertEquals(1, ha.getAppenderTracker().keyList().size());
+    assertEquals("cycleDefault", ha.getAppenderTracker().keyList().get(0));
   }
 
 }
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/spi/BasicContextListener.java b/logback-classic/src/test/java/ch/qos/logback/classic/spi/BasicContextListener.java
index 7020b5d..2d1e9a6 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/spi/BasicContextListener.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/spi/BasicContextListener.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/spi/BogusClassLoader.java b/logback-classic/src/test/java/ch/qos/logback/classic/spi/BogusClassLoader.java
index 18fd8a9..b48859b 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/spi/BogusClassLoader.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/spi/BogusClassLoader.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/spi/CPDCSpecial.java b/logback-classic/src/test/java/ch/qos/logback/classic/spi/CPDCSpecial.java
index 0876778..3de7599 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/spi/CPDCSpecial.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/spi/CPDCSpecial.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/spi/CallerDataTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/spi/CallerDataTest.java
index 4d9e49e..07e8b25 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/spi/CallerDataTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/spi/CallerDataTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -27,7 +27,7 @@ public class CallerDataTest  {
     Throwable t = new Throwable();
     StackTraceElement[] steArray = t.getStackTrace();
     
-    StackTraceElement[] cda = CallerData.extract(t, CallerDataTest.class.getName(), 50, null);
+    StackTraceElement[] cda = CallerData.extract(t, CallerDataTest.class.getName(), 50);
     assertNotNull(cda);
     assertTrue(cda.length > 0);
     assertEquals(steArray.length - 1, cda.length);
@@ -40,7 +40,7 @@ public class CallerDataTest  {
    */
   @Test
   public void testDeferredProcessing() {
-    StackTraceElement[] cda = CallerData.extract(new Throwable(), "com.inexistent.foo", 10, null);
+    StackTraceElement[] cda = CallerData.extract(new Throwable(), "com.inexistent.foo", 10);
     assertNotNull(cda);
     assertEquals(0, cda.length);
   }
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/spi/ContextListenerTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/spi/ContextListenerTest.java
index a482b49..3511e22 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/spi/ContextListenerTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/spi/ContextListenerTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/spi/DummyThrowableProxy.java b/logback-classic/src/test/java/ch/qos/logback/classic/spi/DummyThrowableProxy.java
index 070fec0..cd8c528 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/spi/DummyThrowableProxy.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/spi/DummyThrowableProxy.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/spi/LocalFirstClassLoader.java b/logback-classic/src/test/java/ch/qos/logback/classic/spi/LocalFirstClassLoader.java
index ce022a1..2834612 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/spi/LocalFirstClassLoader.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/spi/LocalFirstClassLoader.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/spi/LoggerComparatorTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/spi/LoggerComparatorTest.java
index 54673d3..f139b6f 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/spi/LoggerComparatorTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/spi/LoggerComparatorTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/spi/LoggingEventSerializationPerfTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/spi/LoggingEventSerializationPerfTest.java
index 23cd6fa..1226d8e 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/spi/LoggingEventSerializationPerfTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/spi/LoggingEventSerializationPerfTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -19,7 +19,6 @@ import static org.junit.Assert.fail;
 import java.io.IOException;
 import java.io.ObjectOutputStream;
 
-import ch.qos.logback.core.testUtil.EnvUtilForTests;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -31,6 +30,7 @@ import ch.qos.logback.classic.net.testObjectBuilders.Builder;
 import ch.qos.logback.classic.net.testObjectBuilders.LoggingEventWithParametersBuilder;
 import ch.qos.logback.classic.net.testObjectBuilders.TrivialLoggingEventBuilder;
 import ch.qos.logback.core.CoreConstants;
+import ch.qos.logback.core.testUtil.Env;
 
 // As of logback 0.9.15, 
 //   average time  per logging event: 3979 nanoseconds
@@ -86,7 +86,7 @@ public class LoggingEventSerializationPerfTest {
 
   @Test
   public void testPerformance() {
-    if (EnvUtilForTests.isLinux()) {
+    if (Env.isLinux()) {
       return;
     }
     TrivialLoggingEventBuilder builder = new TrivialLoggingEventBuilder();
@@ -114,7 +114,7 @@ public class LoggingEventSerializationPerfTest {
 
   @Test
   public void testPerformanceWithParameters() {
-    if (EnvUtilForTests.isLinux()) {
+    if (Env.isLinux()) {
       return;
     }
     LoggingEventWithParametersBuilder builder = new LoggingEventWithParametersBuilder();
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/spi/LoggingEventSerializationTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/spi/LoggingEventSerializationTest.java
index ba6cad1..04e33ce 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/spi/LoggingEventSerializationTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/spi/LoggingEventSerializationTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -164,7 +164,7 @@ public class LoggingEventSerializationTest {
   @Test
   public void serializeLargeArgs() throws Exception {
 
-    StringBuilder buffer = new StringBuilder();
+    StringBuffer buffer = new StringBuffer();
     for (int i = 0; i < 100000; i++) {
       buffer.append("X");
     }
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/spi/LoggingEventTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/spi/LoggingEventTest.java
deleted file mode 100644
index e8b3d70..0000000
--- a/logback-classic/src/test/java/ch/qos/logback/classic/spi/LoggingEventTest.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package ch.qos.logback.classic.spi;
-
-import ch.qos.logback.classic.Level;
-import ch.qos.logback.classic.Logger;
-import ch.qos.logback.classic.LoggerContext;
-import org.junit.Before;
-import org.junit.Test;
-
-import static junit.framework.Assert.assertNull;
-import static org.junit.Assert.assertEquals;
-
-public class LoggingEventTest {
-
-  LoggerContext loggerContext = new LoggerContext();
-  Logger logger = loggerContext.getLogger(Logger.ROOT_LOGGER_NAME);
-
-  @Before
-  public void setUp() {
-  }
-
-
-  @Test
-  public void testFormattingOneArg() {
-    String message = "x={}";
-    Throwable throwable = null;
-    Object[] argArray = new Object[] {12};
-
-    LoggingEvent event = new LoggingEvent("", logger, Level.INFO, message, throwable, argArray);
-    assertNull(event.formattedMessage);
-    assertEquals("x=12", event.getFormattedMessage());
-  }
-
-
-  @Test
-  public void testFormattingTwoArg() {
-    String message = "{}-{}";
-    Throwable throwable = null;
-    Object[] argArray = new Object[] {12, 13};
-    LoggingEvent event = new LoggingEvent("", logger, Level.INFO, message, throwable, argArray);
-
-    assertNull(event.formattedMessage);
-    assertEquals("12-13", event.getFormattedMessage());
-  }
-
-
-  @Test
-  public void testNoFormattingWithArgs() {
-    String message = "testNoFormatting";
-    Throwable throwable = null;
-    Object[] argArray = new Object[] {12, 13};
-    LoggingEvent event = new LoggingEvent("", logger, Level.INFO, message, throwable, argArray);
-    assertNull(event.formattedMessage);
-    assertEquals(message, event.getFormattedMessage());
-  }
-
-  @Test
-  public void testNoFormattingWithoutArgs() {
-    String message = "testNoFormatting";
-    Throwable throwable = null;
-    Object[] argArray = null;
-    LoggingEvent event = new LoggingEvent("", logger, Level.INFO, message, throwable, argArray);
-    assertNull(event.formattedMessage);
-    assertEquals(message, event.getFormattedMessage());
-  }
-}
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/spi/LuckyCharms.java b/logback-classic/src/test/java/ch/qos/logback/classic/spi/LuckyCharms.java
index 47740ea..98cc333 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/spi/LuckyCharms.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/spi/LuckyCharms.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/spi/PackageTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/spi/PackageTest.java
index 59efd02..69d1c57 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/spi/PackageTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/spi/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -19,7 +19,7 @@ import org.junit.runners.Suite.SuiteClasses;
 
 @RunWith(Suite.class)
 @SuiteClasses( { ContextListenerTest.class, CallerDataTest.class,
-    LoggerComparatorTest.class, LoggingEventTest.class, LoggingEventSerializationTest.class,
+    LoggerComparatorTest.class, LoggingEventSerializationTest.class,
     LoggingEventSerializationPerfTest.class, ThrowableProxyTest.class,
     PackagingDataCalculatorTest.class })
 public class PackageTest  {
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/spi/PackagingDataCalculatorTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/spi/PackagingDataCalculatorTest.java
index e9fc075..8f3d564 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/spi/PackagingDataCalculatorTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/spi/PackagingDataCalculatorTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -90,7 +90,7 @@ public class PackagingDataCalculatorTest {
     int slackFactor = 8;
     if (!SystemInfo.getJavaVendor().contains("Sun")) {
       // be more lenient with other JDKs
-      slackFactor = 15;
+      slackFactor = 10;
     }
     assertTrue("computing class packaging data (" + d1
         + ") should have been less than " + slackFactor
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/spi/PubLoggingEventVO.java b/logback-classic/src/test/java/ch/qos/logback/classic/spi/PubLoggingEventVO.java
index d84e7cc..ef796b8 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/spi/PubLoggingEventVO.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/spi/PubLoggingEventVO.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/spi/ThrowableProxyTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/spi/ThrowableProxyTest.java
index bd3f40d..f64fa20 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/spi/ThrowableProxyTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/spi/ThrowableProxyTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,17 +13,14 @@
  */
 package ch.qos.logback.classic.spi;
 
-import static ch.qos.logback.classic.util.TeztHelper.addSuppressed;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assume.assumeNotNull;
-import static org.junit.Assume.assumeTrue;
 
 import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
-import ch.qos.logback.classic.util.TeztHelper;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -33,6 +30,25 @@ public class ThrowableProxyTest {
   StringWriter sw = new StringWriter();
   PrintWriter pw = new PrintWriter(sw);
 
+  private static final Method ADD_SUPPRESSED_METHOD;
+
+  static {
+    Method method = null;
+    try {
+      method = Throwable.class.getMethod("addSuppressed", Throwable.class);
+    } catch (NoSuchMethodException e) {
+      // ignore, will get thrown in Java < 7
+    }
+    ADD_SUPPRESSED_METHOD = method;
+  }
+
+  private static void addSuppressed(Throwable outer, Throwable suppressed) throws InvocationTargetException, IllegalAccessException
+  {
+    if(ADD_SUPPRESSED_METHOD != null) {
+      ADD_SUPPRESSED_METHOD.invoke(outer, suppressed);
+    }
+  }
+
   @Before
   public void setUp() throws Exception {
   }
@@ -80,7 +96,7 @@ public class ThrowableProxyTest {
   @Test
   public void suppressed() throws InvocationTargetException, IllegalAccessException
   {
-    assumeTrue(TeztHelper.suppressedSupported()); // only execute on Java 7, would work anyway but doesn't make sense.
+    assumeNotNull(ADD_SUPPRESSED_METHOD); // only execute on Java 7, would work anyway but doesn't make sense.
     Exception ex = null;
     try {
       someMethod();
@@ -97,7 +113,7 @@ public class ThrowableProxyTest {
   @Test
   public void suppressedWithCause() throws InvocationTargetException, IllegalAccessException
   {
-    assumeTrue(TeztHelper.suppressedSupported()); // only execute on Java 7, would work anyway but doesn't make sense.
+    assumeNotNull(ADD_SUPPRESSED_METHOD); // only execute on Java 7, would work anyway but doesn't make sense.
     Exception ex = null;
     try {
       someMethod();
@@ -111,23 +127,6 @@ public class ThrowableProxyTest {
     verify(ex);
   }
 
-  @Test
-  public void suppressedWithSuppressed() throws Exception
-  {
-    assumeTrue(TeztHelper.suppressedSupported()); // only execute on Java 7, would work anyway but doesn't make sense.
-    Exception ex = null;
-    try {
-      someMethod();
-    } catch (Exception e) {
-      ex=new Exception("Wrapper", e);
-      Exception fooException = new Exception("Foo");
-      Exception barException = new Exception("Bar");
-      addSuppressed(barException, fooException);
-      addSuppressed(e, barException);
-    }
-    verify(ex);
-  }
-
   // see also http://jira.qos.ch/browse/LBCLASSIC-216
   @Test
   public void nullSTE() {
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/spi/special/CPDCSpecialImpl.java b/logback-classic/src/test/java/ch/qos/logback/classic/spi/special/CPDCSpecialImpl.java
index 8693f07..3930954 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/spi/special/CPDCSpecialImpl.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/spi/special/CPDCSpecialImpl.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/testUtil/SampleConverter.java b/logback-classic/src/test/java/ch/qos/logback/classic/testUtil/SampleConverter.java
index 0783561..ca5766b 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/testUtil/SampleConverter.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/testUtil/SampleConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/DebugUsersTurboFilter.java b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/DebugUsersTurboFilter.java
index 75c810e..66c297a 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/DebugUsersTurboFilter.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/DebugUsersTurboFilter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/DuplicateMessageFilterTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/DuplicateMessageFilterTest.java
index 86fa230..046c875 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/DuplicateMessageFilterTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/DuplicateMessageFilterTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/LRUMessageCacheTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/LRUMessageCacheTest.java
index 2f2b4d3..e481be0 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/LRUMessageCacheTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/LRUMessageCacheTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/MarkerFilterTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/MarkerFilterTest.java
index d05be40..54cf90d 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/MarkerFilterTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/MarkerFilterTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/NOPTurboFilter.java b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/NOPTurboFilter.java
index f292e80..5749d05 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/NOPTurboFilter.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/NOPTurboFilter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/PackageTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/PackageTest.java
index ff2af0e..c8ae3ed 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/PackageTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/ReconfigureOnChangeTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/ReconfigureOnChangeTest.java
index 8c69f37..f8632e7 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/ReconfigureOnChangeTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/ReconfigureOnChangeTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,45 +13,50 @@
  */
 package ch.qos.logback.classic.turbo;
 
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.*;
+import java.net.MalformedURLException;
+import java.util.concurrent.ThreadPoolExecutor;
+
+import ch.qos.logback.classic.gaffer.GafferConfigurator;
+import ch.qos.logback.core.contention.AbstractMultiThreadedHarness;
+import ch.qos.logback.core.contention.MultiThreadedHarness;
+import ch.qos.logback.core.contention.WaitOnExecutionMultiThreadedHarness;
+import ch.qos.logback.core.joran.util.ConfigurationWatchListUtil;
+import ch.qos.logback.core.testUtil.FileTestUtil;
+import ch.qos.logback.core.testUtil.RandomUtil;
+import ch.qos.logback.core.util.CoreTestConstants;
+import org.junit.*;
+import org.slf4j.helpers.BogoPerf;
+
 import ch.qos.logback.classic.ClassicTestConstants;
 import ch.qos.logback.classic.Level;
 import ch.qos.logback.classic.Logger;
 import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.gaffer.GafferConfigurator;
 import ch.qos.logback.classic.issue.lbclassic135.LoggingRunnable;
 import ch.qos.logback.classic.joran.JoranConfigurator;
-import ch.qos.logback.classic.spi.TurboFilterList;
 import ch.qos.logback.core.CoreConstants;
-import ch.qos.logback.core.contention.AbstractMultiThreadedHarness;
 import ch.qos.logback.core.contention.RunnableWithCounterAndDone;
-import ch.qos.logback.core.contention.WaitOnExecutionMultiThreadedHarness;
-import ch.qos.logback.core.joran.spi.ConfigurationWatchList;
 import ch.qos.logback.core.joran.spi.JoranException;
-import ch.qos.logback.core.joran.util.ConfigurationWatchListUtil;
 import ch.qos.logback.core.status.InfoStatus;
-import ch.qos.logback.core.status.Status;
 import ch.qos.logback.core.status.StatusChecker;
-import ch.qos.logback.core.testUtil.EnvUtilForTests;
-import ch.qos.logback.core.testUtil.FileTestUtil;
-import ch.qos.logback.core.testUtil.RandomUtil;
-import ch.qos.logback.core.util.CoreTestConstants;
+import ch.qos.logback.core.testUtil.Env;
 import ch.qos.logback.core.util.StatusPrinter;
-import org.junit.*;
-import org.slf4j.helpers.BogoPerf;
-
-import java.io.*;
-import java.net.MalformedURLException;
-import java.util.List;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-import static org.junit.Assert.*;
 
 public class ReconfigureOnChangeTest {
   final static int THREAD_COUNT = 5;
   final static int LOOP_LEN = 1000 * 1000;
 
+  static final boolean MUST_BE_ERROR_FREE = true;
+  static final boolean ERRORS_EXPECTED = false;
+
+  static final boolean REGULAR_RECONFIGURATION = false;
+  static final boolean FORCED_RECONFIGURATION_SKIP = true;
+
+
   int diff = RandomUtil.getPositiveInt();
 
   // the space in the file name mandated by
@@ -62,8 +67,8 @@ public class ReconfigureOnChangeTest {
   final static String G_SCAN1_FILE_AS_STR = ClassicTestConstants.INPUT_PREFIX
           + "turbo/scan 1.groovy";
 
-  final static String SCAN_LOGBACK_474_FILE_AS_STR = ClassicTestConstants.INPUT_PREFIX
-          + "turbo/scan_logback_474.xml";
+  final static String SCAN_LBCLASSIC_154_FILE_AS_STR = ClassicTestConstants.INPUT_PREFIX
+          + "turbo/scan_lbclassic154.xml";
 
   final static String INCLUSION_SCAN_TOPLEVEL0_AS_STR = ClassicTestConstants.INPUT_PREFIX
           + "turbo/inclusion/topLevel0.xml";
@@ -79,15 +84,14 @@ public class ReconfigureOnChangeTest {
   // it actually takes time for Windows to propagate file modification changes
   // values below 100 milliseconds can be problematic the same propagation
   // latency occurs in Linux but is even larger (>600 ms)
-  // final static int DEFAULT_SLEEP_BETWEEN_UPDATES = 60;
+  final static int DEFAULT_SLEEP_BETWEEN_UPDATES = 60;
 
-  int sleepBetweenUpdates = 100;
+  int sleepBetweenUpdates = 100;//DEFAULT_SLEEP_BETWEEN_UPDATES;
+
+//  static int totalTestDuration;
 
   LoggerContext loggerContext = new LoggerContext();
   Logger logger = loggerContext.getLogger(this.getClass());
-  ExecutorService executorService = loggerContext.getExecutorService();
-
-  StatusChecker checker = new StatusChecker(loggerContext);
   AbstractMultiThreadedHarness harness;
 
   ThreadPoolExecutor executor = (ThreadPoolExecutor) loggerContext.getExecutorService();
@@ -134,46 +138,31 @@ public class ReconfigureOnChangeTest {
     return rArray;
   }
 
-  // Tests whether ConfigurationAction is installing ReconfigureOnChangeFilter
-  @Test
-  public void installFilter() throws JoranException, IOException, InterruptedException {
-    File file = new File(SCAN1_FILE_AS_STR);
-    configure(file);
-    List<File> fileList = getConfigurationFileList(loggerContext);
-    assertThatListContainsFile(fileList, file);
-    assertThatFirstFilterIsROCF();
-    StatusPrinter.print(loggerContext);
-  }
 
+  void doScanTest(File fileToTouch) throws JoranException, IOException, InterruptedException {
+    doScanTest(fileToTouch, UpdateType.TOUCH, REGULAR_RECONFIGURATION, MUST_BE_ERROR_FREE);
+  }
 
-  @Test
-  public void gafferInstallFilter() throws JoranException, IOException, InterruptedException {
-    File file = new File(G_SCAN1_FILE_AS_STR);
-    gConfigure(file);
-    List<File> fileList = getConfigurationFileList(loggerContext);
-    assertThatListContainsFile(fileList, file);
-    assertThatFirstFilterIsROCF();
-
-    rocfDetachReconfigurationToNewThreadAndAwaitTermination();
+  void doScanTest(File fileToTouch, UpdateType updateType, boolean forcedReconfigurationSkip, boolean mustBeErrorFree) throws JoranException, IOException, InterruptedException {
+    RunnableWithCounterAndDone[] runnableArray = buildRunnableArray(fileToTouch, updateType);
+    harness.execute(runnableArray);
 
-    fileList = getConfigurationFileList(loggerContext);
-    assertThatListContainsFile(fileList, file);
-    assertThatFirstFilterIsROCF();
+    loggerContext.getStatusManager().add(
+            new InfoStatus("end of execution ", this));
 
-    // check that rcof filter installed on two occasions
-    assertEquals(2, checker.matchCount("Will scan for changes in"));
-  }
+    int expected = expectedResets;
+    if (forcedReconfigurationSkip)
+      expected = 0;
 
-  private void rocfDetachReconfigurationToNewThreadAndAwaitTermination() throws InterruptedException {
-    ReconfigureOnChangeFilter reconfigureOnChangeFilter = (ReconfigureOnChangeFilter) getFirstTurboFilter();
-    reconfigureOnChangeFilter.detachReconfigurationToNewThread();
-    executorService.shutdown();
-    executorService.awaitTermination(1000, TimeUnit.MILLISECONDS);
+    verify(expected, mustBeErrorFree);
   }
 
-  List<File> getConfigurationFileList(LoggerContext context) {
-    ConfigurationWatchList configurationWatchList = ConfigurationWatchListUtil.getConfigurationWatchList(loggerContext);
-    return configurationWatchList.getCopyOfFileWatchList();
+  // Tests whether ConfigurationAction is installing ReconfigureOnChangeFilter
+  @Test(timeout = 4000L)
+  public void scan1() throws JoranException, IOException, InterruptedException {
+    File file = new File(SCAN1_FILE_AS_STR);
+    configure(file);
+    doScanTest(file);
   }
 
   @Test(timeout = 4000L)
@@ -181,9 +170,7 @@ public class ReconfigureOnChangeTest {
     File topLevelFile = new File(INCLUSION_SCAN_TOPLEVEL0_AS_STR);
     File innerFile = new File(INCLUSION_SCAN_INNER0_AS_STR);
     configure(topLevelFile);
-    List<File> fileList = getConfigurationFileList(loggerContext);
-    assertThatListContainsFile(fileList, topLevelFile);
-    assertThatListContainsFile(fileList, innerFile);
+    doScanTest(innerFile);
   }
 
   @Test(timeout = 4000L)
@@ -191,42 +178,26 @@ public class ReconfigureOnChangeTest {
     File topLevelFile = new File(INCLUSION_SCAN_TOP_BY_RESOURCE_AS_STR);
     File innerFile = new File(INCLUSION_SCAN_INNER1_AS_STR);
     configure(topLevelFile);
-
-    List<File> fileList = getConfigurationFileList(loggerContext);
-    assertThatListContainsFile(fileList, topLevelFile);
-    assertThatListContainsFile(fileList, innerFile);
+    doScanTest(innerFile);
   }
 
-  // See also http://jira.qos.ch/browse/LOGBACK-338
-  @Test
+  // See also http://jira.qos.ch/browse/LBCLASSIC-247
+  @Test(timeout = 4000L)
   public void includeScanViaInputStreamSuppliedConfigFile() throws IOException, JoranException, InterruptedException {
+    harness = new MultiThreadedHarness(1000);
     String configurationStr = "<configuration scan=\"true\" scanPeriod=\"50 millisecond\"><include resource=\"asResource/inner1.xml\"/></configuration>";
     configure(new ByteArrayInputStream(configurationStr.getBytes("UTF-8")));
-
-    ConfigurationWatchList configurationWatchList = ConfigurationWatchListUtil.getConfigurationWatchList(loggerContext);
-    assertNull(configurationWatchList.getMainURL());
-
-    ReconfigureOnChangeFilter reconfigureOnChangeFilter = (ReconfigureOnChangeFilter) getFirstTurboFilter();
-    // without a top level file, reconfigureOnChangeFilter should not start
-    assertFalse(reconfigureOnChangeFilter.isStarted());
+    File innerFile = new File(INCLUSION_SCAN_INNER1_AS_STR);
+    doScanTest(innerFile, UpdateType.TOUCH, FORCED_RECONFIGURATION_SKIP, MUST_BE_ERROR_FREE);
   }
 
   @Test(timeout = 4000L)
   public void fallbackToSafe() throws IOException, JoranException, InterruptedException {
     String path = CoreTestConstants.OUTPUT_DIR_PREFIX + "reconfigureOnChangeConfig_fallbackToSafe-" + diff + ".xml";
-    File topLevelFile = new File(path);
-    writeToFile(topLevelFile, "<configuration scan=\"true\" scanPeriod=\"50 millisecond\"><root level=\"ERROR\"/></configuration> ");
-    configure(topLevelFile);
-
-    writeToFile(topLevelFile, "<configuration scan=\"true\" scanPeriod=\"50 millisecond\">\n" +
-            "  <root></configuration>");
-
-    rocfDetachReconfigurationToNewThreadAndAwaitTermination();
-
-    checker.assertContainsMatch(Status.WARN, "Falling back to previously registered safe configuration.");
-    checker.assertContainsMatch(Status.INFO, "Re-registering previous fallback configuration once more");
-
-    assertThatFirstFilterIsROCF();
+    File file = new File(path);
+    writeToFile(file, "<configuration scan=\"true\" scanPeriod=\"50 millisecond\"><root level=\"ERROR\"/></configuration> ");
+    configure(file);
+    doScanTest(file, UpdateType.MALFORMED, REGULAR_RECONFIGURATION, ERRORS_EXPECTED);
   }
 
   @Test(timeout = 4000L)
@@ -234,58 +205,52 @@ public class ReconfigureOnChangeTest {
     String topLevelFileAsStr = CoreTestConstants.OUTPUT_DIR_PREFIX + "reconfigureOnChangeConfig_top-" + diff + ".xml";
     String innerFileAsStr = CoreTestConstants.OUTPUT_DIR_PREFIX + "reconfigureOnChangeConfig_inner-" + diff + ".xml";
     File topLevelFile = new File(topLevelFileAsStr);
-    writeToFile(topLevelFile, "<configuration scan=\"true\" scanPeriod=\"50 millisecond\"><include file=\"" + innerFileAsStr + "\"/></configuration> ");
+    writeToFile(topLevelFile, "<configuration scan=\"true\" scanPeriod=\"50 millisecond\"><include file=\""+innerFileAsStr+"\"/></configuration> ");
 
     File innerFile = new File(innerFileAsStr);
     writeToFile(innerFile, "<included><root level=\"ERROR\"/></included> ");
     configure(topLevelFile);
-    writeToFile(innerFile, "<included>\n<root>\n</included>");
-    rocfDetachReconfigurationToNewThreadAndAwaitTermination();
-
-    checker.assertContainsMatch(Status.WARN, "Falling back to previously registered safe configuration.");
-    checker.assertContainsMatch(Status.INFO, "Re-registering previous fallback configuration once more");
-
-    assertThatFirstFilterIsROCF();
+    doScanTest(innerFile, UpdateType.MALFORMED_INNER, REGULAR_RECONFIGURATION, ERRORS_EXPECTED);
   }
 
 
-  // check for deadlocks
   @Test(timeout = 4000L)
-  public void scan_LOGBACK_474() throws JoranException, IOException,
-          InterruptedException {
-    File file = new File(SCAN_LOGBACK_474_FILE_AS_STR);
-    configure(file);
-
+  public void gscan1() throws JoranException, IOException, InterruptedException {
+    File file = new File(G_SCAN1_FILE_AS_STR);
+    gConfigure(file);
     RunnableWithCounterAndDone[] runnableArray = buildRunnableArray(file, UpdateType.TOUCH);
     harness.execute(runnableArray);
 
     loggerContext.getStatusManager().add(
             new InfoStatus("end of execution ", this));
 
-    verify(expectedResets);
+    verify(expectedResets, MUST_BE_ERROR_FREE);
   }
 
+  // check for deadlocks
+  @Test(timeout = 4000L)
+  public void scan_lbclassic154() throws JoranException, IOException,
+          InterruptedException {
+    File file = new File(SCAN_LBCLASSIC_154_FILE_AS_STR);
+    configure(file);
+    RunnableWithCounterAndDone[] runnableArray = buildRunnableArray(file, UpdateType.TOUCH);
+    harness.execute(runnableArray);
 
-  private void assertThatListContainsFile(List<File> fileList, File file) {
-    // conversion to absolute file seems to work nicely
-    assertTrue(fileList.contains(file.getAbsoluteFile()));
-  }
-
-  private TurboFilter getFirstTurboFilter() {
-    TurboFilterList turboFilterList = loggerContext.getTurboFilterList();
-    return turboFilterList.get(0);
-  }
-
+    loggerContext.getStatusManager().add(
+            new InfoStatus("end of execution ", this));
 
-  private void assertThatFirstFilterIsROCF() {
-    assertTrue(getFirstTurboFilter() instanceof ReconfigureOnChangeFilter);
+    verify(expectedResets, MUST_BE_ERROR_FREE);
   }
 
 
-  private void verify(int expected) {
+  void verify(int expected, boolean errorFreeness) {
     StatusChecker checker = new StatusChecker(loggerContext);
-    //StatusPrinter.print(loggerContext);
-    checker.assertIsErrorFree();
+    StatusPrinter.print(loggerContext);
+    if (errorFreeness == MUST_BE_ERROR_FREE) {
+      assertTrue(checker.isErrorFree(0));
+    } else {
+      assertFalse(checker.isErrorFree(0));
+    }
 
     int effectiveResets = checker
             .matchCount(CoreConstants.RESET_MSG_PREFIX);
@@ -295,7 +260,7 @@ public class ReconfigureOnChangeTest {
 
     // there might be more effective resets than the expected amount
     // since the harness may be sleeping while a reset occurs
-    assertTrue(failMsg, expected <= effectiveResets && (expected + 2) >= effectiveResets);
+    assertTrue(failMsg, expected <= effectiveResets && (expected +2) >= effectiveResets);
 
   }
 
@@ -309,9 +274,8 @@ public class ReconfigureOnChangeTest {
   }
 
   @Test
-  @Ignore
   public void directPerfTest() throws MalformedURLException {
-    if (EnvUtilForTests.isLinux()) {
+    if (Env.isLinux()) {
       // for some reason this test does not pass on Linux (AMD 64 bit,
       // Dual Core Opteron 170)
       return;
@@ -325,6 +289,9 @@ public class ReconfigureOnChangeTest {
     }
     double avg = directLoop(rocf);
     System.out.println("directPerfTest: " + avg);
+    // the reference was computed on Orion (Ceki's computer)
+    long referencePerf = 18;
+    BogoPerf.assertDuration(avg, referencePerf, CoreConstants.REFERENCE_BIPS);
   }
 
   public double directLoop(ReconfigureOnChangeFilter rocf) {
@@ -336,10 +303,9 @@ public class ReconfigureOnChangeTest {
     return (end - start) / (1.0d * LOOP_LEN);
   }
 
-  @Ignore
   @Test
   public void indirectPerfTest() throws MalformedURLException {
-    if (EnvUtilForTests.isLinux()) {
+    if (Env.isLinux()) {
       // for some reason this test does not pass on Linux (AMD 64 bit,
       // Dual Core
       // Opteron 170)
@@ -410,7 +376,7 @@ public class ReconfigureOnChangeTest {
             break;
           case MALFORMED:
             try {
-              malformedUpdate();
+              malformedUpdate(counter);
             } catch (IOException e) {
               e.printStackTrace();
               fail("malformedUpdate failed");
@@ -418,7 +384,7 @@ public class ReconfigureOnChangeTest {
             break;
           case MALFORMED_INNER:
             try {
-              malformedInnerUpdate();
+              malformedInnerUpdate(counter);
             } catch (IOException e) {
               e.printStackTrace();
               fail("malformedInnerUpdate failed");
@@ -427,13 +393,13 @@ public class ReconfigureOnChangeTest {
       }
     }
 
-    private void malformedUpdate() throws IOException {
+    private void malformedUpdate(long counter) throws IOException {
       writeToFile(configFile, "<configuration scan=\"true\" scanPeriod=\"50 millisecond\">\n" +
               "  <root level=\"ERROR\">\n" +
               "</configuration>");
     }
 
-    private void malformedInnerUpdate() throws IOException {
+    private void malformedInnerUpdate(long counter)  throws IOException {
       writeToFile(configFile, "<included>\n" +
               "  <root>\n" +
               "</included>");
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/ReconfigurePerf.java b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/ReconfigurePerf.java
index 241548a..37eb351 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/ReconfigurePerf.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/ReconfigurePerf.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -16,7 +16,6 @@ package ch.qos.logback.classic.turbo;
 import java.io.File;
 import java.io.IOException;
 
-import ch.qos.logback.core.testUtil.EnvUtilForTests;
 import org.junit.Before;
 import org.junit.Ignore;
 import org.junit.Test;
@@ -29,6 +28,7 @@ import ch.qos.logback.classic.joran.JoranConfigurator;
 import ch.qos.logback.core.contention.MultiThreadedHarness;
 import ch.qos.logback.core.contention.RunnableWithCounterAndDone;
 import ch.qos.logback.core.joran.spi.JoranException;
+import ch.qos.logback.core.testUtil.Env;
 
 @Ignore
 public class ReconfigurePerf {
@@ -57,7 +57,7 @@ public class ReconfigurePerf {
   @Before
   public void setUp() {
     // take into account propagation latency occurs on Linux
-    if (EnvUtilForTests.isLinux()) {
+    if (Env.isLinux()) {
       sleepBetweenUpdates = 850;
       totalTestDuration = sleepBetweenUpdates * numberOfCycles;
     } else {
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/lru/Event.java b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/lru/Event.java
index f459785..a6e41a6 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/lru/Event.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/lru/Event.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/lru/LRUCache.java b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/lru/LRUCache.java
index 5dc53d1..12b5570 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/lru/LRUCache.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/lru/LRUCache.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/lru/LRUCacheTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/lru/LRUCacheTest.java
index f367301..13c0120 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/lru/LRUCacheTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/lru/LRUCacheTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/lru/Simulator.java b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/lru/Simulator.java
index 72bb879..f305884 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/lru/Simulator.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/lru/Simulator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/lru/T_Entry.java b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/lru/T_Entry.java
index dd9bcf3..4189712 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/lru/T_Entry.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/lru/T_Entry.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/lru/T_LRUCache.java b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/lru/T_LRUCache.java
index 23fdfd6..bc9101d 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/lru/T_LRUCache.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/lru/T_LRUCache.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/lru/X_LRUCache.java b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/lru/X_LRUCache.java
index 33572fa..6f278a3 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/lru/X_LRUCache.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/lru/X_LRUCache.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/util/ContextInitializerAutoConfigTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/util/ContextInitializerAutoConfigTest.java
deleted file mode 100644
index c294c6c..0000000
--- a/logback-classic/src/test/java/ch/qos/logback/classic/util/ContextInitializerAutoConfigTest.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.util;
-
-import ch.qos.logback.classic.Logger;
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.core.Appender;
-import ch.qos.logback.core.ConsoleAppender;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.slf4j.LoggerFactory;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-public class ContextInitializerAutoConfigTest {
-
-  org.slf4j.Logger logger = LoggerFactory.getLogger(this.getClass());
-  Logger root = (Logger) LoggerFactory.getLogger("root");
-
-  @Before
-  public void setUp() throws Exception {
-    logger.debug("Hello-didily-odily");
-  }
-
-  @After
-  public void tearDown() throws Exception {
-    System.clearProperty(ContextInitializer.CONFIG_FILE_PROPERTY);
-    System.clearProperty(ContextInitializer.STATUS_LISTENER_CLASS);
-  }
-
-  @Test
-  @Ignore
-  // this test works only if logback-test.xml or logback.xml files are on the classpath.
-  // However, this is something we try to avoid in order to simplify the life
-  // of users trying to follows the manual and logback-examples from an IDE
-  public void autoconfig() {
-    LoggerContext iLoggerFactory = (LoggerContext) LoggerFactory.getILoggerFactory();
-    iLoggerFactory.reset();
-    Appender<ILoggingEvent> appender = root.getAppender("STDOUT");
-    assertNotNull(appender);
-    assertTrue(appender instanceof ConsoleAppender);
-  }
-}
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/util/ContextInitializerTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/util/ContextInitializerTest.java
index b96b728..71af9da 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/util/ContextInitializerTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/util/ContextInitializerTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -18,17 +18,13 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
 
-import java.net.MalformedURLException;
-import java.net.URL;
 import java.util.List;
 
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Ignore;
 import org.junit.Test;
-import org.slf4j.ILoggerFactory;
 import org.slf4j.LoggerFactory;
 
 import ch.qos.logback.classic.ClassicTestConstants;
@@ -37,44 +33,53 @@ import ch.qos.logback.classic.LoggerContext;
 import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.Appender;
 import ch.qos.logback.core.ConsoleAppender;
-import ch.qos.logback.core.CoreConstants;
-import ch.qos.logback.core.LogbackException;
 import ch.qos.logback.core.joran.spi.JoranException;
 import ch.qos.logback.core.status.StatusListener;
 import ch.qos.logback.core.status.TrivialStatusListener;
-import sun.security.jca.ProviderList;
-import ch.qos.logback.core.util.Loader;
 
 public class ContextInitializerTest {
 
-  LoggerContext loggerContext = new LoggerContext();
-  Logger root = loggerContext.getLogger(Logger.ROOT_LOGGER_NAME);
+  org.slf4j.Logger logger = LoggerFactory.getLogger(ContextInitializerTest.class);
+  LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
+  Logger root = (Logger) LoggerFactory.getLogger("root");
 
   @Before
   public void setUp() throws Exception {
+    logger.debug("Hello-didily-odily");
   }
 
   @After
   public void tearDown() throws Exception {
     System.clearProperty(ContextInitializer.CONFIG_FILE_PROPERTY);
     System.clearProperty(ContextInitializer.STATUS_LISTENER_CLASS);
+    lc.reset(); // we are going to need this context
   }
 
+  @Test
+  @Ignore
+  // this test works only if logback-test.xml or logback.xml files are on the classpath. 
+  // However, this is something we try to avoid in order to simplify the life
+  // of users trying to follows the manual and logback-examples from an IDE
+  public void atoconfig() {
+    Appender<ILoggingEvent> appender = root.getAppender("STDOUT");
+    assertNotNull(appender);
+    assertTrue(appender instanceof ConsoleAppender);
+  }
 
   @Test
   @Ignore  
   // this test works only if logback-test.xml or logback.xml files are on the classpath. 
   // However, this is something we try to avoid in order to simplify the life
-  // of users trying to follow the manual and logback-examples from an IDE
+  // of users trying to follows the manual and logback-examples from an IDE
   public void reset() throws JoranException {
     {
-      new ContextInitializer(loggerContext).autoConfig();
+      new ContextInitializer(lc).autoConfig();
       Appender appender = root.getAppender("STDOUT");
       assertNotNull(appender);
       assertTrue(appender instanceof ConsoleAppender);
     }
     {
-      loggerContext.stop();
+      lc.stop();
       Appender<ILoggingEvent> appender = root.getAppender("STDOUT");
       assertNull(appender);
     }
@@ -91,7 +96,7 @@ public class ContextInitializerTest {
   public void doAutoConfigFromSystemProperties(String val) throws JoranException {
     //lc.reset();
     System.setProperty(ContextInitializer.CONFIG_FILE_PROPERTY, val);
-    new ContextInitializer(loggerContext).autoConfig();
+    new ContextInitializer(lc).autoConfig();
     Appender<ILoggingEvent> appender = root.getAppender("AUTO_BY_SYSTEM_PROPERTY");
     assertNotNull(appender);
   }
@@ -99,61 +104,20 @@ public class ContextInitializerTest {
   @Test
   public void autoStatusListener() throws JoranException {
     System.setProperty(ContextInitializer.STATUS_LISTENER_CLASS, TrivialStatusListener.class.getName());
-    List<StatusListener> statusListenerList = loggerContext.getStatusManager().getCopyOfStatusListenerList();
-    assertEquals(0, statusListenerList.size());
+    List<StatusListener> sll = lc.getStatusManager().getCopyOfStatusListenerList();
+    assertEquals(0, sll.size());
     doAutoConfigFromSystemProperties(ClassicTestConstants.INPUT_PREFIX + "autoConfig.xml");
-    statusListenerList = loggerContext.getStatusManager().getCopyOfStatusListenerList();
-    assertTrue(statusListenerList.size() +" should be 1", statusListenerList.size() == 1);
-    // LOGBACK-767
-    TrivialStatusListener tsl = (TrivialStatusListener) statusListenerList.get(0);
-    assertTrue("expecting at least one event in list", tsl.list.size() > 0);
+    sll = lc.getStatusManager().getCopyOfStatusListenerList();
+    assertTrue(sll.size() +" should be 1", sll.size() == 1);
   }
   
   @Test
   public void autoOnConsoleStatusListener() throws JoranException {
     System.setProperty(ContextInitializer.STATUS_LISTENER_CLASS,  ContextInitializer.SYSOUT);
-    List<StatusListener> sll = loggerContext.getStatusManager().getCopyOfStatusListenerList();
+    List<StatusListener> sll = lc.getStatusManager().getCopyOfStatusListenerList();
     assertEquals(0, sll.size());
     doAutoConfigFromSystemProperties(ClassicTestConstants.INPUT_PREFIX + "autoConfig.xml");
-    sll = loggerContext.getStatusManager().getCopyOfStatusListenerList();
+    sll = lc.getStatusManager().getCopyOfStatusListenerList();
     assertTrue(sll.size() +" should be 1", sll.size() == 1);
   }
-
-  @Test
-  public void shouldConfigureFromXmlFile() throws MalformedURLException, JoranException {
-    LoggerContext loggerContext = new LoggerContext();
-    ContextInitializer initializer = new ContextInitializer(loggerContext);
-    assertNull(loggerContext.getObject(CoreConstants.SAFE_JORAN_CONFIGURATION));
-
-    URL configurationFileUrl = Loader.getResource("BOO_logback-test.xml", Thread.currentThread().getContextClassLoader());
-    initializer.configureByResource(configurationFileUrl);
-
-    assertNotNull(loggerContext.getObject(CoreConstants.SAFE_JORAN_CONFIGURATION));
-  }
-
-  @Test
-  public void shouldConfigureFromGroovyScript() throws MalformedURLException, JoranException {
-    LoggerContext loggerContext = new LoggerContext();
-    ContextInitializer initializer = new ContextInitializer(loggerContext);
-    assertNull(loggerContext.getObject(CoreConstants.CONFIGURATION_WATCH_LIST));
-
-    URL configurationFileUrl = Loader.getResource("test.groovy", Thread.currentThread().getContextClassLoader());
-    initializer.configureByResource(configurationFileUrl);
-
-    assertNotNull(loggerContext.getObject(CoreConstants.CONFIGURATION_WATCH_LIST));
-  }
-
-  @Test
-  public void shouldThrowExceptionIfUnexpectedConfigurationFileExtension() throws JoranException {
-    LoggerContext loggerContext = new LoggerContext();
-    ContextInitializer initializer = new ContextInitializer(loggerContext);
-
-    URL configurationFileUrl = Loader.getResource("README.txt", Thread.currentThread().getContextClassLoader());
-    try {
-      initializer.configureByResource(configurationFileUrl);
-      fail("Should throw LogbackException");
-    } catch (LogbackException expectedException) {
-      // pass
-    }
-  }
 }
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/util/InitializationIntegrationTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/util/InitializationIntegrationTest.java
index 2f2a27c..ebd5a19 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/util/InitializationIntegrationTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/util/InitializationIntegrationTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -14,9 +14,7 @@
 package ch.qos.logback.classic.util;
 
 import ch.qos.logback.classic.Logger;
-import ch.qos.logback.classic.LoggerContext;
 import ch.qos.logback.core.read.ListAppender;
-import ch.qos.logback.core.util.StatusPrinter;
 import org.junit.Test;
 import org.slf4j.LoggerFactory;
 
@@ -27,11 +25,16 @@ import static org.junit.Assert.assertNotNull;
  */
 public class InitializationIntegrationTest {
 
+
+
   @Test
   public void smoke() {
     Logger logger = (Logger) LoggerFactory.getLogger(this.getClass());
     Logger root = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
+    //StatusPrinter.print((LoggerContext)LoggerFactory.getILoggerFactory());
     ListAppender la = (ListAppender) root.getAppender("LIST");
     assertNotNull(la);
   }
+
+
 }
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/util/LevelToSyslogSeverityTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/util/LevelToSyslogSeverityTest.java
index 0fa6e46..ffdbd27 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/util/LevelToSyslogSeverityTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/util/LevelToSyslogSeverityTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/util/LogbackMDCAdapterTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/util/LogbackMDCAdapterTest.java
index b0211e0..26d4090 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/util/LogbackMDCAdapterTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/util/LogbackMDCAdapterTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/util/LoggerNameUtilTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/util/LoggerNameUtilTest.java
deleted file mode 100644
index d64ffdc..0000000
--- a/logback-classic/src/test/java/ch/qos/logback/classic/util/LoggerNameUtilTest.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.util;
-
-import org.junit.Test;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-
-public class LoggerNameUtilTest {
-
-
-  @Test
-  public void smoke0() {
-    List<String> witnessList = new ArrayList<String>();
-    witnessList.add("a");
-    witnessList.add("b");
-    witnessList.add("c");
-    List<String> partList = LoggerNameUtil.computeNameParts("a.b.c");
-    assertEquals(witnessList, partList);
-  }
-
-  @Test
-  public void smoke1() {
-    List<String> witnessList = new ArrayList<String>();
-    witnessList.add("com");
-    witnessList.add("foo");
-    witnessList.add("Bar");
-    List<String> partList = LoggerNameUtil.computeNameParts("com.foo.Bar");
-    assertEquals(witnessList, partList);
-  }
-
-  @Test
-  public void emptyStringShouldReturnAListContainingOneEmptyString() {
-    List<String> witnessList = new ArrayList<String>();
-    witnessList.add("");
-    List<String> partList = LoggerNameUtil.computeNameParts("");
-    assertEquals(witnessList, partList);
-  }
-
-  @Test
-  public void dotAtLastPositionShouldReturnAListWithAnEmptyStringAsLastElement() {
-    List<String> witnessList = new ArrayList<String>();
-    witnessList.add("com");
-    witnessList.add("foo");
-    witnessList.add("");
-
-    List<String> partList = LoggerNameUtil.computeNameParts("com.foo.");
-    assertEquals(witnessList, partList);
-  }
-
-  @Test
-  public void supportNestedClasses() {
-    List<String> witnessList = new ArrayList<String>();
-    witnessList.add("com");
-    witnessList.add("foo");
-    witnessList.add("Bar");
-    witnessList.add("Nested");
-
-    List<String> partList = LoggerNameUtil.computeNameParts("com.foo.Bar$Nested");
-    assertEquals(witnessList, partList);
-  }
-
-  @Test
-  public void supportNestedClassesWithNestedDot() {
-    //LOGBACK-384
-    List<String> witnessList = new ArrayList<String>();
-    witnessList.add("com");
-    witnessList.add("foo");
-    witnessList.add("Bar");
-    witnessList.add("Nested");
-    witnessList.add("dot");
-
-    List<String> partList = LoggerNameUtil.computeNameParts("com.foo.Bar$Nested.dot");
-    assertEquals(witnessList, partList);
-  }
-
-  @Test
-  public void supportNestedClassesAtBeginning() {
-    List<String> witnessList = new ArrayList<String>();
-    witnessList.add("foo");
-    witnessList.add("Nested");
-    witnessList.add("bar");
-
-    List<String> partList = LoggerNameUtil.computeNameParts("foo$Nested.bar");
-    assertEquals(witnessList, partList);
-  }
-
-}
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/util/MockInitialContext.java b/logback-classic/src/test/java/ch/qos/logback/classic/util/MockInitialContext.java
index 4637eb9..539444a 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/util/MockInitialContext.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/util/MockInitialContext.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/util/MockInitialContextFactory.java b/logback-classic/src/test/java/ch/qos/logback/classic/util/MockInitialContextFactory.java
index 6e1d17b..b8325db 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/util/MockInitialContextFactory.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/util/MockInitialContextFactory.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/util/PackageTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/util/PackageTest.java
index 0ff9b35..04b6d95 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/util/PackageTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/util/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -19,8 +19,7 @@ import org.junit.runners.Suite;
 import org.junit.runners.Suite.SuiteClasses;
 
 @RunWith(Suite.class)
- at SuiteClasses({ContextInitializerTest.class, ContextInitializerAutoConfigTest.class,
-        LogbackMDCAdapterTest.class, LevelToSyslogSeverityTest.class})
+ at SuiteClasses({ContextInitializerTest.class, LogbackMDCAdapterTest.class, LevelToSyslogSeverityTest.class} )
 
 public class PackageTest {
 }
\ No newline at end of file
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/util/TeztHelper.java b/logback-classic/src/test/java/ch/qos/logback/classic/util/TeztHelper.java
index b659511..9874926 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/util/TeztHelper.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/util/TeztHelper.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,33 +13,9 @@
  */
 package ch.qos.logback.classic.util;
 
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
 public class TeztHelper {
 
-  private static final Method ADD_SUPPRESSED_METHOD;
-
-  static {
-    Method method = null;
-    try {
-      method = Throwable.class.getMethod("addSuppressed", Throwable.class);
-    } catch (NoSuchMethodException e) {
-      // ignore, will get thrown in Java < 7
-    }
-    ADD_SUPPRESSED_METHOD = method;
-  }
-
-  public static boolean suppressedSupported() {
-    return ADD_SUPPRESSED_METHOD != null;
-  }
-
-  public static void addSuppressed(Throwable outer, Throwable suppressed) throws InvocationTargetException, IllegalAccessException {
-    if(suppressedSupported()) {
-      ADD_SUPPRESSED_METHOD.invoke(outer, suppressed);
-    }
-  }
-
+  
   static public Throwable makeNestedException(int level) {
     if (level == 0) {
       return new Exception("nesting level=" + level);
diff --git a/logback-classic/src/test/java/integrator/Activator.java b/logback-classic/src/test/java/integrator/Activator.java
index 14a658e..ef07695 100644
--- a/logback-classic/src/test/java/integrator/Activator.java
+++ b/logback-classic/src/test/java/integrator/Activator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/org/dummy/DummyLBAppender.java b/logback-classic/src/test/java/org/dummy/DummyLBAppender.java
index ec5b0ab..c51c0f6 100644
--- a/logback-classic/src/test/java/org/dummy/DummyLBAppender.java
+++ b/logback-classic/src/test/java/org/dummy/DummyLBAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/org/dummy/Log4jInvocation.java b/logback-classic/src/test/java/org/dummy/Log4jInvocation.java
index 1d72ce5..ff864d6 100644
--- a/logback-classic/src/test/java/org/dummy/Log4jInvocation.java
+++ b/logback-classic/src/test/java/org/dummy/Log4jInvocation.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/org/slf4j/LoggerFactoryFriend.java b/logback-classic/src/test/java/org/slf4j/LoggerFactoryFriend.java
index d50cf85..5c279fc 100644
--- a/logback-classic/src/test/java/org/slf4j/LoggerFactoryFriend.java
+++ b/logback-classic/src/test/java/org/slf4j/LoggerFactoryFriend.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/org/slf4j/impl/InitializationOutputTest.java b/logback-classic/src/test/java/org/slf4j/impl/InitializationOutputTest.java
deleted file mode 100644
index ed3d335..0000000
--- a/logback-classic/src/test/java/org/slf4j/impl/InitializationOutputTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package org.slf4j.impl;
-
-import ch.qos.logback.classic.ClassicTestConstants;
-import ch.qos.logback.classic.util.ContextInitializer;
-import ch.qos.logback.core.status.NopStatusListener;
-import ch.qos.logback.core.testUtil.RandomUtil;
-import ch.qos.logback.core.util.TeeOutputStream;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.PrintStream;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-/**
- * @author Ceki Gücü
- */
-public class InitializationOutputTest {
-
-  int diff = RandomUtil.getPositiveInt();
-
-  TeeOutputStream tee;
-  PrintStream original;
-
-  @Before
-  public void setUp()  {
-    original = System.out;
-    // tee will output bytes on System out but it will also
-    // collect them so that the output can be compared against
-    // some expected output data
-
-    // keep the console quiet
-    tee = new TeeOutputStream(null);
-
-    // redirect System.out to tee
-    System.setOut(new PrintStream(tee));
-  }
-
-  @After
-  public void tearDown()  {
-    System.setOut(original);
-    System.clearProperty(ContextInitializer.CONFIG_FILE_PROPERTY);
-    System.clearProperty(ContextInitializer.STATUS_LISTENER_CLASS);
-  }
-
-
-  @Test
-  public void noOutputIfContextHasAStatusListener() {
-    System.setProperty(ContextInitializer.CONFIG_FILE_PROPERTY, ClassicTestConstants.INPUT_PREFIX + "issue/logback292.xml");
-    System.setProperty(ContextInitializer.STATUS_LISTENER_CLASS, NopStatusListener.class.getName());
-
-    StaticLoggerBinderFriend.reset();
-    assertEquals(0, tee.baos.size());
-  }
-
-}
diff --git a/logback-classic/src/test/java/org/slf4j/impl/PackageTest.java b/logback-classic/src/test/java/org/slf4j/impl/PackageTest.java
index 9c718e2..8d85819 100644
--- a/logback-classic/src/test/java/org/slf4j/impl/PackageTest.java
+++ b/logback-classic/src/test/java/org/slf4j/impl/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -20,7 +20,7 @@ import org.junit.runners.Suite.SuiteClasses;
 import ch.qos.logback.classic.LoggerPerfTest;
 
 @RunWith(Suite.class)
- at SuiteClasses( { RecursiveInitializationTest.class, LoggerPerfTest.class, InitializationOutputTest.class})
+ at SuiteClasses( { RecursiveInitializationTest.class, LoggerPerfTest.class})
 public class PackageTest {
 
 }
\ No newline at end of file
diff --git a/logback-classic/src/test/java/org/slf4j/impl/RecursiveInitializationTest.java b/logback-classic/src/test/java/org/slf4j/impl/RecursiveInitializationTest.java
index 1b8afc5..7596960 100644
--- a/logback-classic/src/test/java/org/slf4j/impl/RecursiveInitializationTest.java
+++ b/logback-classic/src/test/java/org/slf4j/impl/RecursiveInitializationTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/org/slf4j/impl/RecursiveLBAppender.java b/logback-classic/src/test/java/org/slf4j/impl/RecursiveLBAppender.java
index 15785c5..9216528 100644
--- a/logback-classic/src/test/java/org/slf4j/impl/RecursiveLBAppender.java
+++ b/logback-classic/src/test/java/org/slf4j/impl/RecursiveLBAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/org/slf4j/impl/StaticLoggerBinderFriend.java b/logback-classic/src/test/java/org/slf4j/impl/StaticLoggerBinderFriend.java
index 3831d42..067fca1 100644
--- a/logback-classic/src/test/java/org/slf4j/impl/StaticLoggerBinderFriend.java
+++ b/logback-classic/src/test/java/org/slf4j/impl/StaticLoggerBinderFriend.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/org/slf4j/test_osgi/BundleTest.java b/logback-classic/src/test/java/org/slf4j/test_osgi/BundleTest.java
index 4a0c3b9..b71822a 100644
--- a/logback-classic/src/test/java/org/slf4j/test_osgi/BundleTest.java
+++ b/logback-classic/src/test/java/org/slf4j/test_osgi/BundleTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/org/slf4j/test_osgi/CheckingBundleListener.java b/logback-classic/src/test/java/org/slf4j/test_osgi/CheckingBundleListener.java
index b1c71da..ee3c2c9 100644
--- a/logback-classic/src/test/java/org/slf4j/test_osgi/CheckingBundleListener.java
+++ b/logback-classic/src/test/java/org/slf4j/test_osgi/CheckingBundleListener.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/org/slf4j/test_osgi/FelixHost.java b/logback-classic/src/test/java/org/slf4j/test_osgi/FelixHost.java
index f535aa6..6139633 100644
--- a/logback-classic/src/test/java/org/slf4j/test_osgi/FelixHost.java
+++ b/logback-classic/src/test/java/org/slf4j/test_osgi/FelixHost.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/java/org/slf4j/test_osgi/FrameworkErrorListener.java b/logback-classic/src/test/java/org/slf4j/test_osgi/FrameworkErrorListener.java
index 3dd1f28..2311946 100644
--- a/logback-classic/src/test/java/org/slf4j/test_osgi/FrameworkErrorListener.java
+++ b/logback-classic/src/test/java/org/slf4j/test_osgi/FrameworkErrorListener.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-classic/src/test/resources/test.groovy b/logback-classic/src/test/resources/test.groovy
deleted file mode 100644
index 01ae2cd..0000000
--- a/logback-classic/src/test/resources/test.groovy
+++ /dev/null
@@ -1,15 +0,0 @@
-import ch.qos.logback.core.ConsoleAppender
-import ch.qos.logback.core.encoder.LayoutWrappingEncoder
-import ch.qos.logback.classic.PatternLayout
-import ch.qos.logback.classic.Level
-import ch.qos.logback.core.status.OnConsoleStatusListener
-import ch.qos.logback.classic.Logger
-
-appender("C", ConsoleAppender) {
-  encoder(LayoutWrappingEncoder) {
-    layout(PatternLayout) {
-      pattern = "%m%n"
-    }
-  }
-}
-root Level.WARN, ["C"]
diff --git a/logback-core/pom.xml b/logback-core/pom.xml
index 26e0693..02e4623 100644
--- a/logback-core/pom.xml
+++ b/logback-core/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>ch.qos.logback</groupId>
     <artifactId>logback-parent</artifactId>
-    <version>1.1.2</version>
+    <version>1.0.4</version>
   </parent>
 
   <artifactId>logback-core</artifactId>
@@ -17,9 +17,6 @@
 
   <url>http://logback.qos.ch</url>
 
-  <properties>
-    <!--<scala.version>2.9.1</scala.version>-->
-  </properties>
 
   <licenses>
     <license>
@@ -42,11 +39,13 @@
     </dependency>
 
     <dependency>
-      <groupId>org.fusesource.jansi</groupId>
-      <artifactId>jansi</artifactId>
-      <optional>true</optional>      
+      <groupId>org.codehaus.groovy</groupId>
+      <artifactId>groovy-all</artifactId>
+      <scope>compile</scope>
+      <optional>true</optional>
     </dependency>
 
+
     <dependency>
       <groupId>javax.mail</groupId>
       <artifactId>mail</artifactId>
@@ -61,13 +60,12 @@
     </dependency>
 
     <dependency>
-      <groupId>org.mockito</groupId>
-      <artifactId>mockito-core</artifactId>
-      <version>1.9.0</version>
+      <groupId>org.easymock</groupId>
+      <artifactId>easymock</artifactId>
+      <version>2.4</version>
       <scope>test</scope>
     </dependency>
 
-
     <dependency>
       <groupId>javax.servlet</groupId>
       <artifactId>servlet-api</artifactId>
@@ -75,12 +73,11 @@
       <optional>true</optional>
     </dependency>
 
-    <!--<dependency>-->
-      <!--<groupId>org.scala-lang</groupId>-->
-      <!--<artifactId>scala-library</artifactId>-->
-      <!--<version>${scala.version}</version>-->
-      <!--<scope>test</scope>-->
-    <!--</dependency>-->
+    <dependency>
+      <groupId>org.scala-lang</groupId>
+      <artifactId>scala-library</artifactId>
+      <scope>test</scope>
+    </dependency>
 
   </dependencies>
 
@@ -89,19 +86,44 @@
     <plugins>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <source>1.5</source>
+          <target>1.5</target>
+        </configuration>
+      </plugin>
+
+      <plugin>
+        <groupId>org.scala-tools</groupId>
+        <artifactId>maven-scala-plugin</artifactId>
+        <configuration>
+          <testSourceDir>src/test/scala</testSourceDir>
+        </configuration>
+        <executions>
+          <execution>
+            <id>scala-test-compile</id>
+            <phase>process-test-resources</phase>
+            <goals>
+              <goal>testCompile</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+
+
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
-        <version>${maven-surefire-plugin.version}</version>
         <configuration>
           <forkMode>once</forkMode>
           <reportFormat>plain</reportFormat>
-          <!--<parallel>classes</parallel>-->
+          <parallel>classes</parallel>
           <trimStackTrace>false</trimStackTrace>
           <excludes>
             <exclude>**/All*Test.java</exclude>
             <exclude>**/PackageTest.java</exclude>
-            <!-- ConsoleAppenderTest redirects System.out which is not well tolerated by Maven -->
             <exclude>**/ConsoleAppenderTest.java</exclude>
-            <!--<exclude>**/TimeBasedRollingTest.java</exclude>-->
+            <exclude>**/TimeBasedRollingTest.java</exclude>
           </excludes>
         </configuration>
       </plugin>
@@ -109,7 +131,6 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-jar-plugin</artifactId>
-        <version>${maven-jar-plugin.version}</version>
         <configuration>
           <archive>
             <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF
@@ -147,9 +168,7 @@
             <Import-Package>
               javax.*;resolution:=optional,
               org.xml.*;resolution:=optional,
-              org.fusesource.jansi;resolution:=optional,
               org.codehaus.janino;resolution:=optional,
-              org.codehaus.commons.compiler;resolution:=optional,
               *
             </Import-Package>
             <Bundle-RequiredExecutionEnvironment>J2SE-1.5
diff --git a/logback-core/src/main/java/ch/qos/logback/core/Appender.java b/logback-core/src/main/java/ch/qos/logback/core/Appender.java
index 6f28a8f..9c6fff5 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/Appender.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/Appender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/AppenderBase.java b/logback-core/src/main/java/ch/qos/logback/core/AppenderBase.java
index 23ede8e..c786b76 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/AppenderBase.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/AppenderBase.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/AsyncAppenderBase.java b/logback-core/src/main/java/ch/qos/logback/core/AsyncAppenderBase.java
index 64b9b2a..fe43734 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/AsyncAppenderBase.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/AsyncAppenderBase.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2012, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -96,9 +96,8 @@ public class AsyncAppenderBase<E> extends UnsynchronizedAppenderBase<E> implemen
     addInfo("Setting discardingThreshold to " + discardingThreshold);
     worker.setDaemon(true);
     worker.setName("AsyncAppender-Worker-" + worker.getName());
-    // make sure this instance is marked as "started" before staring the worker Thread
-    super.start();
     worker.start();
+    super.start();
   }
 
   @Override
@@ -106,7 +105,7 @@ public class AsyncAppenderBase<E> extends UnsynchronizedAppenderBase<E> implemen
     if (!isStarted())
       return;
 
-    // mark this appender as stopped so that Worker can also processPriorToRemoval if it is invoking aii.appendLoopOnAppenders
+    // mark this appender as stopped so that Worker can also stop if it is invoking aii.appendLoopOnAppenders
     // and sub-appenders consume the interruption
     super.stop();
 
diff --git a/logback-core/src/main/java/ch/qos/logback/core/BasicStatusManager.java b/logback-core/src/main/java/ch/qos/logback/core/BasicStatusManager.java
index b80dcba..c2346f2 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/BasicStatusManager.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/BasicStatusManager.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/ConsoleAppender.java b/logback-core/src/main/java/ch/qos/logback/core/ConsoleAppender.java
index 19a9e4e..8c71c18 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/ConsoleAppender.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/ConsoleAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,27 +13,20 @@
  */
 package ch.qos.logback.core;
 
-import java.io.IOException;
-import java.io.OutputStream;
 import java.util.Arrays;
 
 import ch.qos.logback.core.joran.spi.ConsoleTarget;
 import ch.qos.logback.core.status.Status;
 import ch.qos.logback.core.status.WarnStatus;
-import ch.qos.logback.core.util.DynamicClassLoadingException;
-import ch.qos.logback.core.util.EnvUtil;
-import ch.qos.logback.core.util.IncompatibleClassException;
-import ch.qos.logback.core.util.OptionHelper;
-import org.fusesource.jansi.WindowsAnsiOutputStream;
 
 /**
  * ConsoleAppender appends log events to <code>System.out</code> or
  * <code>System.err</code> using a layout specified by the user. The default
  * target is <code>System.out</code>.
- * <p/>
+ * 
  * For more information about this appender, please refer to the online manual
  * at http://logback.qos.ch/manual/appenders.html#ConsoleAppender
- *
+ * 
  * @author Ceki Gülcü
  * @author Tom SH Liu
  * @author Ruediger Dohna
@@ -42,9 +35,6 @@ import org.fusesource.jansi.WindowsAnsiOutputStream;
 public class ConsoleAppender<E> extends OutputStreamAppender<E> {
 
   protected ConsoleTarget target = ConsoleTarget.SystemOut;
-  protected boolean withJansi = false;
-
-  private final static String WindowsAnsiOutputStream_CLASS_NAME = "org.fusesource.jansi.WindowsAnsiOutputStream";
 
   /**
    * Sets the value of the <b>Target</b> option. Recognized values are
@@ -62,7 +52,7 @@ public class ConsoleAppender<E> extends OutputStreamAppender<E> {
   /**
    * Returns the current value of the <b>target</b> property. The default value
    * of the option is "System.out".
-   * <p/>
+   * 
    * See also {@link #setTarget}.
    */
   public String getTarget() {
@@ -71,50 +61,15 @@ public class ConsoleAppender<E> extends OutputStreamAppender<E> {
 
   private void targetWarn(String val) {
     Status status = new WarnStatus("[" + val + "] should be one of "
-            + Arrays.toString(ConsoleTarget.values()), this);
+        + Arrays.toString(ConsoleTarget.values()), this);
     status.add(new WarnStatus(
-            "Using previously set target, System.out by default.", this));
+        "Using previously set target, System.out by default.", this));
     addStatus(status);
   }
 
   @Override
   public void start() {
-    OutputStream targetStream = target.getStream();
-    // enable jansi only on Windows and only if withJansi set to true
-    if (EnvUtil.isWindows() && withJansi) {
-      targetStream = getTargetStreamForWindows(targetStream);
-    }
-    setOutputStream(targetStream);
+    setOutputStream(target.getStream());
     super.start();
   }
-
-  private OutputStream getTargetStreamForWindows(OutputStream targetStream) {
-    try {
-      addInfo("Enabling JANSI WindowsAnsiOutputStream for the console.");
-      Object windowsAnsiOutputStream = OptionHelper.instantiateByClassNameAndParameter(WindowsAnsiOutputStream_CLASS_NAME, Object.class, context,
-              OutputStream.class, targetStream);
-      return (OutputStream) windowsAnsiOutputStream;
-    } catch (Exception e) {
-      addWarn("Failed to create WindowsAnsiOutputStream. Falling back on the default stream.", e);
-    }
-    return targetStream;
-  }
-
-  /**
-   * @return
-   */
-  public boolean isWithJansi() {
-    return withJansi;
-  }
-
-  /**
-   * If true, this appender will output to a stream which
-   *
-   * @param withJansi
-   * @since 1.0.5
-   */
-  public void setWithJansi(boolean withJansi) {
-    this.withJansi = withJansi;
-  }
-
 }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/Context.java b/logback-core/src/main/java/ch/qos/logback/core/Context.java
index de972cd..7f44edb 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/Context.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/Context.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -16,7 +16,6 @@ package ch.qos.logback.core;
 import java.util.Map;
 import java.util.concurrent.ExecutorService;
 
-import ch.qos.logback.core.spi.LifeCycle;
 import ch.qos.logback.core.spi.PropertyContainer;
 import ch.qos.logback.core.status.StatusManager;
 
@@ -114,15 +113,4 @@ public interface Context extends PropertyContainer {
    * @since 1.0.0
    */
   ExecutorService getExecutorService();
-  
-  /**
-   * Register a component that participates in the context's life cycle.
-   * <p>
-   * All components registered via this method will be stopped and removed
-   * from the context when the context is reset.
-   * 
-   * @param component the subject component
-   */
-  void register(LifeCycle component);
-  
 }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/ContextBase.java b/logback-core/src/main/java/ch/qos/logback/core/ContextBase.java
index 04ee24a..6917f9c 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/ContextBase.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/ContextBase.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,18 +13,17 @@
  */
 package ch.qos.logback.core;
 
-import static ch.qos.logback.core.CoreConstants.CONTEXT_NAME_KEY;
-
 import java.util.HashMap;
 import java.util.Map;
-import java.util.concurrent.ExecutorService;
+import java.util.concurrent.*;
 
-import ch.qos.logback.core.spi.LifeCycle;
 import ch.qos.logback.core.spi.LogbackLock;
 import ch.qos.logback.core.status.StatusManager;
-import ch.qos.logback.core.util.ExecutorServiceUtil;
+import ch.qos.logback.core.util.EnvUtil;
+
+import static ch.qos.logback.core.CoreConstants.CONTEXT_NAME_KEY;
 
-public class ContextBase implements Context, LifeCycle {
+public class ContextBase implements Context {
 
   private long birthTime = System.currentTimeMillis();
 
@@ -38,10 +37,15 @@ public class ContextBase implements Context, LifeCycle {
 
   LogbackLock configurationLock = new LogbackLock();
 
-  private volatile ExecutorService executorService;
-  private LifeCycleManager lifeCycleManager;
-  private boolean started;
-  
+  // CORE_POOL_SIZE must be 1 for JDK 1.5. For JD 1.6 or higher it's set to 0
+  // so that there are no idle threads
+  private static final int CORE_POOL_SIZE = EnvUtil.isJDK5() ? 1 : 0;
+
+  // 0 (JDK 1,6+) or 1 (JDK 1.5) idle threads, 2 maximum threads, no idle waiting
+  ExecutorService executorService = new ThreadPoolExecutor(CORE_POOL_SIZE, 2,
+          0L, TimeUnit.MILLISECONDS,
+          new LinkedBlockingQueue<Runnable>());
+
   public StatusManager getStatusManager() {
     return sm;
   }
@@ -58,7 +62,7 @@ public class ContextBase implements Context, LifeCycle {
    */
   public void setStatusManager(StatusManager statusManager) {
     // this method was added in response to http://jira.qos.ch/browse/LBCORE-35
-    if (statusManager == null) {
+    if (sm == null) {
       throw new IllegalArgumentException("null StatusManager not allowed");
     }
     this.sm = statusManager;
@@ -98,29 +102,10 @@ public class ContextBase implements Context, LifeCycle {
     return name;
   }
 
-  public void start() {
-    // We'd like to create the executor service here, but we can't;
-    // ContextBase has not always implemented LifeCycle and there are *many*
-    // uses (mostly in tests) that would need to be modified.
-    started = true;
-  }
-  
-  public void stop() {
-    // We don't check "started" here, because the executor service uses
-    // lazy initialization, rather than being created in the start method
-    stopExecutorService();
-    started = false;
-  }
-
-  public boolean isStarted() {
-    return started;
-  }
-
   /**
    * Clear the internal objectMap and all properties.
    */
   public void reset() {
-    getLifeCycleManager().reset();
     propertyMap.clear();
     objectMap.clear();
   }
@@ -153,49 +138,11 @@ public class ContextBase implements Context, LifeCycle {
   }
 
   public ExecutorService getExecutorService() {
-    if (executorService == null) {
-      synchronized (this) {
-        if (executorService == null) {
-          executorService = ExecutorServiceUtil.newExecutorService();
-        }
-      }
-    }
-    return executorService; 
-  }
-
-  private synchronized void stopExecutorService() {
-    if (executorService != null) {
-      ExecutorServiceUtil.shutdown(executorService);
-      executorService = null;
-    }
-  }
-  
-  public void register(LifeCycle component) {
-    getLifeCycleManager().register(component);
+    return  executorService;
   }
 
-  /**
-   * Gets the life cycle manager for this context.
-   * <p>
-   * The default implementation lazily initializes an instance of
-   * {@link LifeCycleManager}.  Subclasses may override to provide a custom 
-   * manager implementation, but must take care to return the same manager
-   * object for each call to this method.
-   * <p>
-   * This is exposed primarily to support instrumentation for unit testing.
-   * 
-   * @return manager object 
-   */
-  synchronized LifeCycleManager getLifeCycleManager() {
-    if (lifeCycleManager == null) {
-      lifeCycleManager = new LifeCycleManager();
-    }
-    return lifeCycleManager;
-  }
-  
   @Override
   public String toString() {
     return name;
   }
-
 }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/CoreConstants.java b/logback-core/src/main/java/ch/qos/logback/core/CoreConstants.java
index 996cce3..8748413 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/CoreConstants.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/CoreConstants.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,24 +13,8 @@
  */
 package ch.qos.logback.core;
 
-import ch.qos.logback.core.util.EnvUtil;
-
 public class CoreConstants {
 
-  /**
-   * Number of idle threads to retain in a context's executor service.
-   */
-  // CORE_POOL_SIZE must be 1 for JDK 1.5. For JDK 1.6 or higher it's set to 0
-  // so that there are no idle threads
-  public static final int CORE_POOL_SIZE = EnvUtil.isJDK5() ? 1 : 0;
-
-  /**
-   * Maximum number of threads to allow in a context's executor service.
-   */
-  // if you need a different MAX_POOL_SIZE, please file create a jira issue
-  // asking to make MAX_POOL_SIZE a parameter.
-  public static final int MAX_POOL_SIZE = 32;
-
   // Note that the line.separator property can be looked up even by
   // applets.
   public static final String LINE_SEPARATOR = System.getProperty("line.separator");
@@ -56,7 +40,7 @@ public class CoreConstants {
   /**
    * Time format used in Common Log Format
    */
-  public static final String CLF_DATE_PATTERN = "dd/MMM/yyyy:HH:mm:ss Z";
+  public static final String CLF_DATE_PATTERN = "dd/MM/yyyy:HH:mm:ss Z";
 
   /**
    * The key used in locating the evaluator map in context's object map.
@@ -85,7 +69,7 @@ public class CoreConstants {
    */
   public static final Class<?>[] EMPTY_CLASS_ARRAY = new Class[]{};
   public static final String CAUSED_BY = "Caused by: ";
-  public static final String SUPPRESSED = "Suppressed: ";
+  public static final String SUPPRESSED = "\tSuppressed: ";
   public static final String WRAPPED_BY = "Wrapped by: ";
 
   public static final char PERCENT_CHAR = '%';
@@ -98,10 +82,6 @@ public class CoreConstants {
   public static final char COMMA_CHAR = ',';
   public static final char DOUBLE_QUOTE_CHAR = '"';
   public static final char SINGLE_QUOTE_CHAR = '\'';
-  public static final char COLON_CHAR = ':';
-  public static final char DASH_CHAR = '-';
-  public static final String DEFAULT_VALUE_SEPARATOR = ":-";
-
 
   /**
    * Number of rows before in an HTML table before,
@@ -152,27 +132,14 @@ public class CoreConstants {
   public static final String CONTEXT_NAME_KEY = "CONTEXT_NAME";
 
 
-  public static final int BYTES_PER_INT = 4;
+  public static int BYTES_PER_INT = 4;
   public static final int MILLIS_IN_ONE_SECOND = 1000;
   public static final int MILLIS_IN_ONE_MINUTE = MILLIS_IN_ONE_SECOND*60;
   public static final int MILLIS_IN_ONE_HOUR = MILLIS_IN_ONE_MINUTE*60;
   public static final int MILLIS_IN_ONE_DAY = MILLIS_IN_ONE_HOUR*24;
   public static final int MILLIS_IN_ONE_WEEK = MILLIS_IN_ONE_DAY*7;
 
-  /**
-   * The number of seconds to wait for compression jobs to finish.
-   */
-  public static final int SECONDS_TO_WAIT_FOR_COMPRESSION_JOBS = 30;
-
   public static final String CONTEXT_SCOPE_VALUE = "context";
 
   public static final String RESET_MSG_PREFIX = "Will reset and reconfigure context ";
-
-
-  public static final String JNDI_COMP_PREFIX = "java:comp/env";
-
-  public static final String UNDEFINED_PROPERTY_SUFFIX = "_IS_UNDEFINED";
-
-  public static final String LEFT_ACCOLADE = new String(new char[] {CURLY_LEFT});
-  public static final String RIGHT_ACCOLADE = new String(new char[] {CURLY_RIGHT});
 }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/FileAppender.java b/logback-core/src/main/java/ch/qos/logback/core/FileAppender.java
index 3f6c116..fa5cac8 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/FileAppender.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/FileAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -136,8 +136,7 @@ public class FileAppender<E> extends OutputStreamAppender<E> {
    *          The path to the log file.
    */
   public void openFile(String file_name) throws IOException {
-    lock.lock();
-    try {
+    synchronized (lock) {
       File file = new File(file_name);
       if (FileUtil.isParentDirectoryCreationRequired(file)) {
         boolean result = FileUtil.createMissingParentDirectories(file);
@@ -151,8 +150,6 @@ public class FileAppender<E> extends OutputStreamAppender<E> {
           file, append);
       resilientFos.setContext(context);
       setOutputStream(resilientFos);
-    } finally {
-      lock.unlock();
     }
   }
 
diff --git a/logback-core/src/main/java/ch/qos/logback/core/Layout.java b/logback-core/src/main/java/ch/qos/logback/core/Layout.java
index 50e1087..01b1340 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/Layout.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/Layout.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/LayoutBase.java b/logback-core/src/main/java/ch/qos/logback/core/LayoutBase.java
index daf1885..1049063 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/LayoutBase.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/LayoutBase.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/LifeCycleManager.java b/logback-core/src/main/java/ch/qos/logback/core/LifeCycleManager.java
deleted file mode 100644
index 10a3ac4..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/LifeCycleManager.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-
-package ch.qos.logback.core;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import ch.qos.logback.core.spi.LifeCycle;
-
-/**
- * An object that manages a collection of components that implement the
- * {@link LifeCycle} interface.  Each component that is added to the manager
- * will be stopped and removed from the manager when the manager is reset.
- *
- * @author Carl Harris
- */
-public class LifeCycleManager {
-
-  private final Set<LifeCycle> components = new HashSet<LifeCycle>();
-  
-  /**
-   * Registers a component with this manager.  
-   * <p>
-   * @param component the component whose life cycle is to be managed
-   */
-  public void register(LifeCycle component) {
-    components.add(component);
-  }
-  
-  /**
-   * Resets this manager.
-   * <p>
-   * All registered components are stopped and removed from the manager.
-   */
-  public void reset() {
-    for (LifeCycle component : components) {
-      if (component.isStarted()) {
-        component.stop();
-      }
-    }
-    components.clear();
-  }
- 
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/LogbackException.java b/logback-core/src/main/java/ch/qos/logback/core/LogbackException.java
index f713085..c5b2e8c 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/LogbackException.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/LogbackException.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/OutputStreamAppender.java b/logback-core/src/main/java/ch/qos/logback/core/OutputStreamAppender.java
index e2c8a6f..4db23e0 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/OutputStreamAppender.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/OutputStreamAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -17,10 +17,10 @@ import static ch.qos.logback.core.CoreConstants.CODES_URL;
 
 import java.io.IOException;
 import java.io.OutputStream;
-import java.util.concurrent.locks.ReentrantLock;
 
 import ch.qos.logback.core.encoder.Encoder;
 import ch.qos.logback.core.encoder.LayoutWrappingEncoder;
+import ch.qos.logback.core.spi.LogbackLock;
 import ch.qos.logback.core.spi.DeferredProcessingAware;
 import ch.qos.logback.core.status.ErrorStatus;
 
@@ -45,7 +45,7 @@ public class OutputStreamAppender<E> extends UnsynchronizedAppenderBase<E> {
   /**
    * All synchronization in this class is done via the lock object.
    */
-  protected final ReentrantLock lock = new ReentrantLock(true);
+  protected LogbackLock lock = new LogbackLock();
 
   /**
    * This is the {@link OutputStream outputStream} where output will be written.
@@ -111,12 +111,9 @@ public class OutputStreamAppender<E> extends UnsynchronizedAppenderBase<E> {
    * Stopped appenders cannot be reused.
    */
   public void stop() {
-    lock.lock();
-    try {
+    synchronized (lock) {
       closeOutputStream();
       super.stop();
-    } finally {
-      lock.unlock();
     }
   }
 
@@ -173,8 +170,7 @@ public class OutputStreamAppender<E> extends UnsynchronizedAppenderBase<E> {
    *          An already opened OutputStream.
    */
   public void setOutputStream(OutputStream outputStream) {
-    lock.lock();
-    try {
+    synchronized (lock) {
       // close any previously opened output stream
       closeOutputStream();
 
@@ -185,8 +181,6 @@ public class OutputStreamAppender<E> extends UnsynchronizedAppenderBase<E> {
       }
 
       encoderInit();
-    } finally {
-      lock.unlock();
     }
   }
 
@@ -214,11 +208,8 @@ public class OutputStreamAppender<E> extends UnsynchronizedAppenderBase<E> {
       // the synchronization prevents the OutputStream from being closed while we
       // are writing. It also prevents multiple threads from entering the same
       // converter. Converters assume that they are in a synchronized block.
-      lock.lock();
-      try {
+      synchronized (lock) {
         writeOut(event);
-      } finally {
-        lock.unlock();
       }
     } catch (IOException ioe) {
       // as soon as an exception occurs, move to non-started state
diff --git a/logback-core/src/main/java/ch/qos/logback/core/PropertyDefinerBase.java b/logback-core/src/main/java/ch/qos/logback/core/PropertyDefinerBase.java
index 12c1345..58f0bca 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/PropertyDefinerBase.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/PropertyDefinerBase.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -17,14 +17,10 @@ import ch.qos.logback.core.spi.ContextAwareBase;
 import ch.qos.logback.core.spi.PropertyDefiner;
 
 /**
- * A skeleton implementation for property definers so that they derive from {@link ContextAwareBase}.
+ * Set a skeleton implementation for property definers
+ * just for have ContextAwareBase.
  *  
  * @author Aleksey Didik
  */
 public abstract class PropertyDefinerBase extends ContextAwareBase implements PropertyDefiner {
-
-  static protected String booleanAsStr(boolean bool) {
-    return bool ? Boolean.TRUE.toString() : Boolean.FALSE.toString();
-  }
-
 }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/UnsynchronizedAppenderBase.java b/logback-core/src/main/java/ch/qos/logback/core/UnsynchronizedAppenderBase.java
index cb83088..cbdbfed 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/UnsynchronizedAppenderBase.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/UnsynchronizedAppenderBase.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/boolex/EvaluationException.java b/logback-core/src/main/java/ch/qos/logback/core/boolex/EvaluationException.java
index 541e46c..2ecd84e 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/boolex/EvaluationException.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/boolex/EvaluationException.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/boolex/EventEvaluator.java b/logback-core/src/main/java/ch/qos/logback/core/boolex/EventEvaluator.java
index b2c3e66..be37515 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/boolex/EventEvaluator.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/boolex/EventEvaluator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/boolex/EventEvaluatorBase.java b/logback-core/src/main/java/ch/qos/logback/core/boolex/EventEvaluatorBase.java
index 2d0c548..181cb1e 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/boolex/EventEvaluatorBase.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/boolex/EventEvaluatorBase.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/boolex/JaninoEventEvaluatorBase.java b/logback-core/src/main/java/ch/qos/logback/core/boolex/JaninoEventEvaluatorBase.java
index dcb68f3..22903d8 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/boolex/JaninoEventEvaluatorBase.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/boolex/JaninoEventEvaluatorBase.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -27,8 +27,8 @@ import org.codehaus.janino.ScriptEvaluator;
  */
 abstract public class JaninoEventEvaluatorBase<E> extends EventEvaluatorBase<E> {
 
-  static Class<?> EXPRESSION_TYPE = boolean.class;
-  static Class<?>[] THROWN_EXCEPTIONS = new Class[1];
+  static Class EXPRESSION_TYPE = boolean.class;
+  static Class[] THROWN_EXCEPTIONS = new Class[1];
 
   static public final int ERROR_THRESHOLD = 4;
   static {
@@ -44,7 +44,7 @@ abstract public class JaninoEventEvaluatorBase<E> extends EventEvaluatorBase<E>
 
   abstract protected String[] getParameterNames();
 
-  abstract protected Class<?>[] getParameterTypes();
+  abstract protected Class[] getParameterTypes();
 
   abstract protected Object[] getParameterValues(E event);
 
@@ -93,7 +93,7 @@ abstract public class JaninoEventEvaluatorBase<E> extends EventEvaluatorBase<E>
     matcherList.add(matcher);
   }
 
-  public List<Matcher> getMatcherList() {
+  public List getMatcherList() {
     return matcherList;
   }
 }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/boolex/Matcher.java b/logback-core/src/main/java/ch/qos/logback/core/boolex/Matcher.java
index 59a83a5..f3ca1ea 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/boolex/Matcher.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/boolex/Matcher.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/db/BindDataSourceToJNDIAction.java b/logback-core/src/main/java/ch/qos/logback/core/db/BindDataSourceToJNDIAction.java
index 3712e9a..5fdac7c 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/db/BindDataSourceToJNDIAction.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/db/BindDataSourceToJNDIAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/db/ConnectionSource.java b/logback-core/src/main/java/ch/qos/logback/core/db/ConnectionSource.java
index 0bfa5e5..7c4b1aa 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/db/ConnectionSource.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/db/ConnectionSource.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/db/ConnectionSourceBase.java b/logback-core/src/main/java/ch/qos/logback/core/db/ConnectionSourceBase.java
index 8534746..3d5b62a 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/db/ConnectionSourceBase.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/db/ConnectionSourceBase.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -32,7 +32,7 @@ public abstract class ConnectionSourceBase extends ContextAwareBase implements C
   private String user = null;
   private String password = null;
 
-  // initially we have an unknown dialect
+  // initially we have an unkonw dialect
   private SQLDialectCode dialectCode = SQLDialectCode.UNKNOWN_DIALECT;
   private boolean supportsGetGeneratedKeys = false;
   private boolean supportsBatchUpdates = false;
@@ -42,10 +42,9 @@ public abstract class ConnectionSourceBase extends ContextAwareBase implements C
    * Learn relevant information about this connection source.
    *
    */
-  public void discoverConnectionProperties() {
-    Connection connection = null;
+  public void discoverConnnectionProperties() {
     try {
-      connection = getConnection();
+      Connection connection = getConnection();
       if (connection == null) {
         addWarn("Could not get a connection");
         return;
@@ -62,8 +61,6 @@ public abstract class ConnectionSourceBase extends ContextAwareBase implements C
       
     } catch (SQLException se) {
       addWarn("Could not discover the dialect to use.", se);
-    } finally {
-      DBHelper.closeConnection(connection);
     }
   }
 
diff --git a/logback-core/src/main/java/ch/qos/logback/core/db/DBAppenderBase.java b/logback-core/src/main/java/ch/qos/logback/core/db/DBAppenderBase.java
index c849af4..e6e3962 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/db/DBAppenderBase.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/db/DBAppenderBase.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -85,10 +85,10 @@ public abstract class DBAppenderBase<E> extends UnsynchronizedAppenderBase<E> {
   @Override
   public void append(E eventObject) {
     Connection connection = null;
-    PreparedStatement insertStatement = null;
     try {
       connection = connectionSource.getConnection();
       connection.setAutoCommit(false);
+      PreparedStatement insertStatement;
 
       if (cnxSupportsGetGeneratedKeys) {
         String EVENT_ID_COL_NAME = "EVENT_ID";
@@ -110,11 +110,13 @@ public abstract class DBAppenderBase<E> extends UnsynchronizedAppenderBase<E> {
       }
       secondarySubAppend(eventObject, connection, eventId);
 
+      // we no longer need the insertStatement
+      close(insertStatement);
+
       connection.commit();
     } catch (Throwable sqle) {
       addError("problem appending event", sqle);
     } finally {
-      DBHelper.closeStatement(insertStatement);
       DBHelper.closeConnection(connection);
     }
   }
@@ -129,46 +131,47 @@ public abstract class DBAppenderBase<E> extends UnsynchronizedAppenderBase<E> {
       Connection connection) throws SQLException, InvocationTargetException {
     ResultSet rs = null;
     Statement idStatement = null;
-    try {
-      boolean gotGeneratedKeys = false;
-      if (cnxSupportsGetGeneratedKeys) {
-        try {
-          rs = (ResultSet) getGeneratedKeysMethod().invoke(insertStatement,
-              (Object[]) null);
-          gotGeneratedKeys = true;
-        } catch (InvocationTargetException ex) {
-          Throwable target = ex.getTargetException();
-          if (target instanceof SQLException) {
-            throw (SQLException) target;
-          }
-          throw ex;
-        } catch (IllegalAccessException ex) {
-          addWarn(
-              "IllegalAccessException invoking PreparedStatement.getGeneratedKeys",
-              ex);
+    boolean gotGeneratedKeys = false;
+    if (cnxSupportsGetGeneratedKeys) {
+      try {
+        rs = (ResultSet) getGeneratedKeysMethod().invoke(insertStatement,
+            (Object[]) null);
+        gotGeneratedKeys = true;
+      } catch (InvocationTargetException ex) {
+        Throwable target = ex.getTargetException();
+        if (target instanceof SQLException) {
+          throw (SQLException) target;
         }
+        throw ex;
+      } catch (IllegalAccessException ex) {
+        addWarn(
+            "IllegalAccessException invoking PreparedStatement.getGeneratedKeys",
+            ex);
       }
+    }
 
-      if (!gotGeneratedKeys) {
-        idStatement = connection.createStatement();
-        idStatement.setMaxRows(1);
-        String selectInsertIdStr = sqlDialect.getSelectInsertId();
-        rs = idStatement.executeQuery(selectInsertIdStr);
-      }
+    if (!gotGeneratedKeys) {
+      idStatement = connection.createStatement();
+      idStatement.setMaxRows(1);
+      String selectInsertIdStr = sqlDialect.getSelectInsertId();
+      rs = idStatement.executeQuery(selectInsertIdStr);
+    }
 
-      // A ResultSet cursor is initially positioned before the first row;
-      // the first call to the method next makes the first row the current row
-      rs.next();
-      long eventId = rs.getLong(1);
-      return eventId;
-    } finally {
-      if (rs!=null) {
-        try {
-          rs.close();
-        } catch (SQLException e) {
-        }
-      }
-      DBHelper.closeStatement(idStatement);
+    // A ResultSet cursor is initially positioned before the first row;
+    // the first call to the method next makes the first row the current row
+    rs.next();
+    long eventId = rs.getLong(1);
+
+    rs.close();
+
+    close(idStatement);
+
+    return eventId;
+  }
+
+  void close(Statement statement) throws SQLException {
+    if (statement != null) {
+      statement.close();
     }
   }
 
diff --git a/logback-core/src/main/java/ch/qos/logback/core/db/DBHelper.java b/logback-core/src/main/java/ch/qos/logback/core/db/DBHelper.java
index cf79925..3f5f244 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/db/DBHelper.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/db/DBHelper.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/db/DataSourceConnectionSource.java b/logback-core/src/main/java/ch/qos/logback/core/db/DataSourceConnectionSource.java
index bfd35ec..92e5c87 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/db/DataSourceConnectionSource.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/db/DataSourceConnectionSource.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -41,7 +41,16 @@ public class DataSourceConnectionSource extends ConnectionSourceBase {
     if (dataSource == null) {
       addWarn("WARNING: No data source specified");
     } else {
-      discoverConnectionProperties();
+      Connection connection = null;
+      try {
+        connection = getConnection();
+      } catch (SQLException se) {
+        addWarn("Could not get a connection to discover the dialect to use.",
+            se);
+      }
+      if (connection != null) {
+        discoverConnnectionProperties();
+      }
       if (!supportsGetGeneratedKeys()
           && getSQLDialectCode() == SQLDialectCode.UNKNOWN_DIALECT) {
         addWarn("Connection does not support GetGeneratedKey method and could not discover the dialect.");
diff --git a/logback-core/src/main/java/ch/qos/logback/core/db/DriverManagerConnectionSource.java b/logback-core/src/main/java/ch/qos/logback/core/db/DriverManagerConnectionSource.java
index 2cf8b3a..6d10b75 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/db/DriverManagerConnectionSource.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/db/DriverManagerConnectionSource.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -35,7 +35,7 @@ public class DriverManagerConnectionSource extends ConnectionSourceBase {
     try {
       if (driverClass != null) {
         Class.forName(driverClass);
-        discoverConnectionProperties();
+        discoverConnnectionProperties();
       } else {
         addError("WARNING: No JDBC driver specified for logback DriverManagerConnectionSource.");
       }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/db/JNDIConnectionSource.java b/logback-core/src/main/java/ch/qos/logback/core/db/JNDIConnectionSource.java
index cea885d..071d690 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/db/JNDIConnectionSource.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/db/JNDIConnectionSource.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -43,24 +43,33 @@ public class JNDIConnectionSource extends ConnectionSourceBase {
   private String jndiLocation = null;
   private DataSource dataSource = null;
 
+  /**
+   * @see org.apache.log4j.spi.OptionHandler#activateOptions()
+   */
   public void start() {
     if (jndiLocation == null) {
       addError("No JNDI location specified for JNDIConnectionSource.");
     }
-    discoverConnectionProperties();
-  }
 
+    discoverConnnectionProperties();
+
+  }
 
+  /**
+   * @see org.apache.log4j.db.ConnectionSource#getConnection()
+   */
   public Connection getConnection() throws SQLException {
     Connection conn = null;
     try {
+
       if (dataSource == null) {
         dataSource = lookupDataSource();
       }
-      if(getUser() != null) {
-        addWarn("Ignoring property [user] with value ["+getUser()+"] for obtaining a connection from a DataSource.");
+      if (getUser() == null) {
+        conn = dataSource.getConnection();
+      } else {
+        conn = dataSource.getConnection(getUser(), getPassword());
       }
-      conn = dataSource.getConnection();
     } catch (final NamingException ne) {
       addError("Error while getting data source", ne);
       throw new SQLException("NamingException while looking up DataSource: "
@@ -94,10 +103,9 @@ public class JNDIConnectionSource extends ConnectionSourceBase {
   }
 
   private DataSource lookupDataSource() throws NamingException, SQLException {
-    addInfo("Looking up ["+jndiLocation+"] in JNDI");
     DataSource ds;
-    Context initialContext = new InitialContext();
-    Object obj = initialContext.lookup(jndiLocation);
+    Context ctx = new InitialContext();
+    Object obj = ctx.lookup(jndiLocation);
 
     // PortableRemoteObject was introduced in JDK 1.3. We won't use it.
     // ds = (DataSource)PortableRemoteObject.narrow(obj, DataSource.class);
diff --git a/logback-core/src/main/java/ch/qos/logback/core/db/dialect/DBUtil.java b/logback-core/src/main/java/ch/qos/logback/core/db/dialect/DBUtil.java
index dd6d6b6..721d2cf 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/db/dialect/DBUtil.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/db/dialect/DBUtil.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/db/dialect/H2Dialect.java b/logback-core/src/main/java/ch/qos/logback/core/db/dialect/H2Dialect.java
index 0d877d7..e1e9611 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/db/dialect/H2Dialect.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/db/dialect/H2Dialect.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/db/dialect/HSQLDBDialect.java b/logback-core/src/main/java/ch/qos/logback/core/db/dialect/HSQLDBDialect.java
index e4e39dc..cee93e6 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/db/dialect/HSQLDBDialect.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/db/dialect/HSQLDBDialect.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/db/dialect/MsSQLDialect.java b/logback-core/src/main/java/ch/qos/logback/core/db/dialect/MsSQLDialect.java
index fa9076d..1253af0 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/db/dialect/MsSQLDialect.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/db/dialect/MsSQLDialect.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/db/dialect/MySQLDialect.java b/logback-core/src/main/java/ch/qos/logback/core/db/dialect/MySQLDialect.java
index e5a9a2f..012136a 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/db/dialect/MySQLDialect.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/db/dialect/MySQLDialect.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/db/dialect/OracleDialect.java b/logback-core/src/main/java/ch/qos/logback/core/db/dialect/OracleDialect.java
index a726296..682ddd3 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/db/dialect/OracleDialect.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/db/dialect/OracleDialect.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/db/dialect/PostgreSQLDialect.java b/logback-core/src/main/java/ch/qos/logback/core/db/dialect/PostgreSQLDialect.java
index 7502cbf..f4e4369 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/db/dialect/PostgreSQLDialect.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/db/dialect/PostgreSQLDialect.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/db/dialect/SQLDialect.java b/logback-core/src/main/java/ch/qos/logback/core/db/dialect/SQLDialect.java
index b95d8f0..b2ba195 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/db/dialect/SQLDialect.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/db/dialect/SQLDialect.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/db/dialect/SQLDialectCode.java b/logback-core/src/main/java/ch/qos/logback/core/db/dialect/SQLDialectCode.java
index c96ed4d..067983c 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/db/dialect/SQLDialectCode.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/db/dialect/SQLDialectCode.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/db/dialect/SQLiteDialect.java b/logback-core/src/main/java/ch/qos/logback/core/db/dialect/SQLiteDialect.java
index 0970490..ef738e1 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/db/dialect/SQLiteDialect.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/db/dialect/SQLiteDialect.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2012, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -11,6 +11,7 @@
  * under the terms of the GNU Lesser General Public License version 2.1
  * as published by the Free Software Foundation.
  */
+
 package ch.qos.logback.core.db.dialect;
 
 /**
diff --git a/logback-core/src/main/java/ch/qos/logback/core/db/dialect/SybaseSqlAnywhereDialect.java b/logback-core/src/main/java/ch/qos/logback/core/db/dialect/SybaseSqlAnywhereDialect.java
index 4551a60..080701e 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/db/dialect/SybaseSqlAnywhereDialect.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/db/dialect/SybaseSqlAnywhereDialect.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/encoder/ByteArrayUtil.java b/logback-core/src/main/java/ch/qos/logback/core/encoder/ByteArrayUtil.java
index f21d554..4fe628d 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/encoder/ByteArrayUtil.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/encoder/ByteArrayUtil.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -43,7 +43,7 @@ public class ByteArrayUtil {
   }
   
   static public String toHexString(byte[] ba) {
-    StringBuilder sbuf = new StringBuilder();
+    StringBuffer sbuf = new StringBuffer();
     for(byte b: ba) {
       String s = Integer.toHexString( (int)(b & 0xff));
       if(s.length() == 1) {
diff --git a/logback-core/src/main/java/ch/qos/logback/core/encoder/EchoEncoder.java b/logback-core/src/main/java/ch/qos/logback/core/encoder/EchoEncoder.java
index 9a3f6e9..1fe015e 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/encoder/EchoEncoder.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/encoder/EchoEncoder.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/encoder/Encoder.java b/logback-core/src/main/java/ch/qos/logback/core/encoder/Encoder.java
index 681d361..abd141e 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/encoder/Encoder.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/encoder/Encoder.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/encoder/EncoderBase.java b/logback-core/src/main/java/ch/qos/logback/core/encoder/EncoderBase.java
index f70209d..82a88e8 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/encoder/EncoderBase.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/encoder/EncoderBase.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/encoder/EventObjectInputStream.java b/logback-core/src/main/java/ch/qos/logback/core/encoder/EventObjectInputStream.java
index 0742798..b7653e0 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/encoder/EventObjectInputStream.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/encoder/EventObjectInputStream.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/encoder/LayoutWrappingEncoder.java b/logback-core/src/main/java/ch/qos/logback/core/encoder/LayoutWrappingEncoder.java
index 89dd836..48b249a 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/encoder/LayoutWrappingEncoder.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/encoder/LayoutWrappingEncoder.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/encoder/NonClosableInputStream.java b/logback-core/src/main/java/ch/qos/logback/core/encoder/NonClosableInputStream.java
index 9d89874..e9d7e36 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/encoder/NonClosableInputStream.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/encoder/NonClosableInputStream.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/encoder/ObjectStreamEncoder.java b/logback-core/src/main/java/ch/qos/logback/core/encoder/ObjectStreamEncoder.java
index 3c6907d..dcf50b4 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/encoder/ObjectStreamEncoder.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/encoder/ObjectStreamEncoder.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -31,8 +31,10 @@ import ch.qos.logback.core.CoreConstants;
  */
 public class ObjectStreamEncoder<E> extends EncoderBase<E> {
 
-  static public final int START_PEBBLE = 1853421169;
-  static public final int STOP_PEBBLE = 640373619;
+  static public int START_PEBBLE = 1853421169;
+  //static public int START_PEBBLE = 1;
+  
+  static public int STOP_PEBBLE = 640373619;
 
   private int MAX_BUFFER_SIZE = 100;
 
diff --git a/logback-core/src/main/java/ch/qos/logback/core/filter/AbstractMatcherFilter.java b/logback-core/src/main/java/ch/qos/logback/core/filter/AbstractMatcherFilter.java
index 6446ec8..0692e30 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/filter/AbstractMatcherFilter.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/filter/AbstractMatcherFilter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/filter/EvaluatorFilter.java b/logback-core/src/main/java/ch/qos/logback/core/filter/EvaluatorFilter.java
index 5cfef86..a72151c 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/filter/EvaluatorFilter.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/filter/EvaluatorFilter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/filter/Filter.java b/logback-core/src/main/java/ch/qos/logback/core/filter/Filter.java
index 2a048ef..68f4b60 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/filter/Filter.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/filter/Filter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/helpers/CyclicBuffer.java b/logback-core/src/main/java/ch/qos/logback/core/helpers/CyclicBuffer.java
index 369fa04..4903a34 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/helpers/CyclicBuffer.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/helpers/CyclicBuffer.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/helpers/NOPAppender.java b/logback-core/src/main/java/ch/qos/logback/core/helpers/NOPAppender.java
index 49911d3..9341da2 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/helpers/NOPAppender.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/helpers/NOPAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/helpers/ThrowableToStringArray.java b/logback-core/src/main/java/ch/qos/logback/core/helpers/ThrowableToStringArray.java
index 876d2bb..7ce9deb 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/helpers/ThrowableToStringArray.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/helpers/ThrowableToStringArray.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/helpers/Transform.java b/logback-core/src/main/java/ch/qos/logback/core/helpers/Transform.java
index fb29a4b..ecc5022 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/helpers/Transform.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/helpers/Transform.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/html/CssBuilder.java b/logback-core/src/main/java/ch/qos/logback/core/html/CssBuilder.java
index 4fb759d..8a65e5f 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/html/CssBuilder.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/html/CssBuilder.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/html/HTMLLayoutBase.java b/logback-core/src/main/java/ch/qos/logback/core/html/HTMLLayoutBase.java
index 90c2ceb..b3bf2f3 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/html/HTMLLayoutBase.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/html/HTMLLayoutBase.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -24,7 +24,7 @@ import ch.qos.logback.core.pattern.Converter;
 import ch.qos.logback.core.pattern.ConverterUtil;
 import ch.qos.logback.core.pattern.parser.Node;
 import ch.qos.logback.core.pattern.parser.Parser;
-import ch.qos.logback.core.spi.ScanException;
+import ch.qos.logback.core.pattern.parser.ScanException;
 
 /**
  * This class is a base class for HTMLLayout classes part of
diff --git a/logback-core/src/main/java/ch/qos/logback/core/html/IThrowableRenderer.java b/logback-core/src/main/java/ch/qos/logback/core/html/IThrowableRenderer.java
index 1c14341..903d330 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/html/IThrowableRenderer.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/html/IThrowableRenderer.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/html/NOPThrowableRenderer.java b/logback-core/src/main/java/ch/qos/logback/core/html/NOPThrowableRenderer.java
index 4fc48db..3cd27bc 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/html/NOPThrowableRenderer.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/html/NOPThrowableRenderer.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/GenericConfigurator.java b/logback-core/src/main/java/ch/qos/logback/core/joran/GenericConfigurator.java
index 7c78774..1c96f78 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/GenericConfigurator.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/GenericConfigurator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,15 +13,6 @@
  */
 package ch.qos.logback.core.joran;
 
-import ch.qos.logback.core.Context;
-import ch.qos.logback.core.joran.event.SaxEvent;
-import ch.qos.logback.core.joran.event.SaxEventRecorder;
-import ch.qos.logback.core.joran.spi.*;
-import ch.qos.logback.core.joran.util.ConfigurationWatchListUtil;
-import ch.qos.logback.core.spi.ContextAwareBase;
-import ch.qos.logback.core.status.StatusUtil;
-import org.xml.sax.InputSource;
-
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -32,12 +23,27 @@ import java.util.List;
 
 import static ch.qos.logback.core.CoreConstants.SAFE_JORAN_CONFIGURATION;
 
+import ch.qos.logback.core.Context;
+import ch.qos.logback.core.joran.util.ConfigurationWatchListUtil;
+import ch.qos.logback.core.status.StatusChecker;
+import org.xml.sax.InputSource;
+
+import ch.qos.logback.core.joran.event.SaxEvent;
+import ch.qos.logback.core.joran.event.SaxEventRecorder;
+import ch.qos.logback.core.joran.spi.DefaultNestedComponentRegistry;
+import ch.qos.logback.core.joran.spi.InterpretationContext;
+import ch.qos.logback.core.joran.spi.Interpreter;
+import ch.qos.logback.core.joran.spi.JoranException;
+import ch.qos.logback.core.joran.spi.Pattern;
+import ch.qos.logback.core.joran.spi.RuleStore;
+import ch.qos.logback.core.joran.spi.SimpleRuleStore;
+import ch.qos.logback.core.spi.ContextAwareBase;
+
 public abstract class GenericConfigurator extends ContextAwareBase {
 
   protected Interpreter interpreter;
 
   public final void doConfigure(URL url) throws JoranException {
-    InputStream in = null;
     try {
       informContextOfURLUsedForConfiguration(getContext(), url);
       URLConnection urlConnection = url.openConnection();
@@ -45,22 +51,13 @@ public abstract class GenericConfigurator extends ContextAwareBase {
       // per http://jira.qos.ch/browse/LBCORE-127
       urlConnection.setUseCaches(false);
 
-      in = urlConnection.getInputStream();
+      InputStream in = urlConnection.getInputStream();
       doConfigure(in);
+      in.close();
     } catch (IOException ioe) {
       String errMsg = "Could not open URL [" + url + "].";
       addError(errMsg, ioe);
       throw new JoranException(errMsg, ioe);
-    } finally {
-      if (in != null) {
-        try {
-          in.close();
-        } catch (IOException ioe) {
-          String errMsg = "Could not close input stream";
-          addError(errMsg, ioe);
-          throw new JoranException(errMsg, ioe);
-        }
-      }
     }
   }
 
@@ -107,18 +104,18 @@ public abstract class GenericConfigurator extends ContextAwareBase {
 
   }
 
-  protected ElementPath initialElementPath() {
-    return new ElementPath();
+  protected Pattern initialPattern() {
+    return new Pattern();
   }
 
   protected void buildInterpreter() {
     RuleStore rs = new SimpleRuleStore(context);
     addInstanceRules(rs);
-    this.interpreter = new Interpreter(context, rs, initialElementPath());
-    InterpretationContext interpretationContext = interpreter.getInterpretationContext();
-    interpretationContext.setContext(context);
+    this.interpreter = new Interpreter(context, rs, initialPattern());
+    InterpretationContext ec = interpreter.getInterpretationContext();
+    ec.setContext(context);
     addImplicitRules(interpreter);
-    addDefaultNestedComponentRegistryRules(interpretationContext.getDefaultNestedComponentRegistry());
+    addDefaultNestedComponentRegistryRules(ec.getDefaultNestedComponentRegistry());
   }
 
   // this is the most inner form of doConfigure whereto other doConfigure
@@ -130,12 +127,13 @@ public abstract class GenericConfigurator extends ContextAwareBase {
     if (!ConfigurationWatchListUtil.wasConfigurationWatchListReset(context)) {
       informContextOfURLUsedForConfiguration(getContext(), null);
     }
-    SaxEventRecorder recorder = new SaxEventRecorder(context);
+    SaxEventRecorder recorder = new SaxEventRecorder();
+    recorder.setContext(context);
     recorder.recordEvents(inputSource);
     doConfigure(recorder.saxEventList);
     // no exceptions a this level
-    StatusUtil statusUtil = new StatusUtil(context);
-    if (statusUtil.noXMLParsingErrorsOccurred(threshold)) {
+    StatusChecker statusChecker = new StatusChecker(context);
+    if(statusChecker.noXMLParsingErrorsOccurred(threshold)) {
       addInfo("Registering current configuration as safe fallback point");
       registerSafeConfiguration();
     }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/JoranConfiguratorBase.java b/logback-core/src/main/java/ch/qos/logback/core/joran/JoranConfiguratorBase.java
index 9cc5c14..a4d9cfe 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/JoranConfiguratorBase.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/JoranConfiguratorBase.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -30,9 +30,9 @@ import ch.qos.logback.core.joran.action.ParamAction;
 import ch.qos.logback.core.joran.action.PropertyAction;
 import ch.qos.logback.core.joran.action.StatusListenerAction;
 import ch.qos.logback.core.joran.action.TimestampAction;
-import ch.qos.logback.core.joran.spi.ElementSelector;
 import ch.qos.logback.core.joran.spi.InterpretationContext;
 import ch.qos.logback.core.joran.spi.Interpreter;
+import ch.qos.logback.core.joran.spi.Pattern;
 import ch.qos.logback.core.joran.spi.RuleStore;
 
 // Based on 310985 revision 310985 as attested by http://tinyurl.com/8njps
@@ -57,33 +57,31 @@ abstract public class JoranConfiguratorBase extends GenericConfigurator {
   @Override
   protected void addInstanceRules(RuleStore rs) {
 
-    // is "configuration/variable" referenced in the docs?
-    rs.addRule(new ElementSelector("configuration/variable"), new PropertyAction());
-    rs.addRule(new ElementSelector("configuration/property"), new PropertyAction());
+    rs.addRule(new Pattern("configuration/property"), new PropertyAction());
 
-    rs.addRule(new ElementSelector("configuration/substitutionProperty"),
+    rs.addRule(new Pattern("configuration/substitutionProperty"),
         new PropertyAction());
 
-    rs.addRule(new ElementSelector("configuration/timestamp"), new TimestampAction());
+    rs.addRule(new Pattern("configuration/timestamp"), new TimestampAction());
 
-    rs.addRule(new ElementSelector("configuration/define"), new DefinePropertyAction());
+    rs.addRule(new Pattern("configuration/define"), new DefinePropertyAction());
 
     // the contextProperty pattern is deprecated. It is undocumented
     // and will be dropped in future versions of logback
-    rs.addRule(new ElementSelector("configuration/contextProperty"),
+    rs.addRule(new Pattern("configuration/contextProperty"),
         new ContextPropertyAction());
 
-    rs.addRule(new ElementSelector("configuration/conversionRule"),
+    rs.addRule(new Pattern("configuration/conversionRule"),
         new ConversionRuleAction());
 
-    rs.addRule(new ElementSelector("configuration/statusListener"),
+    rs.addRule(new Pattern("configuration/statusListener"),
         new StatusListenerAction());
 
-    rs.addRule(new ElementSelector("configuration/appender"), new AppenderAction());
-    rs.addRule(new ElementSelector("configuration/appender/appender-ref"),
+    rs.addRule(new Pattern("configuration/appender"), new AppenderAction());
+    rs.addRule(new Pattern("configuration/appender/appender-ref"),
         new AppenderRefAction());
-    rs.addRule(new ElementSelector("configuration/newRule"), new NewRuleAction());
-    rs.addRule(new ElementSelector("*/param"), new ParamAction());
+    rs.addRule(new Pattern("configuration/newRule"), new NewRuleAction());
+    rs.addRule(new Pattern("*/param"), new ParamAction());
   }
 
   @Override
@@ -107,7 +105,7 @@ abstract public class JoranConfiguratorBase extends GenericConfigurator {
     omap.put(ActionConst.FILTER_CHAIN_BAG, new HashMap());
   }
 
-  public InterpretationContext getInterpretationContext() {
+  public InterpretationContext getExecutionContext() {
     return interpreter.getInterpretationContext();
   }
 }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/action/AbstractEventEvaluatorAction.java b/logback-core/src/main/java/ch/qos/logback/core/joran/action/AbstractEventEvaluatorAction.java
index 817ae6f..7a209a1 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/action/AbstractEventEvaluatorAction.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/action/AbstractEventEvaluatorAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -25,7 +25,7 @@ import ch.qos.logback.core.util.OptionHelper;
 
 abstract public class AbstractEventEvaluatorAction extends Action {
 
-  EventEvaluator<?> evaluator;
+  EventEvaluator evaluator;
   boolean inError = false;
 
   /**
@@ -58,7 +58,7 @@ abstract public class AbstractEventEvaluatorAction extends Action {
       return;
     }
     try {
-      evaluator = (EventEvaluator<?>) OptionHelper.instantiateByClassName(
+      evaluator = (EventEvaluator) OptionHelper.instantiateByClassName(
           className, ch.qos.logback.core.boolex.EventEvaluator.class, context);
 
       evaluator.setContext(this.context);
@@ -104,7 +104,7 @@ abstract public class AbstractEventEvaluatorAction extends Action {
       ec.popObject();
 
       try {
-        Map<String, EventEvaluator<?>> evaluatorMap = (Map<String, EventEvaluator<?>>) context
+        Map<String, EventEvaluator> evaluatorMap = (Map<String, EventEvaluator>) context
             .getObject(CoreConstants.EVALUATOR_MAP);
         if(evaluatorMap == null) {
           addError("Could not find EvaluatorMap");
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/action/Action.java b/logback-core/src/main/java/ch/qos/logback/core/joran/action/Action.java
index 5930683..08145cd 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/action/Action.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/action/Action.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -50,7 +50,7 @@ public abstract class Action extends ContextAwareBase {
 
   /**
    * Called when the parser encounters an element matching a
-   * {@link ch.qos.logback.core.joran.spi.ElementSelector Pattern}.
+   * {@link ch.qos.logback.core.joran.spi.Pattern Pattern}.
    */
   public abstract void begin(InterpretationContext ic, String name,
       Attributes attributes) throws ActionException;
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/action/ActionConst.java b/logback-core/src/main/java/ch/qos/logback/core/joran/action/ActionConst.java
index 079a60a..e6a2687 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/action/ActionConst.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/action/ActionConst.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/action/ActionUtil.java b/logback-core/src/main/java/ch/qos/logback/core/joran/action/ActionUtil.java
deleted file mode 100644
index f2fef3a..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/action/ActionUtil.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.joran.action;
-
-import java.util.Properties;
-
-import ch.qos.logback.core.joran.spi.InterpretationContext;
-import ch.qos.logback.core.util.ContextUtil;
-import ch.qos.logback.core.util.OptionHelper;
-
-public class ActionUtil {
-
-  public enum Scope {
-    LOCAL, CONTEXT, SYSTEM
-  };
-
-  /**
-   * Convert a string into a scope. Scole.LOCAL is returned by default.
-   * @param scopeStr
-   * @return a scope corresponding to the input string;  Scope.LOCAL by default.
-   */
-  static public Scope stringToScope(String scopeStr) {
-    if(Scope.SYSTEM.toString().equalsIgnoreCase(scopeStr))
-      return Scope.SYSTEM;
-     if(Scope.CONTEXT.toString().equalsIgnoreCase(scopeStr))
-      return Scope.CONTEXT;
-
-    return Scope.LOCAL;
-  }
-
-  static public void setProperty(InterpretationContext ic, String key, String value, Scope scope) {
-    switch (scope) {
-    case LOCAL:
-      ic.addSubstitutionProperty(key, value);
-      break;
-    case CONTEXT:
-      ic.getContext().putProperty(key, value);
-      break;
-    case SYSTEM:
-      OptionHelper.setSystemProperty(ic, key, value);
-    }
-  }
-
-  /**
-   * Add all the properties found in the argument named 'props' to an
-   * InterpretationContext.
-   */
-  static public void setProperties(InterpretationContext ic, Properties props,
-      Scope scope) {
-    switch (scope) {
-    case LOCAL:
-      ic.addSubstitutionProperties(props);
-      break;
-    case CONTEXT:
-      ContextUtil cu = new ContextUtil(ic.getContext());
-      cu.addProperties(props);
-      break;
-    case SYSTEM:
-      OptionHelper.setSystemProperties(ic, props);
-    }
-  }
-
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/action/AppenderAction.java b/logback-core/src/main/java/ch/qos/logback/core/joran/action/AppenderAction.java
index be6a1ef..113c7a1 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/action/AppenderAction.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/action/AppenderAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -51,7 +51,7 @@ public class AppenderAction<E> extends Action {
     try {
       addInfo("About to instantiate appender of type [" + className + "]");
 
-      appender = (Appender<E>) OptionHelper.instantiateByClassName(className,
+      appender = (Appender) OptionHelper.instantiateByClassName(className,
           ch.qos.logback.core.Appender.class, context);
 
       appender.setContext(context);
@@ -68,7 +68,7 @@ public class AppenderAction<E> extends Action {
 
       // The execution context contains a bag which contains the appenders
       // created thus far.
-      HashMap<String, Appender<E>> appenderBag = (HashMap<String, Appender<E>>) ec.getObjectMap().get(
+      HashMap<String, Appender> appenderBag = (HashMap) ec.getObjectMap().get(
           ActionConst.APPENDER_BAG);
 
       // add the appender just created to the appender bag.
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/action/AppenderRefAction.java b/logback-core/src/main/java/ch/qos/logback/core/joran/action/AppenderRefAction.java
index d234dc9..4d07e47 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/action/AppenderRefAction.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/action/AppenderRefAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -24,7 +24,7 @@ import ch.qos.logback.core.util.OptionHelper;
 
 import java.util.HashMap;
 
-public class AppenderRefAction<E> extends Action {
+public class AppenderRefAction extends Action {
   boolean inError = false;
 
   @SuppressWarnings("unchecked")
@@ -44,7 +44,7 @@ public class AppenderRefAction<E> extends Action {
       return;
     }
 
-    AppenderAttachable<E> appenderAttachable = (AppenderAttachable<E>) o;
+    AppenderAttachable appenderAttachable = (AppenderAttachable) o;
 
     String appenderName = ec.subst(attributes.getValue(ActionConst.REF_ATTRIBUTE));
 
@@ -57,9 +57,9 @@ public class AppenderRefAction<E> extends Action {
       return;
     }
 
-    HashMap<String, Appender<E>> appenderBag = (HashMap<String, Appender<E>>) ec.getObjectMap().get(
+    HashMap appenderBag = (HashMap) ec.getObjectMap().get(
         ActionConst.APPENDER_BAG);
-    Appender<E> appender = (Appender<E>) appenderBag.get(appenderName);
+    Appender appender = (Appender) appenderBag.get(appenderName);
 
     if (appender == null) {
       String msg = "Could not find an appender named [" + appenderName
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/action/ContextPropertyAction.java b/logback-core/src/main/java/ch/qos/logback/core/joran/action/ContextPropertyAction.java
index 8230d7e..ecc5620 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/action/ContextPropertyAction.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/action/ContextPropertyAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/action/ConversionRuleAction.java b/logback-core/src/main/java/ch/qos/logback/core/joran/action/ConversionRuleAction.java
index adea823..2237fc6 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/action/ConversionRuleAction.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/action/ConversionRuleAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/action/DefinePropertyAction.java b/logback-core/src/main/java/ch/qos/logback/core/joran/action/DefinePropertyAction.java
index ffd96b6..e0f49ef 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/action/DefinePropertyAction.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/action/DefinePropertyAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,10 +13,8 @@
  */
 package ch.qos.logback.core.joran.action;
 
-import ch.qos.logback.core.joran.action.ActionUtil.Scope;
 import ch.qos.logback.core.joran.spi.InterpretationContext;
 import ch.qos.logback.core.joran.spi.ActionException;
-import ch.qos.logback.core.spi.LifeCycle;
 import ch.qos.logback.core.util.OptionHelper;
 import ch.qos.logback.core.spi.PropertyDefiner;
 import org.xml.sax.Attributes;
@@ -30,8 +28,6 @@ import org.xml.sax.Attributes;
  */
 public class DefinePropertyAction extends Action {
 
-  String scopeStr;
-  Scope scope;
   String propertyName;
   PropertyDefiner definer;
   boolean inError;
@@ -39,17 +35,12 @@ public class DefinePropertyAction extends Action {
   public void begin(InterpretationContext ec, String localName,
       Attributes attributes) throws ActionException {
     // reset variables
-    scopeStr = null;
-    scope = null;
     propertyName = null;
     definer = null;
     inError = false;
-    
+
     // read future property name
     propertyName = attributes.getValue(NAME_ATTRIBUTE);
-    scopeStr = attributes.getValue(SCOPE_ATTRIBUTE);
-    
-    scope = ActionUtil.stringToScope(scopeStr);
     if (OptionHelper.isEmpty(propertyName)) {
       addError("Missing property name for property definer. Near [" + localName
           + "] line " + getLineNumber(ec));
@@ -73,9 +64,6 @@ public class DefinePropertyAction extends Action {
       definer = (PropertyDefiner) OptionHelper.instantiateByClassName(
           className, PropertyDefiner.class, context);
       definer.setContext(context);
-      if(definer instanceof LifeCycle) {
-        ((LifeCycle) definer).start();
-      }
       ec.pushObject(definer);
     } catch (Exception oops) {
       inError = true;
@@ -107,7 +95,7 @@ public class DefinePropertyAction extends Action {
       // not null
       String propertyValue = definer.getPropertyValue();
       if(propertyValue != null) {
-        ActionUtil.setProperty(ec, propertyName, propertyValue, scope);
+        context.putProperty(propertyName, propertyValue);
       }
     }
   }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/action/IADataForBasicProperty.java b/logback-core/src/main/java/ch/qos/logback/core/joran/action/IADataForBasicProperty.java
index 023e070..3848967 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/action/IADataForBasicProperty.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/action/IADataForBasicProperty.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/action/IADataForComplexProperty.java b/logback-core/src/main/java/ch/qos/logback/core/joran/action/IADataForComplexProperty.java
index 6c77452..98ee0c9 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/action/IADataForComplexProperty.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/action/IADataForComplexProperty.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/action/ImplicitAction.java b/logback-core/src/main/java/ch/qos/logback/core/joran/action/ImplicitAction.java
index 10f5bc9..e3bc0c9 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/action/ImplicitAction.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/action/ImplicitAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -14,10 +14,10 @@
 package ch.qos.logback.core.joran.action;
 
 
-import ch.qos.logback.core.joran.spi.ElementPath;
 import org.xml.sax.Attributes;
 
 import ch.qos.logback.core.joran.spi.InterpretationContext;
+import ch.qos.logback.core.joran.spi.Pattern;
 
 
 /**
@@ -34,14 +34,14 @@ public abstract class ImplicitAction extends Action {
   /**
    * Check whether this implicit action is appropriate in the current context.
    * 
-   * @param currentElementPath This pattern contains the tag name of the current
+   * @param currentPattern This pattern contains the tag name of the current 
    * element being parsed at the top of the stack.
    * @param attributes The attributes of the current element to process.
    * @param ec
    * @return Whether the implicit action is applicable in the current context
    */
   public abstract boolean isApplicable(
-    ElementPath currentElementPath, Attributes attributes, InterpretationContext ec);
+    Pattern currentPattern, Attributes attributes, InterpretationContext ec);
   
   
 }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/action/IncludeAction.java b/logback-core/src/main/java/ch/qos/logback/core/joran/action/IncludeAction.java
index a657dd2..34dd9d3 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/action/IncludeAction.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/action/IncludeAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -39,19 +39,16 @@ public class IncludeAction extends Action {
   private static final String FILE_ATTR = "file";
   private static final String URL_ATTR = "url";
   private static final String RESOURCE_ATTR = "resource";
-  private static final String OPTIONAL_ATTR = "optional";
 
   private String attributeInUse;
-  private boolean optional;
 
   @Override
   public void begin(InterpretationContext ec, String name, Attributes attributes)
           throws ActionException {
 
-    SaxEventRecorder recorder = new SaxEventRecorder(context);
+    SaxEventRecorder recorder = new SaxEventRecorder();
 
     this.attributeInUse = null;
-    this.optional = OptionHelper.toBoolean(attributes.getValue(OPTIONAL_ATTR), false);
 
     if (!checkAttributes(attributes)) {
       return;
@@ -119,8 +116,8 @@ public class IncludeAction extends Action {
     try {
       return new FileInputStream(pathToFile);
     } catch (IOException ioe) {
-      String warningMsg = "File [" + pathToFile + "] does not exist.";
-      addWarn(warningMsg);
+      String errMsg = "File [" + pathToFile + "] does not exist.";
+      addError(errMsg, ioe);
       return null;
     }
   }
@@ -143,10 +140,8 @@ public class IncludeAction extends Action {
     try {
       return url.openStream();
     } catch (IOException e) {
-      if (!optional) {
-        String errMsg = "Failed to open [" + url.toString() + "]";
-        addError(errMsg, e);
-      }
+      String errMsg = "Failed to open [" + url.toString() + "]";
+      addError(errMsg, e);
       return null;
     }
   }
@@ -154,11 +149,9 @@ public class IncludeAction extends Action {
   URL resourceAsURL(String resourceAttribute) {
     URL url = Loader.getResourceBySelfClassLoader(resourceAttribute);
     if (url == null) {
-      if (!optional) {
-        String errMsg = "Could not find resource corresponding to ["
-                + resourceAttribute + "]";
-        addError(errMsg);
-      }
+      String errMsg = "Could not find resource corresponding to ["
+              + resourceAttribute + "]";
+      addError(errMsg);
       return null;
     } else
       return url;
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/action/NOPAction.java b/logback-core/src/main/java/ch/qos/logback/core/joran/action/NOPAction.java
index e37cd86..558a447 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/action/NOPAction.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/action/NOPAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/action/NestedBasicPropertyIA.java b/logback-core/src/main/java/ch/qos/logback/core/joran/action/NestedBasicPropertyIA.java
index aac9cdd..e5aae46 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/action/NestedBasicPropertyIA.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/action/NestedBasicPropertyIA.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -15,10 +15,10 @@ package ch.qos.logback.core.joran.action;
 
 import java.util.Stack;
 
-import ch.qos.logback.core.joran.spi.ElementPath;
 import org.xml.sax.Attributes;
 
 import ch.qos.logback.core.joran.spi.InterpretationContext;
+import ch.qos.logback.core.joran.spi.Pattern;
 import ch.qos.logback.core.joran.util.PropertySetter;
 import ch.qos.logback.core.util.AggregationType;
 
@@ -40,11 +40,11 @@ public class NestedBasicPropertyIA extends ImplicitAction {
   // be followed by the corresponding pop.
   Stack<IADataForBasicProperty> actionDataStack = new Stack<IADataForBasicProperty>();
 
-  public boolean isApplicable(ElementPath elementPath, Attributes attributes,
+  public boolean isApplicable(Pattern pattern, Attributes attributes,
       InterpretationContext ec) {
     // System.out.println("in NestedSimplePropertyIA.isApplicable [" + pattern +
     // "]");
-    String nestedElementTagName = elementPath.peekLast();
+    String nestedElementTagName = pattern.peekLast();
 
     // no point in attempting if there is no parent object
     if (ec.isEmpty()) {
@@ -85,6 +85,7 @@ public class NestedBasicPropertyIA extends ImplicitAction {
   public void body(InterpretationContext ec, String body) {
 
     String finalBody = ec.subst(body);
+    // System.out.println("body "+body+", finalBody="+finalBody);
     // get the action data object pushed in isApplicable() method call
     IADataForBasicProperty actionData = (IADataForBasicProperty) actionDataStack.peek();
     switch (actionData.aggregationType) {
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/action/NestedComplexPropertyIA.java b/logback-core/src/main/java/ch/qos/logback/core/joran/action/NestedComplexPropertyIA.java
index 2689e39..8010eff 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/action/NestedComplexPropertyIA.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/action/NestedComplexPropertyIA.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -15,11 +15,11 @@ package ch.qos.logback.core.joran.action;
 
 import java.util.Stack;
 
-import ch.qos.logback.core.joran.spi.ElementPath;
 import org.xml.sax.Attributes;
 
 import ch.qos.logback.core.joran.spi.InterpretationContext;
 import ch.qos.logback.core.joran.spi.NoAutoStartUtil;
+import ch.qos.logback.core.joran.spi.Pattern;
 import ch.qos.logback.core.joran.util.PropertySetter;
 import ch.qos.logback.core.spi.ContextAware;
 import ch.qos.logback.core.spi.LifeCycle;
@@ -44,10 +44,10 @@ public class NestedComplexPropertyIA extends ImplicitAction {
   // be followed by a corresponding pop.
   Stack<IADataForComplexProperty> actionDataStack = new Stack<IADataForComplexProperty>();
 
-  public boolean isApplicable(ElementPath elementPath, Attributes attributes,
+  public boolean isApplicable(Pattern pattern, Attributes attributes,
       InterpretationContext ic) {
 
-    String nestedElementTagName = elementPath.peekLast();
+    String nestedElementTagName = pattern.peekLast();
 
     // calling ic.peekObject with an empty stack will throw an exception
     if (ic.isEmpty()) {
@@ -93,7 +93,7 @@ public class NestedComplexPropertyIA extends ImplicitAction {
     // perform variable name substitution
     className = ec.subst(className);
 
-    Class<?> componentClass = null;
+    Class componentClass = null;
     try {
 
       if (!OptionHelper.isEmpty(className)) {
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/action/NewRuleAction.java b/logback-core/src/main/java/ch/qos/logback/core/joran/action/NewRuleAction.java
index d1bf060..c7d0499 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/action/NewRuleAction.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/action/NewRuleAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -16,7 +16,7 @@ package ch.qos.logback.core.joran.action;
 import org.xml.sax.Attributes;
 
 import ch.qos.logback.core.joran.spi.InterpretationContext;
-import ch.qos.logback.core.joran.spi.ElementSelector;
+import ch.qos.logback.core.joran.spi.Pattern;
 import ch.qos.logback.core.util.OptionHelper;
 
 
@@ -50,7 +50,7 @@ public class NewRuleAction extends Action {
     try {
       addInfo("About to add new Joran parsing rule [" + pattern + ","
           + actionClass + "].");
-      ec.getJoranInterpreter().getRuleStore().addRule(new ElementSelector(pattern),
+      ec.getJoranInterpreter().getRuleStore().addRule(new Pattern(pattern),
           actionClass);
     } catch (Exception oops) {
       inError = true;
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/action/ParamAction.java b/logback-core/src/main/java/ch/qos/logback/core/joran/action/ParamAction.java
index 970ad3c..c098b28 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/action/ParamAction.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/action/ParamAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/action/PropertyAction.java b/logback-core/src/main/java/ch/qos/logback/core/joran/action/PropertyAction.java
index b129586..0dc7868 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/action/PropertyAction.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/action/PropertyAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,21 +13,22 @@
  */
 package ch.qos.logback.core.joran.action;
 
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.Properties;
-
+import ch.qos.logback.core.util.ContextUtil;
 import org.xml.sax.Attributes;
 
-import ch.qos.logback.core.joran.action.ActionUtil.Scope;
 import ch.qos.logback.core.joran.spi.InterpretationContext;
 import ch.qos.logback.core.pattern.util.RegularEscapeUtil;
 import ch.qos.logback.core.util.Loader;
 import ch.qos.logback.core.util.OptionHelper;
 
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+
+import java.util.Properties;
+
 /**
  * This class serves as a base for other actions, which similar to the ANT
  * <property> task which add/set properties of a given object.
@@ -40,12 +41,42 @@ import ch.qos.logback.core.util.OptionHelper;
  */
 public class PropertyAction extends Action {
 
+  enum Scope {LOCAL, CONTEXT, SYSTEM};
+
   static final String RESOURCE_ATTRIBUTE = "resource";
 
 
   static String INVALID_ATTRIBUTES = "In <property> element, either the \"file\" attribute alone, or "
           + "the \"resource\" element alone, or both the \"name\" and \"value\" attributes must be set.";
 
+  /**
+   * Add all the properties found in the argument named 'props' to an
+   * InterpretationContext.
+   */
+  public void setProperties(InterpretationContext ec, Properties props, Scope scope) {
+    switch(scope) {
+      case LOCAL: ec.addSubstitutionProperties(props);
+        break;
+      case CONTEXT:
+        ContextUtil cu = new ContextUtil((context));
+        cu.addProperties(props);
+        break;
+      case SYSTEM:
+        OptionHelper.setSystemProperties(this, props);
+    }
+  }
+
+  public void setProperty(InterpretationContext ec, String key, String value,  Scope scope) {
+     switch(scope) {
+      case LOCAL: ec.addSubstitutionProperty(key, value);
+        break;
+      case CONTEXT:
+        context.putProperty(key, value);
+        break;
+      case SYSTEM:
+        OptionHelper.setSystemProperty(this, key, value);
+    }
+  }
 
   /**
    * Set a new property for the execution context by name, value pair, or adds
@@ -63,7 +94,7 @@ public class PropertyAction extends Action {
     String value = attributes.getValue(VALUE_ATTRIBUTE);
     String scopeStr = attributes.getValue(SCOPE_ATTRIBUTE);
 
-    Scope scope = ActionUtil.stringToScope(scopeStr);
+    Scope scope = stringToScope(scopeStr);
 
     if (checkFileAttributeSanity(attributes)) {
       String file = attributes.getValue(FILE_ATTRIBUTE);
@@ -95,19 +126,28 @@ public class PropertyAction extends Action {
       // now remove both leading and trailing spaces
       value = value.trim();
       value = ec.subst(value);
-      ActionUtil.setProperty(ec, name, value, scope);
+      setProperty(ec, name, value, scope);
 
     } else {
       addError(INVALID_ATTRIBUTES);
     }
   }
 
+  private Scope stringToScope(String scopeStr) {
+    if(Scope.SYSTEM.toString().equalsIgnoreCase(scopeStr))
+      return Scope.SYSTEM;
+     if(Scope.CONTEXT.toString().equalsIgnoreCase(scopeStr))
+      return Scope.CONTEXT;
+
+    return Scope.LOCAL;
+  }
+
   void loadAndSetProperties(InterpretationContext ec, InputStream istream, Scope scope)
       throws IOException {
     Properties props = new Properties();
     props.load(istream);
     istream.close();
-    ActionUtil.setProperties(ec, props, scope);
+    setProperties(ec, props, scope);
   }
 
   boolean checkFileAttributeSanity(Attributes attributes) {
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/action/StatusListenerAction.java b/logback-core/src/main/java/ch/qos/logback/core/joran/action/StatusListenerAction.java
index 8d10339..bf285aa 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/action/StatusListenerAction.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/action/StatusListenerAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/action/TimestampAction.java b/logback-core/src/main/java/ch/qos/logback/core/joran/action/TimestampAction.java
index 900fdfb..5e83494 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/action/TimestampAction.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/action/TimestampAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -16,7 +16,6 @@ package ch.qos.logback.core.joran.action;
 import ch.qos.logback.core.util.CachingDateFormatter;
 import org.xml.sax.Attributes;
 
-import ch.qos.logback.core.joran.action.ActionUtil.Scope;
 import ch.qos.logback.core.joran.spi.ActionException;
 import ch.qos.logback.core.joran.spi.InterpretationContext;
 import ch.qos.logback.core.util.OptionHelper;
@@ -65,15 +64,12 @@ public class TimestampAction extends Action {
     if (inError)
       return;
 
-    String scopeStr = attributes.getValue(SCOPE_ATTRIBUTE);
-    Scope scope = ActionUtil.stringToScope(scopeStr);
-    
     CachingDateFormatter sdf = new CachingDateFormatter(datePatternStr);
     String val = sdf.format(timeReference);
 
     addInfo("Adding property to the context with key=\"" + keyStr
-        + "\" and value=\"" + val + "\" to the " + scope + " scope");
-    ActionUtil.setProperty(ec, keyStr, val, scope);
+        + "\" and value=\"" + val + "\" to the context");
+    context.putProperty(keyStr, val);
   }
 
   @Override
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/conditional/Condition.java b/logback-core/src/main/java/ch/qos/logback/core/joran/conditional/Condition.java
index 31ee094..538df77 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/conditional/Condition.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/conditional/Condition.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/conditional/ElseAction.java b/logback-core/src/main/java/ch/qos/logback/core/joran/conditional/ElseAction.java
index 88dc585..7420f41 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/conditional/ElseAction.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/conditional/ElseAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/conditional/IfAction.java b/logback-core/src/main/java/ch/qos/logback/core/joran/conditional/IfAction.java
index 48609c7..5384dd9 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/conditional/IfAction.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/conditional/IfAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -16,7 +16,6 @@ package ch.qos.logback.core.joran.conditional;
 import java.util.List;
 import java.util.Stack;
 
-import ch.qos.logback.core.CoreConstants;
 import ch.qos.logback.core.util.EnvUtil;
 import org.xml.sax.Attributes;
 
@@ -30,8 +29,7 @@ import ch.qos.logback.core.util.OptionHelper;
 public class IfAction extends Action {
   private static final String CONDITION_ATTR = "condition";
 
-  public static final String MISSING_JANINO_MSG = "Could not find Janino library on the class path. Skipping conditional processing.";
-  public static final String MISSING_JANINO_SEE = "See also " + CoreConstants.CODES_URL + "#ifJanino";
+  public static String MISSING_JANINO_MSG = "Could not find Janino library on the class path. Skipping conditional processing.";
 
   Stack<IfState> stack = new Stack<IfState>();
   
@@ -50,7 +48,6 @@ public class IfAction extends Action {
     ic.pushObject(this);
     if(!EnvUtil.isJaninoAvailable()) {
        addError(MISSING_JANINO_MSG);
-       addError(MISSING_JANINO_SEE);
        return;
      }
 
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/conditional/PropertyEvalScriptBuilder.java b/logback-core/src/main/java/ch/qos/logback/core/joran/conditional/PropertyEvalScriptBuilder.java
index 6b9c602..da72519 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/conditional/PropertyEvalScriptBuilder.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/conditional/PropertyEvalScriptBuilder.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -19,8 +19,10 @@ import java.util.HashMap;
 import java.util.Map;
 
 import ch.qos.logback.core.spi.PropertyContainer;
-import org.codehaus.commons.compiler.CompileException;
 import org.codehaus.janino.ClassBodyEvaluator;
+import org.codehaus.janino.CompileException;
+import org.codehaus.janino.Parser.ParseException;
+import org.codehaus.janino.Scanner.ScanException;
 
 import ch.qos.logback.core.spi.ContextAwareBase;
 
@@ -39,15 +41,13 @@ public class PropertyEvalScriptBuilder extends ContextAwareBase {
   Map<String, String> map = new HashMap<String, String>();
 
   public Condition build(String script) throws IllegalAccessException,
-          CompileException,
-          InstantiationException,
+          CompileException, ParseException, ScanException, InstantiationException,
           SecurityException, NoSuchMethodException, IllegalArgumentException,
           InvocationTargetException {
 
     ClassBodyEvaluator cbe = new ClassBodyEvaluator();
-    cbe.setImplementedInterfaces(new Class[]{Condition.class});
-    cbe.setExtendedClass(PropertyWrapperForScripts.class);
-    cbe.setParentClassLoader(ClassBodyEvaluator.class.getClassLoader());
+    cbe.setImplementedTypes(new Class[]{Condition.class});
+    cbe.setExtendedType(PropertyWrapperForScripts.class);
     cbe.cook(SCRIPT_PREFIX + script + SCRIPT_SUFFIX);
 
     Class<?> clazz = cbe.getClazz();
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/conditional/PropertyWrapperForScripts.java b/logback-core/src/main/java/ch/qos/logback/core/joran/conditional/PropertyWrapperForScripts.java
index 8eb495c..fd832a9 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/conditional/PropertyWrapperForScripts.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/conditional/PropertyWrapperForScripts.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/conditional/ThenAction.java b/logback-core/src/main/java/ch/qos/logback/core/joran/conditional/ThenAction.java
index f0acd4f..8c10ff2 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/conditional/ThenAction.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/conditional/ThenAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/conditional/ThenOrElseActionBase.java b/logback-core/src/main/java/ch/qos/logback/core/joran/conditional/ThenOrElseActionBase.java
index b4ca29b..025b99f 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/conditional/ThenOrElseActionBase.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/conditional/ThenOrElseActionBase.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/event/BodyEvent.java b/logback-core/src/main/java/ch/qos/logback/core/joran/event/BodyEvent.java
index fd2801e..7c27e86 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/event/BodyEvent.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/event/BodyEvent.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/event/EndEvent.java b/logback-core/src/main/java/ch/qos/logback/core/joran/event/EndEvent.java
index d98b5bd..d50c74a 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/event/EndEvent.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/event/EndEvent.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/event/InPlayListener.java b/logback-core/src/main/java/ch/qos/logback/core/joran/event/InPlayListener.java
index 81ec5c1..487e38a 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/event/InPlayListener.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/event/InPlayListener.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/event/SaxEvent.java b/logback-core/src/main/java/ch/qos/logback/core/joran/event/SaxEvent.java
index 40d3e6a..a448f7b 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/event/SaxEvent.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/event/SaxEvent.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/event/SaxEventRecorder.java b/logback-core/src/main/java/ch/qos/logback/core/joran/event/SaxEventRecorder.java
index 029b88b..04f8d14 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/event/SaxEventRecorder.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/event/SaxEventRecorder.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -22,9 +22,6 @@ import javax.xml.parsers.SAXParser;
 import javax.xml.parsers.SAXParserFactory;
 
 import static ch.qos.logback.core.CoreConstants.XML_PARSING;
-
-import ch.qos.logback.core.joran.spi.ElementPath;
-import ch.qos.logback.core.joran.spi.ElementSelector;
 import org.xml.sax.Attributes;
 import org.xml.sax.InputSource;
 import org.xml.sax.Locator;
@@ -34,6 +31,7 @@ import org.xml.sax.helpers.DefaultHandler;
 
 import ch.qos.logback.core.Context;
 import ch.qos.logback.core.joran.spi.JoranException;
+import ch.qos.logback.core.joran.spi.Pattern;
 import ch.qos.logback.core.spi.ContextAware;
 import ch.qos.logback.core.spi.ContextAwareImpl;
 import ch.qos.logback.core.status.Status;
@@ -42,13 +40,13 @@ public class SaxEventRecorder extends DefaultHandler implements ContextAware {
 
   final ContextAwareImpl cai;
 
-  public SaxEventRecorder(Context context) {
-    cai = new ContextAwareImpl(context, this);
+  public SaxEventRecorder() {
+    cai = new ContextAwareImpl(this);
   }
 
   public List<SaxEvent> saxEventList = new ArrayList<SaxEvent>();
   Locator locator;
-  ElementPath globalElementPath = new ElementPath();
+  Pattern globalPattern = new Pattern();
 
   final public void recordEvents(InputStream inputStream) throws JoranException {
     recordEvents(new InputSource(inputStream));
@@ -104,8 +102,8 @@ public class SaxEventRecorder extends DefaultHandler implements ContextAware {
       Attributes atts) {
 
     String tagName = getTagName(localName, qName);
-    globalElementPath.push(tagName);
-    ElementPath current = globalElementPath.duplicate();
+    globalPattern.push(tagName);
+    Pattern current = (Pattern) globalPattern.clone();
     saxEventList.add(new StartEvent(current, namespaceURI, localName, qName,
         atts, getLocator()));
   }
@@ -140,7 +138,7 @@ public class SaxEventRecorder extends DefaultHandler implements ContextAware {
   public void endElement(String namespaceURI, String localName, String qName) {
     saxEventList
         .add(new EndEvent(namespaceURI, localName, qName, getLocator()));
-    globalElementPath.pop();
+    globalPattern.pop();
   }
 
   String getTagName(String localName, String qName) {
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/event/StartEvent.java b/logback-core/src/main/java/ch/qos/logback/core/joran/event/StartEvent.java
index 5069439..a8c85c8 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/event/StartEvent.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/event/StartEvent.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,22 +13,23 @@
  */
 package ch.qos.logback.core.joran.event;
 
-import ch.qos.logback.core.joran.spi.ElementPath;
 import org.xml.sax.Attributes;
 import org.xml.sax.Locator;
 import org.xml.sax.helpers.AttributesImpl;
 
+import ch.qos.logback.core.joran.spi.Pattern;
+
 public class StartEvent extends SaxEvent {
 
   final public Attributes attributes;
-  final public ElementPath elementPath;
+  final public Pattern pattern;
   
-  StartEvent(ElementPath elementPath, String namespaceURI, String localName, String qName,
+  StartEvent(Pattern pattern, String namespaceURI, String localName, String qName,
       Attributes attributes, Locator locator) {
     super(namespaceURI, localName, qName, locator);
     // locator impl is used to take a snapshot!
     this.attributes = new AttributesImpl(attributes);
-    this.elementPath = elementPath;
+    this.pattern = pattern;
   }
 
   public Attributes getAttributes() {
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/event/stax/BodyEvent.java b/logback-core/src/main/java/ch/qos/logback/core/joran/event/stax/BodyEvent.java
deleted file mode 100644
index 4dc14bf..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/event/stax/BodyEvent.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package ch.qos.logback.core.joran.event.stax;
-
-import javax.xml.stream.Location;
-
-public class BodyEvent extends StaxEvent {
-
-
-  private String text;
-
-  BodyEvent(String text, Location location) {
-    super(null, location);
-    this.text = text;
-  }
-
-  public String getText() {
-    return text;
-  }
-
-  void append(String txt) {
-    text += txt;
-  }
-
-  @Override
-  public String toString() {
-    return "BodyEvent(" + getText() + ")" + location.getLineNumber() + ","
-            + location.getColumnNumber();
-  }
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/event/stax/EndEvent.java b/logback-core/src/main/java/ch/qos/logback/core/joran/event/stax/EndEvent.java
deleted file mode 100644
index 8699efd..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/event/stax/EndEvent.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package ch.qos.logback.core.joran.event.stax;
-
-import javax.xml.stream.Location;
-
-/**
- * Created with IntelliJ IDEA.
- * User: ceki
- * Date: 7/2/13
- * Time: 4:07 PM
- * To change this template use File | Settings | File Templates.
- */
-public class EndEvent extends StaxEvent {
-
-  public EndEvent(String name, Location location) {
-    super(name, location);
-  }
-
-  @Override
-  public String toString() {
-    return "EndEvent("+getName()+")  ["+location.getLineNumber()+","+location.getColumnNumber()+"]";
-  }
-
-
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/event/stax/StartEvent.java b/logback-core/src/main/java/ch/qos/logback/core/joran/event/stax/StartEvent.java
deleted file mode 100644
index 3118480..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/event/stax/StartEvent.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package ch.qos.logback.core.joran.event.stax;
-
-import ch.qos.logback.core.joran.spi.ElementPath;
-
-import javax.xml.stream.Location;
-import javax.xml.stream.events.Attribute;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-public class StartEvent extends StaxEvent {
-
-  List<Attribute> attributes;
-  public ElementPath elementPath;
-
-  StartEvent(ElementPath elementPath, String name, Iterator<Attribute> attributeIterator, Location location) {
-    super(name, location);
-    populateAttributes(attributeIterator);
-    this.elementPath = elementPath;
-  }
-
-  private void populateAttributes(Iterator<Attribute> attributeIterator) {
-    while (attributeIterator.hasNext()) {
-      if (attributes == null) {
-        attributes = new ArrayList<Attribute>(2);
-      }
-      attributes.add(attributeIterator.next());
-    }
-  }
-
-  public ElementPath getElementPath() {
-    return elementPath;
-  }
-
-  public List<Attribute> getAttributeList() {
-    return attributes;
-  }
-
-  Attribute getAttributeByName(String name) {
-    if(attributes == null)
-      return null;
-
-    for(Attribute attr: attributes) {
-      if(name.equals(attr.getName().getLocalPart()))
-        return attr;
-    }
-    return null;
-  }
-
-  @Override
-  public String toString() {
-    return "StartEvent(" + getName() + ")  [" + location.getLineNumber() + "," + location.getColumnNumber() + "]";
-  }
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/event/stax/StaxEvent.java b/logback-core/src/main/java/ch/qos/logback/core/joran/event/stax/StaxEvent.java
deleted file mode 100644
index 1468f7b..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/event/stax/StaxEvent.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package ch.qos.logback.core.joran.event.stax;
-
-
-import javax.xml.stream.Location;
-
-public class StaxEvent {
-
-  final String name;
-  final Location location;
-
-  StaxEvent(String name, Location location) {
-    this.name = name;
-    this.location = location;
-
-  }
-
-  public String getName() {
-    return name;
-  }
-
-  public Location getLocation() {
-    return location;
-  }
-
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/event/stax/StaxEventRecorder.java b/logback-core/src/main/java/ch/qos/logback/core/joran/event/stax/StaxEventRecorder.java
deleted file mode 100644
index 45cd95a..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/event/stax/StaxEventRecorder.java
+++ /dev/null
@@ -1,103 +0,0 @@
-package ch.qos.logback.core.joran.event.stax;
-
-import ch.qos.logback.core.Context;
-import ch.qos.logback.core.joran.spi.ElementPath;
-import ch.qos.logback.core.joran.spi.JoranException;
-import ch.qos.logback.core.spi.ContextAwareBase;
-
-import javax.xml.stream.XMLEventReader;
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.events.Characters;
-import javax.xml.stream.events.EndElement;
-import javax.xml.stream.events.StartElement;
-import javax.xml.stream.events.XMLEvent;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
-
-public class StaxEventRecorder extends ContextAwareBase {
-
-  List<StaxEvent> eventList = new ArrayList<StaxEvent>();
-  ElementPath globalElementPath = new ElementPath();
-
-  public StaxEventRecorder(Context context) {
-    setContext(context);
-  }
-
-  public void recordEvents(InputStream inputStream) throws JoranException {
-    try {
-      XMLEventReader xmlEventReader = XMLInputFactory.newInstance().createXMLEventReader(inputStream);
-      read(xmlEventReader);
-    } catch (XMLStreamException e) {
-      throw new JoranException("Problem parsing XML document. See previously reported errors.", e);
-    }
-  }
-
-  public List<StaxEvent> getEventList() {
-    return eventList;
-  }
-
-  private void read(XMLEventReader xmlEventReader) throws XMLStreamException {
-    while (xmlEventReader.hasNext()) {
-      XMLEvent xmlEvent = xmlEventReader.nextEvent();
-      switch (xmlEvent.getEventType()) {
-        case XMLEvent.START_ELEMENT:
-          addStartElement(xmlEvent);
-          break;
-        case XMLEvent.CHARACTERS:
-          addCharacters(xmlEvent);
-          break;
-        case XMLEvent.END_ELEMENT:
-          addEndEvent(xmlEvent);
-          break;
-        default:
-          break;
-      }
-    }
-  }
-
-  private void addStartElement(XMLEvent xmlEvent) {
-    StartElement se = xmlEvent.asStartElement();
-    String tagName = se.getName().getLocalPart();
-    globalElementPath.push(tagName);
-    ElementPath current = globalElementPath.duplicate();
-    StartEvent startEvent = new StartEvent(current, tagName, se.getAttributes(), se.getLocation());
-    eventList.add(startEvent);
-  }
-
-  private void addCharacters(XMLEvent xmlEvent) {
-    Characters characters = xmlEvent.asCharacters();
-    StaxEvent lastEvent = getLastEvent();
-
-    if (lastEvent instanceof BodyEvent) {
-      BodyEvent be = (BodyEvent) lastEvent;
-      be.append(characters.getData());
-    } else {
-      // ignore space only text if the previous event is not a BodyEvent
-      if(!characters.isWhiteSpace()) {
-        BodyEvent bodyEvent = new BodyEvent(characters.getData(), xmlEvent.getLocation());
-        eventList.add(bodyEvent);
-      }
-    }
-  }
-
-  private void addEndEvent(XMLEvent xmlEvent) {
-    EndElement ee = xmlEvent.asEndElement();
-    String tagName = ee.getName().getLocalPart();
-    EndEvent endEvent = new EndEvent(tagName, ee.getLocation());
-    eventList.add(endEvent);
-    globalElementPath.pop();
-  }
-
-  StaxEvent getLastEvent() {
-    if (eventList.isEmpty()) {
-      return null;
-    }
-    int size = eventList.size();
-    if(size == 0)
-      return null;
-    return eventList.get(size - 1);
-  }
-
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/node/ComponentNode.java b/logback-core/src/main/java/ch/qos/logback/core/joran/node/ComponentNode.java
deleted file mode 100644
index fb1fa95..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/node/ComponentNode.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package ch.qos.logback.core.joran.node;
-
-
-public class ComponentNode {
-
-  String classStr;
-
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/ActionException.java b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/ActionException.java
index e51f642..4b0cf52 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/ActionException.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/ActionException.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/ConfigurationWatchList.java b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/ConfigurationWatchList.java
index 78c0441..011e07e 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/ConfigurationWatchList.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/ConfigurationWatchList.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/ConsoleTarget.java b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/ConsoleTarget.java
index 2c44bf4..020e7aa 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/ConsoleTarget.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/ConsoleTarget.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -18,10 +18,10 @@ import java.io.OutputStream;
 
 /**
  * The set of console output targets.
-
- * @author Ruediger Dohna
+ * 
  * @author Ceki Gülcü
  * @author Tom SH Liu
+ * @author Ruediger Dohna
  * @author David Roussel
  */
 public enum ConsoleTarget {
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/DefaultClass.java b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/DefaultClass.java
index 967f60c..68a7922 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/DefaultClass.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/DefaultClass.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/DefaultNestedComponentRegistry.java b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/DefaultNestedComponentRegistry.java
index 11a56bc..6ddb72f 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/DefaultNestedComponentRegistry.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/DefaultNestedComponentRegistry.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -24,18 +24,18 @@ import java.util.Map;
  */
 public class DefaultNestedComponentRegistry {
 
-  Map<HostClassAndPropertyDouble, Class<?>> defaultComponentMap = new HashMap<HostClassAndPropertyDouble, Class<?>>();
+  Map<HostClassAndPropertyDouble, Class> defaultComponentMap = new HashMap<HostClassAndPropertyDouble, Class>();
 
-  public void add(Class<?> hostClass, String propertyName, Class<?> componentClass) {
+  public void add(Class hostClass, String propertyName, Class componentClass) {
     HostClassAndPropertyDouble hpDouble = new HostClassAndPropertyDouble(
         hostClass, propertyName.toLowerCase());
     defaultComponentMap.put(hpDouble, componentClass);
   }
 
-  public Class<?> findDefaultComponentType(Class<?> hostClass, String propertyName) {
+  public Class findDefaultComponentType(Class hostClass, String propertyName) {
     propertyName = propertyName.toLowerCase();
     while (hostClass != null) {
-      Class<?> componentClass = oneShotFind(hostClass, propertyName);
+      Class componentClass = oneShotFind(hostClass, propertyName);
       if (componentClass != null) {
         return componentClass;
       }
@@ -44,7 +44,7 @@ public class DefaultNestedComponentRegistry {
     return null;
   }
 
-  private Class<?> oneShotFind(Class<?> hostClass, String propertyName) {
+  private Class oneShotFind(Class hostClass, String propertyName) {
     HostClassAndPropertyDouble hpDouble = new HostClassAndPropertyDouble(
         hostClass, propertyName);
     return defaultComponentMap.get(hpDouble);
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/ElementPath.java b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/ElementPath.java
deleted file mode 100644
index 7a24801..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/ElementPath.java
+++ /dev/null
@@ -1,122 +0,0 @@
-package ch.qos.logback.core.joran.spi;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * A element path characterizes a traversal path in an XML document.
- *
- * @author Ceki Gulcu
- * @since 1.1.0
- */
-public class ElementPath {
-  // contains String instances
-  ArrayList<String> partList = new ArrayList<String>();
-
-  public ElementPath() {
-  }
-
-  public ElementPath(List<String> list) {
-    partList.addAll(list);
-  }
-
-  /**
-   * Build an elementPath from a string.
-   * <p/>
-   * Note that "/x" is considered equivalent to "x" and to "x/"
-   */
-  public ElementPath(String pathStr) {
-    if (pathStr == null) {
-      return;
-    }
-
-    String[] partArray = pathStr.split("/");
-    if(partArray == null) return;
-
-    for(String part: partArray) {
-      if(part.length() >0) {
-        partList.add(part);
-      }
-    }
-  }
-
-  public ElementPath duplicate() {
-    ElementPath p = new ElementPath();
-    p.partList.addAll(this.partList);
-    return p;
-  }
-
-  // Joran error skipping relies on the equals method
-  @Override
-  public boolean equals(Object o) {
-    if ((o == null) || !(o instanceof ElementPath)) {
-      return false;
-    }
-
-    ElementPath r = (ElementPath) o;
-
-    if (r.size() != size()) {
-      return false;
-    }
-
-    int len = size();
-
-    for (int i = 0; i < len; i++) {
-      if (!equalityCheck(get(i), r.get(i))) {
-        return false;
-      }
-    }
-
-    // if everything matches, then the two patterns are equal
-    return true;
-  }
-
-  private boolean equalityCheck(String x, String y) {
-    return x.equalsIgnoreCase(y);
-  }
-
-  public List<String> getCopyOfPartList() {
-    return new ArrayList<String>(partList);
-  }
-
-  public void push(String s) {
-    partList.add(s);
-  }
-
-  public String get(int i) {
-    return (String) partList.get(i);
-  }
-
-  public void pop() {
-    if (!partList.isEmpty()) {
-      partList.remove(partList.size() - 1);
-    }
-  }
-
-  public String peekLast() {
-    if (!partList.isEmpty()) {
-      int size = partList.size();
-      return (String) partList.get(size - 1);
-    } else {
-      return null;
-    }
-  }
-
-  public int size() {
-    return partList.size();
-  }
-
-
-  protected String toStableString() {
-    StringBuilder result = new StringBuilder();
-    for (String current : partList) {
-      result.append("[").append(current).append("]");
-    }
-    return result.toString();
-  }
-
-  @Override
-  public String toString() {
-    return toStableString();
-  }
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/EventPlayer.java b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/EventPlayer.java
index 40eea88..20e751e 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/EventPlayer.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/EventPlayer.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/HostClassAndPropertyDouble.java b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/HostClassAndPropertyDouble.java
index c2d2d3b..cc9ce67 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/HostClassAndPropertyDouble.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/HostClassAndPropertyDouble.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -25,15 +25,15 @@ package ch.qos.logback.core.joran.spi;
  */
 public class HostClassAndPropertyDouble {
 
-  final Class<?> hostClass;
+  final Class hostClass;
   final String propertyName;
 
-  public HostClassAndPropertyDouble(Class<?> hostClass, String propertyName) {
+  public HostClassAndPropertyDouble(Class hostClass, String propertyName) {
     this.hostClass = hostClass;
     this.propertyName = propertyName;
   }
 
-  public Class<?> getHostClass() {
+  public Class getHostClass() {
     return hostClass;
   }
 
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/InterpretationContext.java b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/InterpretationContext.java
index d1ee3c5..a2dc65a 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/InterpretationContext.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/InterpretationContext.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -15,6 +15,7 @@ package ch.qos.logback.core.joran.spi;
 
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
@@ -61,10 +62,6 @@ public class InterpretationContext extends ContextAwareBase implements
     return defaultNestedComponentRegistry;
   }
   
-  public Map<String, String> getCopyOfPropertyMap() {
-    return new HashMap<String, String>(propertiesMap);
-  }
-  
   void setPropertiesMap(Map<String, String> propertiesMap) {
     this.propertiesMap = propertiesMap;
   }
@@ -132,10 +129,10 @@ public class InterpretationContext extends ContextAwareBase implements
     if (props == null) {
       return;
     }
-    for(Object keyObject: props.keySet()) {
-      String key = (String) keyObject;
-      String val = props.getProperty(key);
-      addSubstitutionProperty(key, val);
+    Iterator i = props.keySet().iterator();
+    while (i.hasNext()) {
+      String key = (String) i.next();
+      addSubstitutionProperty(key, props.getProperty(key));
     }
   }
 
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/Interpreter.java b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/Interpreter.java
index 4de45ad..bfff287 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/Interpreter.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/Interpreter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -65,13 +65,13 @@ import ch.qos.logback.core.spi.ContextAwareImpl;
  * 
  */
 public class Interpreter {
-  private static List<Action> EMPTY_LIST = new Vector<Action>(0);
+  private static List EMPTY_LIST = new Vector(0);
 
   final private RuleStore ruleStore;
   final private InterpretationContext interpretationContext;
   final private ArrayList<ImplicitAction> implicitActions;
   final private CAI_WithLocatorSupport cai;
-  private ElementPath elementPath;
+  private Pattern pattern;
   Locator locator;
   EventPlayer eventPlayer;
 
@@ -83,21 +83,22 @@ public class Interpreter {
    * {@link #endElement}.
    * 
    */
-  Stack<List<Action>> actionListStack;
+  Stack<List> actionListStack;
 
   /**
    * If the skip nested is set, then we skip all its nested elements until it is
    * set back to null at when the element's end is reached.
    */
-  ElementPath skip = null;
+  Pattern skip = null;
 
-  public Interpreter(Context context, RuleStore rs, ElementPath initialElementPath) {
-    this.cai = new CAI_WithLocatorSupport(context, this);
+  public Interpreter(Context context, RuleStore rs, Pattern initialPattern) {
+    this.cai = new CAI_WithLocatorSupport(this);
+    this.cai.setContext(context);
     ruleStore = rs;
     interpretationContext = new InterpretationContext(context, this);
     implicitActions = new ArrayList<ImplicitAction>(3);
-    this.elementPath = initialElementPath;
-    actionListStack = new Stack<List<Action>>();
+    this.pattern = initialPattern;
+    actionListStack = new Stack<List>();
     eventPlayer = new EventPlayer(this);
   }
 
@@ -133,7 +134,7 @@ public class Interpreter {
       String qName, Attributes atts) {
 
     String tagName = getTagName(localName, qName);
-    elementPath.push(tagName);
+    pattern.push(tagName);
 
     if (skip != null) {
       // every startElement pushes an action list
@@ -141,7 +142,7 @@ public class Interpreter {
       return;
     }
 
-    List<Action> applicableActionList = getApplicableActionList(elementPath, atts);
+    List applicableActionList = getApplicableActionList(pattern, atts);
     if (applicableActionList != null) {
       actionListStack.add(applicableActionList);
       callBeginAction(applicableActionList, tagName, atts);
@@ -149,7 +150,7 @@ public class Interpreter {
       // every startElement pushes an action list
       pushEmptyActionList();
       String errMsg = "no applicable action for [" + tagName
-          + "], current ElementPath  is [" + elementPath + "]";
+          + "], current pattern is [" + pattern + "]";
       cai.addError(errMsg);
     }
   }
@@ -166,7 +167,7 @@ public class Interpreter {
     setDocumentLocator(be.locator);
 
     String body = be.getText();
-    List<Action> applicableActionList = actionListStack.peek();
+    List applicableActionList = actionListStack.peek();
 
     if (body != null) {
       body = body.trim();
@@ -186,10 +187,10 @@ public class Interpreter {
     // given that an action list is always pushed for every startElement, we
     // need
     // to always pop for every endElement
-    List<Action> applicableActionList = (List<Action>) actionListStack.pop();
+    List applicableActionList = (List) actionListStack.pop();
 
     if (skip != null) {
-      if (skip.equals(elementPath)) {
+      if (skip.equals(pattern)) {
         skip = null;
       }
     } else if (applicableActionList != EMPTY_LIST) {
@@ -197,7 +198,7 @@ public class Interpreter {
     }
 
     // given that we always push, we must also pop the pattern
-    elementPath.pop();
+    pattern.pop();
   }
 
   public Locator getLocator() {
@@ -227,14 +228,14 @@ public class Interpreter {
    * action is found, it is returned. Thus, the returned list will have at most
    * one element.
    */
-  List<Action> lookupImplicitAction(ElementPath elementPath, Attributes attributes,
+  List lookupImplicitAction(Pattern pattern, Attributes attributes,
       InterpretationContext ec) {
     int len = implicitActions.size();
 
     for (int i = 0; i < len; i++) {
       ImplicitAction ia = (ImplicitAction) implicitActions.get(i);
 
-      if (ia.isApplicable(elementPath, attributes, ec)) {
+      if (ia.isApplicable(pattern, attributes, ec)) {
         List<Action> actionList = new ArrayList<Action>(1);
         actionList.add(ia);
 
@@ -248,25 +249,25 @@ public class Interpreter {
   /**
    * Return the list of applicable patterns for this
    */
-  List<Action> getApplicableActionList(ElementPath elementPath, Attributes attributes) {
-    List<Action> applicableActionList = ruleStore.matchActions(elementPath);
+  List getApplicableActionList(Pattern pattern, Attributes attributes) {
+    List applicableActionList = ruleStore.matchActions(pattern);
 
     // logger.debug("set of applicable patterns: " + applicableActionList);
     if (applicableActionList == null) {
-      applicableActionList = lookupImplicitAction(elementPath, attributes,
+      applicableActionList = lookupImplicitAction(pattern, attributes,
           interpretationContext);
     }
 
     return applicableActionList;
   }
 
-  void callBeginAction(List<Action> applicableActionList, String tagName,
+  void callBeginAction(List applicableActionList, String tagName,
       Attributes atts) {
     if (applicableActionList == null) {
       return;
     }
 
-    Iterator<Action> i = applicableActionList.iterator();
+    Iterator i = applicableActionList.iterator();
     while (i.hasNext()) {
       Action action = (Action) i.next();
       // now let us invoke the action. We catch and report any eventual
@@ -274,23 +275,23 @@ public class Interpreter {
       try {
         action.begin(interpretationContext, tagName, atts);
       } catch (ActionException e) {
-        skip = elementPath.duplicate();
+        skip = (Pattern) pattern.clone();
         cai.addError("ActionException in Action for tag [" + tagName + "]", e);
       } catch (RuntimeException e) {
-        skip = elementPath.duplicate();
+        skip = (Pattern) pattern.clone();
         cai.addError("RuntimeException in Action for tag [" + tagName + "]", e);
       }
     }
   }
 
-  private void callBodyAction(List<Action> applicableActionList, String body) {
+  private void callBodyAction(List applicableActionList, String body) {
     if (applicableActionList == null) {
       return;
     }
-    Iterator<Action> i = applicableActionList.iterator();
+    Iterator i = applicableActionList.iterator();
 
     while (i.hasNext()) {
-      Action action = i.next();
+      Action action = (Action) i.next();
       try {
         action.body(interpretationContext, body);
       } catch (ActionException ae) {
@@ -301,16 +302,16 @@ public class Interpreter {
     }
   }
 
-  private void callEndAction(List<Action> applicableActionList, String tagName) {
+  private void callEndAction(List applicableActionList, String tagName) {
     if (applicableActionList == null) {
       return;
     }
 
     // logger.debug("About to call end actions on node: [" + localName + "]");
-    Iterator<Action> i = applicableActionList.iterator();
+    Iterator i = applicableActionList.iterator();
 
     while (i.hasNext()) {
-      Action action = i.next();
+      Action action = (Action) i.next();
       // now let us invoke the end method of the action. We catch and report
       // any eventual exceptions
       try {
@@ -340,8 +341,8 @@ public class Interpreter {
  */
 class CAI_WithLocatorSupport extends ContextAwareImpl {
 
-  CAI_WithLocatorSupport(Context context, Interpreter interpreter) {
-    super(context, interpreter);
+  CAI_WithLocatorSupport(Interpreter interpreter) {
+    super(interpreter);
   }
 
   @Override
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/JoranException.java b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/JoranException.java
index 59cca72..b390105 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/JoranException.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/JoranException.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/NoAutoStart.java b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/NoAutoStart.java
index 6acd1e6..0db8ede 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/NoAutoStart.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/NoAutoStart.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/NoAutoStartUtil.java b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/NoAutoStartUtil.java
index b420bd9..85eabef 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/NoAutoStartUtil.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/NoAutoStartUtil.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/ElementSelector.java b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/Pattern.java
similarity index 50%
rename from logback-core/src/main/java/ch/qos/logback/core/joran/spi/ElementSelector.java
rename to logback-core/src/main/java/ch/qos/logback/core/joran/spi/Pattern.java
index 3f5ddaa..6069cae 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/ElementSelector.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/Pattern.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -17,47 +17,101 @@ import java.util.ArrayList;
 import java.util.List;
 
 /**
- * ElementSelector extends {@link ElementPath} with matching operations such as {@link #fullPathMatch(ElementPath)},
- * {@link #getPrefixMatchLength(ElementPath)} and {@link #getTailMatchLength(ElementPath)}.
- *
- * <p>Parts of the path may contain '*' for wildcard matching.
- *
+ * A pattern is used to designate XML elements in a document.
+ * 
+ * <p>For more information see
+ * http://logback.qos.ch/manual/onJoran.html#pattern
+ * 
  * @author Ceki Gülcü
- * @since 1.1.0
  */
-public class ElementSelector extends ElementPath {
+public class Pattern {
+
+  // contains String instances
+  ArrayList<String> partList = new ArrayList<String>();
 
-  public ElementSelector() {
-    super();
+
+  public Pattern() {
   }
 
-  public ElementSelector(List<String> list) {
-    super(list);
+  public Pattern(List<String> list) {
+    partList.addAll(list);
   }
 
   /**
-   * Build an elementPath from a string.
-   *
+   * Build a pattern from a string.
+   * 
    * Note that "/x" is considered equivalent to "x" and to "x/"
-   *
+   * 
    */
-  public ElementSelector(String p) {
-    super(p);
-  }
+  public Pattern(String p) {
+    this();
 
-  public boolean fullPathMatch(ElementPath path) {
-    if (path.size() != size()) {
-      return false;
+    if (p == null) {
+      return;
     }
 
-    int len = size();
-    for (int i = 0; i < len; i++) {
-      if (!equalityCheck(get(i), path.get(i))) {
-        return false;
+    int lastIndex = 0;
+
+    // System.out.println("p is "+ p);
+    while (true) {
+      int k = p.indexOf('/', lastIndex);
+
+      // System.out.println("k is "+ k);
+      if (k == -1) {
+        String lastPart = p.substring(lastIndex);
+        if (lastPart != null && lastPart.length() > 0) {
+          partList.add(p.substring(lastIndex));
+        }
+        break;
+      } else {
+        String c = p.substring(lastIndex, k);
+
+        if (c.length() > 0) {
+          partList.add(c);
+        }
+
+        lastIndex = k + 1;
       }
     }
-    // if everything matches, then the two patterns are equal
-    return true;
+
+    // System.out.println(components);
+  }
+
+  public List<String> getCopyOfPartList() {
+    return new ArrayList<String>(partList);
+  }
+  
+  public Object clone() {
+    Pattern p = new Pattern();
+    p.partList.addAll(this.partList);
+    return p;
+  }
+
+  public void push(String s) {
+    partList.add(s);
+  }
+
+  public int size() {
+    return partList.size();
+  }
+
+  public String get(int i) {
+    return (String) partList.get(i);
+  }
+
+  public void pop() {
+    if (!partList.isEmpty()) {
+      partList.remove(partList.size() - 1);
+    }
+  }
+
+  public String peekLast() {
+    if (!partList.isEmpty()) {
+      int size = partList.size();
+      return (String) partList.get(size - 1);
+    } else {
+      return null;
+    }
   }
 
   /**
@@ -65,7 +119,7 @@ public class ElementSelector extends ElementPath {
    * with the pattern p passed as parameter. By "tail" components we mean the
    * components at the end of the pattern.
    */
-  public int getTailMatchLength(ElementPath p) {
+  public int getTailMatchLength(Pattern p) {
     if (p == null) {
       return 0;
     }
@@ -83,8 +137,8 @@ public class ElementSelector extends ElementPath {
 
     // loop from the end to the front
     for (int i = 1; i <= minLen; i++) {
-      String l = this.partList.get(lSize - i);
-      String r = p.partList.get(rSize - i);
+      String l = (String) this.partList.get(lSize - i);
+      String r = (String) p.partList.get(rSize - i);
 
       if (equalityCheck(l, r)) {
         match++;
@@ -95,20 +149,21 @@ public class ElementSelector extends ElementPath {
     return match;
   }
 
-  public boolean isContainedIn(ElementPath p) {
+  public boolean isContained(Pattern p) {
     if(p == null) {
       return false;
     }
-    return p.toStableString().contains(toStableString());
+    String lStr = this.toString();
+    return lStr.contains(p.toString());
   }
-
-
+  
+  
   /**
    * Returns the number of "prefix" components that this pattern has in common
    * with the pattern p passed as parameter. By "prefix" components we mean the
    * components at the beginning of the pattern.
    */
-  public int getPrefixMatchLength(ElementPath p) {
+  public int getPrefixMatchLength(Pattern p) {
     if (p == null) {
       return 0;
     }
@@ -125,8 +180,8 @@ public class ElementSelector extends ElementPath {
     int match = 0;
 
     for (int i = 0; i < minLen; i++) {
-      String l = this.partList.get(i);
-      String r = p.partList.get(i);
+      String l = (String) this.partList.get(i);
+      String r = (String) p.partList.get(i);
 
       if (equalityCheck(l, r)) {
         match++;
@@ -144,11 +199,11 @@ public class ElementSelector extends ElementPath {
 
   @Override
   public boolean equals(Object o) {
-    if ((o == null) || !(o instanceof ElementSelector)) {
+    if ((o == null) || !(o instanceof Pattern)) {
       return false;
     }
 
-    ElementSelector r = (ElementSelector) o;
+    Pattern r = (Pattern) o;
 
     if (r.size() != size()) {
       return false;
@@ -176,8 +231,16 @@ public class ElementSelector extends ElementPath {
       // http://jira.qos.ch/browse/LBCORE-76
       hc ^= get(i).toLowerCase().hashCode();
     }
+
     return hc;
   }
 
-
+  @Override
+  public String toString() {
+    StringBuilder result = new StringBuilder();
+    for (String current : partList) {
+      result.append("[").append(current).append("]");
+    }
+    return result.toString();
+  }
 }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/RuleStore.java b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/RuleStore.java
index e880061..eea01ba 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/RuleStore.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/RuleStore.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -19,41 +19,21 @@ import ch.qos.logback.core.joran.action.Action;
 
 /**
  * 
- * As its name indicates, a RuleStore contains 2-tuples consists of a ElementSelector
+ * As its name indicates, a RuleStore contains 2-tuples consists of a Pattern
  * and an Action.
  * 
  * <p>As a joran configurator goes through the elements in a document, it asks
  * the rule store whether there are rules matching the current pattern by
- * invoking the {@link #matchActions(ElementPath)} method.
+ * invoking the {@link #matchActions(Pattern)} method.
  * 
  * @author Ceki Gülcü
  * 
  */
 public interface RuleStore {
-
-  /**
-   * Add a new rule, given by a pattern and a action class (String).
-   *
-   * @param elementSelector
-   * @param actionClassStr
-   * @throws ClassNotFoundException
-   */
-  void addRule(ElementSelector elementSelector, String actionClassStr)
+  void addRule(Pattern pattern, String actionClassStr)
       throws ClassNotFoundException;
 
-  /**
-   * Add a new rule, given by a pattern and an action instance.
-   *
-   * @param elementSelector
-   * @param action
-   */
-  void addRule(ElementSelector elementSelector, Action action);
+  void addRule(Pattern pattern, Action action);
 
-  /**
-   * Return a list of actions matching a pattern.
-   *
-   * @param elementPath the path to match for
-   * @return list of matching actions
-   */
-  List<Action> matchActions(ElementPath elementPath);
+  List matchActions(Pattern currentPatern);
 }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/SimpleRuleStore.java b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/SimpleRuleStore.java
index aae6c1a..3f7789d 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/SimpleRuleStore.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/SimpleRuleStore.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -31,10 +31,10 @@ import ch.qos.logback.core.util.OptionHelper;
  */
 public class SimpleRuleStore extends ContextAwareBase implements RuleStore {
 
-  static String KLEENE_STAR = "*";
+  static String ANY = "*";
   
   // key: Pattern instance, value: ArrayList containing actions
-  HashMap<ElementSelector, List<Action>> rules = new HashMap<ElementSelector, List<Action>>();
+  HashMap<Pattern, List<Action>> rules = new HashMap<Pattern, List<Action>>();
 
   // public SimpleRuleStore() {
   // }
@@ -47,20 +47,20 @@ public class SimpleRuleStore extends ContextAwareBase implements RuleStore {
    * Add a new rule, i.e. a pattern, action pair to the rule store. <p> Note
    * that the added action's LoggerRepository will be set in the process.
    */
-  public void addRule(ElementSelector elementSelector, Action action) {
+  public void addRule(Pattern pattern, Action action) {
     action.setContext(context);
 
-    List<Action> a4p = rules.get(elementSelector);
+    List<Action> a4p = rules.get(pattern);
 
     if (a4p == null) {
       a4p = new ArrayList<Action>();
-      rules.put(elementSelector, a4p);
+      rules.put(pattern, a4p);
     }
 
     a4p.add(action);
   }
 
-  public void addRule(ElementSelector elementSelector, String actionClassName) {
+  public void addRule(Pattern pattern, String actionClassName) {
     Action action = null;
 
     try {
@@ -70,126 +70,110 @@ public class SimpleRuleStore extends ContextAwareBase implements RuleStore {
       addError("Could not instantiate class [" + actionClassName + "]", e);
     }
     if (action != null) {
-      addRule(elementSelector, action);
+      addRule(pattern, action);
     }
   }
 
   // exact match has highest priority
-  // if no exact match, check for suffix (tail) match, i.e matches
-  // of type */x/y. Suffix match for */x/y has higher priority than match for
-  // */x
-  // if no suffix match, check for prefix match, i.e. matches for x/*
+  // if no exact match, check for tail match, i.e matches of type */x/y
+  // tail match for */x/y has higher priority than match for */x
+  // if no tail match, check for prefix match, i.e. matches for x/*
   // match for x/y/* has higher priority than matches for x/*
 
-  public List<Action> matchActions(ElementPath elementPath) {
-    List<Action> actionList;
+  public List matchActions(Pattern currentPattern) {
+    List actionList;
 
-    if ((actionList = fullPathMatch(elementPath)) != null) {
+    if ((actionList = rules.get(currentPattern)) != null) {
       return actionList;
-    } else if ((actionList = suffixMatch(elementPath)) != null) {
+    } else if ((actionList = tailMatch(currentPattern)) != null) {
       return actionList;
-    } else if ((actionList = prefixMatch(elementPath)) != null) {
+    } else if ((actionList = prefixMatch(currentPattern)) != null) {
       return actionList;
-    } else if ((actionList = middleMatch(elementPath)) != null) {
+    } else if ((actionList = middleMatch(currentPattern)) != null) { 
       return actionList;
     } else {
       return null;
     }
   }
 
-  List<Action> fullPathMatch(ElementPath elementPath) {
-    for (ElementSelector selector : rules.keySet()) {
-       if(selector.fullPathMatch(elementPath))
-         return rules.get(selector);
-    }
-    return null;
-  }
-
-  // Suffix matches are matches of type */x/y
-  List<Action> suffixMatch(ElementPath elementPath) {
+  List tailMatch(Pattern currentPattern) {
     int max = 0;
-    ElementSelector longestMatchingElementSelector = null;
+    Pattern longestMatchingPattern = null;
+
+    for (Pattern p : rules.keySet()) {
 
-    for (ElementSelector selector : rules.keySet()) {
-      if (isSuffixPattern(selector)) {
-        int r = selector.getTailMatchLength(elementPath);
+      if ((p.size() > 1) && p.get(0).equals(ANY)) {
+        int r = currentPattern.getTailMatchLength(p);
         if (r > max) {
           max = r;
-          longestMatchingElementSelector = selector;
+          longestMatchingPattern = p;
         }
       }
     }
 
-    if (longestMatchingElementSelector != null) {
-      return rules.get(longestMatchingElementSelector);
+    if (longestMatchingPattern != null) {
+      return rules.get(longestMatchingPattern);
     } else {
       return null;
     }
   }
 
-  private boolean isSuffixPattern(ElementSelector p) {
-    return (p.size() > 1) && p.get(0).equals(KLEENE_STAR);
-  }
-
-  List<Action> prefixMatch(ElementPath elementPath) {
+  List prefixMatch(Pattern currentPattern) {
     int max = 0;
-    ElementSelector longestMatchingElementSelector = null;
+    Pattern longestMatchingPattern = null;
 
-    for (ElementSelector selector : rules.keySet()) {
-      String last = selector.peekLast();
-      if (isKleeneStar(last)) {
-        int r = selector.getPrefixMatchLength(elementPath);
+    for (Pattern p : rules.keySet()) {
+      String last = p.peekLast();
+      if (ANY.equals(last)) {
+        int r = currentPattern.getPrefixMatchLength(p);
         // to qualify the match length must equal p's size omitting the '*'
-        if ((r == selector.size() - 1) && (r > max)) {
+        if ((r == p.size() - 1) && (r > max)) {
+          // System.out.println("New longest prefixMatch "+p);
           max = r;
-          longestMatchingElementSelector = selector;
+          longestMatchingPattern = p;
         }
       }
     }
 
-    if (longestMatchingElementSelector != null) {
-      return rules.get(longestMatchingElementSelector);
+    if (longestMatchingPattern != null) {
+      return rules.get(longestMatchingPattern);
     } else {
       return null;
     }
   }
 
-  private boolean isKleeneStar(String last) {
-    return KLEENE_STAR.equals(last);
-  }
-
-  List<Action> middleMatch(ElementPath path) {
+  List middleMatch(Pattern currentPattern) {
     
     int max = 0;
-    ElementSelector longestMatchingElementSelector = null;
+    Pattern longestMatchingPattern = null;
 
-    for (ElementSelector selector : rules.keySet()) {
-      String last = selector.peekLast();
+    for (Pattern p : rules.keySet()) {
+      String last = p.peekLast();
       String first = null;
-      if(selector.size() > 1) {
-        first = selector.get(0);
+      if(p.size() > 1) {
+        first = p.get(0);
       }
-      if (isKleeneStar(last) && isKleeneStar(first)) {
-        List<String> copyOfPartList = selector.getCopyOfPartList();
-        if(copyOfPartList.size() > 2) {
-          copyOfPartList.remove(0);
-          copyOfPartList.remove(copyOfPartList.size()-1);
+      if (ANY.equals(last) && ANY.equals(first)) {
+        List<String> partList = p.getCopyOfPartList();
+        if(partList.size() > 2) {
+          partList.remove(0);
+          partList.remove(partList.size()-1);
         }
         
         int r = 0;
-        ElementSelector clone = new ElementSelector(copyOfPartList);
-        if(clone.isContainedIn(path)) {
+        Pattern clone = new Pattern(partList);        
+        if(currentPattern.isContained(clone)) {
           r = clone.size();
         }
         if (r > max) {
           max = r;
-          longestMatchingElementSelector = selector;
+          longestMatchingPattern = p;
         }
       }
     }
 
-    if (longestMatchingElementSelector != null) {
-      return rules.get(longestMatchingElementSelector);
+    if (longestMatchingPattern != null) {
+      return rules.get(longestMatchingPattern);
     } else {
       return null;
     }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/XMLUtil.java b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/XMLUtil.java
index 5cee08e..9061164 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/spi/XMLUtil.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/spi/XMLUtil.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/util/ConfigurationWatchListUtil.java b/logback-core/src/main/java/ch/qos/logback/core/joran/util/ConfigurationWatchListUtil.java
index 8c806c7..b81e2d7 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/util/ConfigurationWatchListUtil.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/util/ConfigurationWatchListUtil.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/util/PropertySetter.java b/logback-core/src/main/java/ch/qos/logback/core/joran/util/PropertySetter.java
index 8651e0c..ed7b171 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/util/PropertySetter.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/util/PropertySetter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -54,7 +54,7 @@ import ch.qos.logback.core.util.PropertySetterException;
 public class PropertySetter extends ContextAwareBase {
 
   protected Object obj;
-  protected Class<?> objClass;
+  protected Class objClass;
   protected PropertyDescriptor[] propertyDescriptors;
   protected MethodDescriptor[] methodDescriptors;
 
@@ -145,7 +145,7 @@ public class PropertySetter extends ContextAwareBase {
           + "].");
     }
 
-    Class<?>[] paramTypes = setter.getParameterTypes();
+    Class[] paramTypes = setter.getParameterTypes();
 
     if (paramTypes.length != 1) {
       throw new PropertySetterException("#params for setter != 1");
@@ -217,7 +217,7 @@ public class PropertySetter extends ContextAwareBase {
     if (method == null) {
       return null;
     }
-    Class<?>[] classArray = method.getParameterTypes();
+    Class[] classArray = method.getParameterTypes();
     if (classArray.length != 1) {
       return null;
     } else {
@@ -266,7 +266,7 @@ public class PropertySetter extends ContextAwareBase {
     }
   }
 
-  public Class<?> getObjClass() {
+  public Class getObjClass() {
     return objClass;
   }
 
@@ -274,7 +274,7 @@ public class PropertySetter extends ContextAwareBase {
     Method adderMethod = findAdderMethod(name);
     // first let us use the addXXX method
     if (adderMethod != null) {
-      Class<?>[] paramTypes = adderMethod.getParameterTypes();
+      Class[] paramTypes = adderMethod.getParameterTypes();
       if (!isSanityCheckSuccessful(name, adderMethod, paramTypes,
           complexProperty)) {
         return;
@@ -288,7 +288,7 @@ public class PropertySetter extends ContextAwareBase {
 
   void invokeMethodWithSingleParameterOnThisObject(Method method,
       Object parameter) {
-    Class<?> ccc = parameter.getClass();
+    Class ccc = parameter.getClass();
     try {
       method.invoke(this.obj, parameter);
     } catch (Exception e) {
@@ -312,7 +312,7 @@ public class PropertySetter extends ContextAwareBase {
       return;
     }
 
-    Class<?>[] paramTypes = adderMethod.getParameterTypes();
+    Class[] paramTypes = adderMethod.getParameterTypes();
     isSanityCheckSuccessful(name, adderMethod, paramTypes, strValue);
 
     Object arg;
@@ -347,7 +347,7 @@ public class PropertySetter extends ContextAwareBase {
       return;
     }
 
-    Class<?>[] paramTypes = setter.getParameterTypes();
+    Class[] paramTypes = setter.getParameterTypes();
 
     if (!isSanityCheckSuccessful(name, setter, paramTypes, complexProperty)) {
       return;
@@ -363,7 +363,7 @@ public class PropertySetter extends ContextAwareBase {
 
   private boolean isSanityCheckSuccessful(String name, Method method,
       Class<?>[] params, Object complexProperty) {
-    Class<?> ccc = complexProperty.getClass();
+    Class ccc = complexProperty.getClass();
     if (params.length != 1) {
       addError("Wrong number of parameters in setter method for property ["
           + name + "] in " + obj.getClass().getName());
@@ -446,7 +446,7 @@ public class PropertySetter extends ContextAwareBase {
     }
   }
 
-  Class<?> getDefaultClassNameByAnnonation(String name, Method relevantMethod) {
+  Class getDefaultClassNameByAnnonation(String name, Method relevantMethod) {
     DefaultClass defaultClassAnnon = getAnnotation(name, DefaultClass.class,
         relevantMethod);
     if (defaultClassAnnon != null) {
@@ -455,7 +455,7 @@ public class PropertySetter extends ContextAwareBase {
     return null;
   }
 
-  Class<?> getByConcreteType(String name, Method relevantMethod) {
+  Class getByConcreteType(String name, Method relevantMethod) {
 
     Class<?> paramType = getParameterClassForMethod(relevantMethod);
     if (paramType == null) {
@@ -471,10 +471,10 @@ public class PropertySetter extends ContextAwareBase {
 
   }
 
-  public Class<?> getClassNameViaImplicitRules(String name,
+  public Class getClassNameViaImplicitRules(String name,
       AggregationType aggregationType, DefaultNestedComponentRegistry registry) {
 
-    Class<?> registryResult = registry.findDefaultComponentType(obj.getClass(),
+    Class registryResult = registry.findDefaultComponentType(obj.getClass(),
         name);
     if (registryResult != null) {
       return registryResult;
@@ -484,7 +484,7 @@ public class PropertySetter extends ContextAwareBase {
     if (relevantMethod == null) {
       return null;
     }
-    Class<?> byAnnotation = getDefaultClassNameByAnnonation(name, relevantMethod);
+    Class byAnnotation = getDefaultClassNameByAnnonation(name, relevantMethod);
     if (byAnnotation != null) {
       return byAnnotation;
     }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/util/StringToObjectConverter.java b/logback-core/src/main/java/ch/qos/logback/core/joran/util/StringToObjectConverter.java
index 082780a..414361a 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/joran/util/StringToObjectConverter.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/joran/util/StringToObjectConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -28,7 +28,7 @@ import ch.qos.logback.core.spi.ContextAware;
  */
 public class StringToObjectConverter {
 
-  private static final Class<?>[] STING_CLASS_PARAMETER = new Class[] { String.class };
+  private static final Class[] STING_CLASS_PARAMETER = new Class[] { String.class };
 
   static public boolean canBeBuiltFromSimpleString(Class<?> parameterClass) {
     Package p = parameterClass.getPackage();
diff --git a/logback-core/src/main/java/ch/qos/logback/core/layout/EchoLayout.java b/logback-core/src/main/java/ch/qos/logback/core/layout/EchoLayout.java
index 8e9a5c0..2dd21ea 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/layout/EchoLayout.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/layout/EchoLayout.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/AbstractSSLSocketAppender.java b/logback-core/src/main/java/ch/qos/logback/core/net/AbstractSSLSocketAppender.java
deleted file mode 100644
index e652c10..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/AbstractSSLSocketAppender.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net;
-
-import javax.net.SocketFactory;
-import javax.net.ssl.SSLContext;
-
-import ch.qos.logback.core.net.ssl.ConfigurableSSLSocketFactory;
-import ch.qos.logback.core.net.ssl.SSLComponent;
-import ch.qos.logback.core.net.ssl.SSLConfiguration;
-import ch.qos.logback.core.net.ssl.SSLParametersConfiguration;
-
-/**
- * An abstract base for module specific {@code SSLSocketAppender}
- * implementations located in other logback modules.
- *
- * @author Carl Harris
- */
-public abstract class AbstractSSLSocketAppender<E> extends AbstractSocketAppender<E>
-    implements SSLComponent {
-
-  private SSLConfiguration ssl;
-  private SocketFactory socketFactory;
-
-  /**
-   * Constructs a new appender.
-   */
-  protected AbstractSSLSocketAppender() {
-  }
-
-  /**
-   * Gets an {@link SocketFactory} that produces SSL sockets using an
-   * {@link SSLContext} that is derived from the appender's configuration.
-   * @return socket factory
-   */
-  @Override
-  protected SocketFactory getSocketFactory() {
-    return socketFactory;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public void start() {
-    try {
-      SSLContext sslContext = getSsl().createContext(this);
-      SSLParametersConfiguration parameters = getSsl().getParameters();
-      parameters.setContext(getContext());
-      socketFactory = new ConfigurableSSLSocketFactory(parameters, 
-          sslContext.getSocketFactory());
-      super.start();
-    }
-    catch (Exception ex) {
-      addError(ex.getMessage(), ex);
-    }
-  }
-
-  /**
-   * Gets the SSL configuration.
-   * @return SSL configuration; if no configuration has been set, a
-   *    default configuration is returned
-   */
-  public SSLConfiguration getSsl() {
-    if (ssl == null) {
-      ssl = new SSLConfiguration();
-    }
-    return ssl;
-  }
-
-  /**
-   * Sets the SSL configuration.
-   * @param ssl the SSL configuration to set
-   */
-  public void setSsl(SSLConfiguration ssl) {
-    this.ssl = ssl;
-  }
-
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/AbstractSocketAppender.java b/logback-core/src/main/java/ch/qos/logback/core/net/AbstractSocketAppender.java
deleted file mode 100644
index 7b6c2e3..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/AbstractSocketAppender.java
+++ /dev/null
@@ -1,451 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-// Contributors: Dan MacDonald <dan at redknee.com>
-package ch.qos.logback.core.net;
-
-import java.io.IOException;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.net.ConnectException;
-import java.net.InetAddress;
-import java.net.Socket;
-import java.net.UnknownHostException;
-import java.util.concurrent.ArrayBlockingQueue;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
-import java.util.concurrent.RejectedExecutionException;
-import java.util.concurrent.SynchronousQueue;
-import java.util.concurrent.TimeUnit;
-
-
-import javax.net.SocketFactory;
-
-import ch.qos.logback.core.AppenderBase;
-import ch.qos.logback.core.CoreConstants;
-import ch.qos.logback.core.spi.PreSerializationTransformer;
-import ch.qos.logback.core.util.CloseUtil;
-import ch.qos.logback.core.util.Duration;
-
-/**
- * An abstract base for module specific {@code SocketAppender}
- * implementations in other logback modules.
- * 
- * @author Ceki Gülcü
- * @author Sébastien Pennec
- * @author Carl Harris
- */
-
-public abstract class AbstractSocketAppender<E> extends AppenderBase<E>
-    implements Runnable, SocketConnector.ExceptionHandler {
-
-  /**
-   * The default port number of remote logging server (4560).
-   */
-  public static final int DEFAULT_PORT = 4560;
-
-  /**
-   * The default reconnection delay (30000 milliseconds or 30 seconds).
-   */
-  public static final int DEFAULT_RECONNECTION_DELAY = 30000;
-
-  /**
-   * Default size of the queue used to hold logging events that are destined
-   * for the remote peer.
-   */
-  public static final int DEFAULT_QUEUE_SIZE = 128;
-  
-  /**
-   * Default timeout when waiting for the remote server to accept our
-   * connection.
-   */
-  private static final int DEFAULT_ACCEPT_CONNECTION_DELAY = 5000;
-
-  /**
-   * Default timeout for how long to wait when inserting an event into
-   * the BlockingQueue.
-   */
-  private static final int DEFAULT_EVENT_DELAY_TIMEOUT = 100;
-
-  private String remoteHost;
-  private int port = DEFAULT_PORT;
-  private InetAddress address;
-  private Duration reconnectionDelay = new Duration(DEFAULT_RECONNECTION_DELAY);
-  private int queueSize = DEFAULT_QUEUE_SIZE;
-  private int acceptConnectionTimeout = DEFAULT_ACCEPT_CONNECTION_DELAY;
-  private Duration eventDelayLimit = new Duration(DEFAULT_EVENT_DELAY_TIMEOUT);
-  
-  private BlockingQueue<E> queue;
-  private String peerId;
-  private Future<?> task;
-  private Future<Socket> connectorTask;
-
-  private volatile Socket socket;
-
-  /**
-   * Constructs a new appender.
-   */
-  protected AbstractSocketAppender() {
-  }
-  
-  /**
-   * {@inheritDoc}
-   */
-  public void start() {
-    if (isStarted()) return;
-    int errorCount = 0;
-    if (port <= 0) {
-      errorCount++;
-      addError("No port was configured for appender"
-          + name
-          + " For more information, please visit http://logback.qos.ch/codes.html#socket_no_port");
-    }
-
-    if (remoteHost == null) {
-      errorCount++;
-      addError("No remote host was configured for appender"
-          + name
-          + " For more information, please visit http://logback.qos.ch/codes.html#socket_no_host");
-    }
-    
-    if (queueSize < 0) {
-      errorCount++;
-      addError("Queue size must be non-negative");
-    }
-
-    if (errorCount == 0) {
-      try {
-        address = InetAddress.getByName(remoteHost);
-      } catch (UnknownHostException ex) {
-        addError("unknown host: " + remoteHost);
-        errorCount++;
-      }
-    }
-
-    if (errorCount == 0) {
-      queue = newBlockingQueue(queueSize);
-      peerId = "remote peer " + remoteHost + ":" + port + ": ";
-      task = getContext().getExecutorService().submit(this);
-      super.start();
-    }
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public void stop() {
-    if (!isStarted()) return;
-    CloseUtil.closeQuietly(socket);
-    task.cancel(true);
-    if(connectorTask != null)
-      connectorTask.cancel(true);
-    super.stop();
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  protected void append(E event) {
-    if (event == null || !isStarted()) return;
-
-    try {
-      final boolean inserted = queue.offer(event, eventDelayLimit.getMilliseconds(), TimeUnit.MILLISECONDS);
-      if (!inserted) {
-        addInfo("Dropping event due to timeout limit of [" + eventDelayLimit +
-            "] milliseconds being exceeded");
-      }
-    } catch (InterruptedException e) {
-      addError("Interrupted while appending event to SocketAppender", e);
-    }
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public final void run() {
-    signalEntryInRunMethod();
-    try {
-      while (!Thread.currentThread().isInterrupted()) {
-        SocketConnector connector = createConnector(address, port, 0,
-                reconnectionDelay.getMilliseconds());
-
-        connectorTask = activateConnector(connector);
-        if(connectorTask == null)
-          break;
-
-        socket = waitForConnectorToReturnASocket();
-        if(socket == null)
-          break;
-        dispatchEvents();
-      }
-    } catch (InterruptedException ex) {
-      assert true;    // ok... we'll exit now
-    }
-    addInfo("shutting down");
-  }
-
-    protected void signalEntryInRunMethod() {
-      // do nothing by default
-    }
-
-    private SocketConnector createConnector(InetAddress address, int port,
-                                          int initialDelay, long retryDelay) {
-    SocketConnector connector = newConnector(address, port, initialDelay,
-            retryDelay);
-    connector.setExceptionHandler(this);
-    connector.setSocketFactory(getSocketFactory());
-    return connector;
-  }
-
-  private Future<Socket> activateConnector(SocketConnector connector) {
-    try {
-      return getContext().getExecutorService().submit(connector);
-    } catch (RejectedExecutionException ex) {
-      return null;
-    }
-  }
-
-  private Socket waitForConnectorToReturnASocket() throws InterruptedException {
-    try {
-      Socket s =  connectorTask.get();
-      connectorTask = null;
-      return s;
-    } catch (ExecutionException e) {
-      return null;
-    }
-  }
-
-  private void dispatchEvents() throws InterruptedException {
-    try {
-      socket.setSoTimeout(acceptConnectionTimeout);
-      ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
-      socket.setSoTimeout(0);
-      addInfo(peerId + "connection established");
-      int counter = 0;
-      while (true) {
-        E event = queue.take();
-        postProcessEvent(event);
-        Serializable serEvent = getPST().transform(event);
-        oos.writeObject(serEvent);
-        oos.flush();
-        if (++counter >= CoreConstants.OOS_RESET_FREQUENCY) {
-          // Failing to reset the object output stream every now and
-          // then creates a serious memory leak.
-          oos.reset();
-          counter = 0;
-        }
-      }
-    } catch (IOException ex) {
-      addInfo(peerId + "connection failed: " + ex);
-    } finally {
-      CloseUtil.closeQuietly(socket);
-      socket = null;
-      addInfo(peerId + "connection closed");
-    }
-  } 
-    
-  /**
-   * {@inheritDoc}
-   */
-  public void connectionFailed(SocketConnector connector, Exception ex) {
-    if (ex instanceof InterruptedException) {
-      addInfo("connector interrupted");
-    } else if (ex instanceof ConnectException) {
-      addInfo(peerId + "connection refused");
-    } else {
-      addInfo(peerId + ex);
-    }
-  }
-
-
-
-  /**
-   * Creates a new {@link SocketConnector}.
-   * <p>
-   * The default implementation creates an instance of {@link DefaultSocketConnector}.
-   * A subclass may override to provide a different {@link SocketConnector}
-   * implementation.
-   * 
-   * @param address target remote address
-   * @param port target remote port
-   * @param initialDelay delay before the first connection attempt
-   * @param retryDelay delay before a reconnection attempt
-   * @return socket connector
-   */
-  protected SocketConnector newConnector(InetAddress address,
-                                         int port, long initialDelay, long retryDelay) {
-    return new DefaultSocketConnector(address, port, initialDelay, retryDelay);
-  }
-
-  /**
-   * Gets the default {@link SocketFactory} for the platform.
-   * <p>
-   * Subclasses may override to provide a custom socket factory.
-   */
-  protected SocketFactory getSocketFactory() {
-    return SocketFactory.getDefault();
-  }
-
-  /**
-   * Creates a blocking queue that will be used to hold logging events until
-   * they can be delivered to the remote receiver.
-   * <p>
-   * The default implementation creates a (bounded) {@link ArrayBlockingQueue} 
-   * for positive queue sizes.  Otherwise it creates a {@link SynchronousQueue}.
-   * <p>
-   * This method is exposed primarily to support instrumentation for unit
-   * testing.
-   * 
-   * @param queueSize size of the queue
-   * @return
-   */
-  BlockingQueue<E> newBlockingQueue(int queueSize) {
-    return queueSize <= 0 ? 
-        new SynchronousQueue<E>() : new ArrayBlockingQueue<E>(queueSize);
-  }
-  
-  /**
-   * Post-processes an event before it is serialized for delivery to the
-   * remote receiver.
-   * @param event the event to post-process
-   */
-  protected abstract void postProcessEvent(E event);
-  
-  /**
-   * Get the pre-serialization transformer that will be used to transform
-   * each event into a Serializable object before delivery to the remote
-   * receiver.
-   * @return transformer object
-   */
-  protected abstract PreSerializationTransformer<E> getPST();
-
-  /*
-   * This method is used by logback modules only in the now deprecated
-   * convenience constructors for SocketAppender
-   */
-  @Deprecated
-  protected static InetAddress getAddressByName(String host) {
-    try {
-      return InetAddress.getByName(host);
-    } catch (Exception e) {
-      // addError("Could not find address of [" + host + "].", e);
-      return null;
-    }
-  }
-
-  /**
-   * The <b>RemoteHost</b> property takes the name of of the host where a corresponding server is running.
-   */
-  public void setRemoteHost(String host) {
-    remoteHost = host;
-  }
-
-  /**
-   * Returns value of the <b>RemoteHost</b> property.
-   */
-  public String getRemoteHost() {
-    return remoteHost;
-  }
-
-  /**
-   * The <b>Port</b> property takes a positive integer representing the port
-   * where the server is waiting for connections.
-   */
-  public void setPort(int port) {
-    this.port = port;
-  }
-
-  /**
-   * Returns value of the <b>Port</b> property.
-   */
-  public int getPort() {
-    return port;
-  }
-
-  /**
-   * The <b>reconnectionDelay</b> property takes a positive {@link Duration} value
-   * representing the time to wait between each failed connection attempt
-   * to the server. The default value of this option is to 30 seconds.
-   *
-   * <p>
-   * Setting this option to zero turns off reconnection capability.
-   */
-  public void setReconnectionDelay(Duration delay) {
-    this.reconnectionDelay = delay;
-  }
-
-  /**
-   * Returns value of the <b>reconnectionDelay</b> property.
-   */
-  public Duration getReconnectionDelay() {
-    return reconnectionDelay;
-  }
-
-  /**
-   * The <b>queueSize</b> property takes a non-negative integer representing
-   * the number of logging events to retain for delivery to the remote receiver.
-   * When the queue size is zero, event delivery to the remote receiver is
-   * synchronous.  When the queue size is greater than zero, the 
-   * {@link #append(Object)} method returns immediately after enqueing the
-   * event, assuming that there is space available in the queue.  Using a 
-   * non-zero queue length can improve performance by eliminating delays
-   * caused by transient network delays.
-   * 
-   * @param queueSize the queue size to set.
-   */
-  public void setQueueSize(int queueSize) {
-    this.queueSize = queueSize;
-  }
-
-  /**
-   * Returns the value of the <b>queueSize</b> property.
-   */
-  public int getQueueSize() {
-    return queueSize;
-  }
-
-  /**
-   * The <b>eventDelayLimit</b> takes a non-negative integer representing the
-   * number of milliseconds to allow the appender to block if the underlying
-   * BlockingQueue is full. Once this limit is reached, the event is dropped.
-   *
-   * @param eventDelayLimit the event delay limit
-   */
-  public void setEventDelayLimit(Duration eventDelayLimit) {
-    this.eventDelayLimit = eventDelayLimit;
-  }
-
-  /**
-   * Returns the value of the <b>eventDelayLimit</b> property.
-   */
-  public Duration getEventDelayLimit() {
-    return eventDelayLimit;
-  }
-  
-  /**
-   * Sets the timeout that controls how long we'll wait for the remote
-   * peer to accept our connection attempt.
-   * <p>
-   * This property is configurable primarily to support instrumentation
-   * for unit testing.
-   * 
-   * @param acceptConnectionTimeout timeout value in milliseconds
-   */
-  void setAcceptConnectionTimeout(int acceptConnectionTimeout) {
-    this.acceptConnectionTimeout = acceptConnectionTimeout;
-  }
-
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/DefaultSocketConnector.java b/logback-core/src/main/java/ch/qos/logback/core/net/DefaultSocketConnector.java
deleted file mode 100644
index 38b26e7..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/DefaultSocketConnector.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net;
-
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.Socket;
-
-import javax.net.SocketFactory;
-
-import ch.qos.logback.core.util.DelayStrategy;
-import ch.qos.logback.core.util.FixedDelay;
-
-/**
- * Default implementation of {@link SocketConnector}.
- *
- * @author Carl Harris
- * @since 1.0.12
- */
-public class DefaultSocketConnector implements SocketConnector {
-
-  private final InetAddress address;
-  private final int port;
-  private final DelayStrategy delayStrategy;
-
-  private ExceptionHandler exceptionHandler;
-  private SocketFactory socketFactory;
-
-  /**
-   * Constructs a new connector.
-   *
-   * @param address      address of remote listener
-   * @param port         port of remote listener
-   * @param initialDelay delay before initial connection attempt
-   * @param retryDelay   delay after failed connection attempt
-   */
-  public DefaultSocketConnector(InetAddress address, int port,
-                                long initialDelay, long retryDelay) {
-    this(address, port, new FixedDelay(initialDelay, retryDelay));
-  }
-
-  /**
-   * Constructs a new connector.
-   *
-   * @param address       address of remote listener
-   * @param port          port of remote listener
-   * @param delayStrategy strategy for choosing the delay to impose before
-   *                      each connection attempt
-   */
-  public DefaultSocketConnector(InetAddress address, int port,
-                                DelayStrategy delayStrategy) {
-    this.address = address;
-    this.port = port;
-    this.delayStrategy = delayStrategy;
-  }
-
-  /**
-   * Loops until the desired connection is established and returns the resulting connector.
-   */
-  public Socket call() throws InterruptedException {
-    useDefaultsForMissingFields();
-    Socket socket = createSocket();
-    while (socket == null && !Thread.currentThread().isInterrupted()) {
-      Thread.sleep(delayStrategy.nextDelay());
-      socket = createSocket();
-    }
-    return socket;
-  }
-
-  private Socket createSocket() {
-    Socket newSocket = null;
-    try {
-      newSocket = socketFactory.createSocket(address, port);
-    } catch (IOException ioex) {
-      exceptionHandler.connectionFailed(this, ioex);
-    }
-    return newSocket;
-  }
-
-  private void useDefaultsForMissingFields() {
-    if (exceptionHandler == null) {
-      exceptionHandler = new ConsoleExceptionHandler();
-    }
-    if (socketFactory == null) {
-      socketFactory = SocketFactory.getDefault();
-    }
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public void setExceptionHandler(ExceptionHandler exceptionHandler) {
-    this.exceptionHandler = exceptionHandler;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public void setSocketFactory(SocketFactory socketFactory) {
-    this.socketFactory = socketFactory;
-  }
-
-  /**
-   * A default {@link ExceptionHandler} that writes to {@code System.out}
-   */
-  private static class ConsoleExceptionHandler implements ExceptionHandler {
-
-    public void connectionFailed(SocketConnector connector, Exception ex) {
-      System.out.println(ex);
-    }
-
-  }
-
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/JMSAppenderBase.java b/logback-core/src/main/java/ch/qos/logback/core/net/JMSAppenderBase.java
index 965c6eb..65f365e 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/net/JMSAppenderBase.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/net/JMSAppenderBase.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/LoginAuthenticator.java b/logback-core/src/main/java/ch/qos/logback/core/net/LoginAuthenticator.java
index 4b5a587..0485603 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/net/LoginAuthenticator.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/net/LoginAuthenticator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -16,9 +16,6 @@ package ch.qos.logback.core.net;
 import javax.mail.Authenticator;
 import javax.mail.PasswordAuthentication;
 
-/**
- * Used by SMTPAppender for authentication purposes.
- */
 public class LoginAuthenticator extends Authenticator {
 
   String username;
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/SMTPAppenderBase.java b/logback-core/src/main/java/ch/qos/logback/core/net/SMTPAppenderBase.java
index 45c256b..a11b64f 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/net/SMTPAppenderBase.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/net/SMTPAppenderBase.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -29,8 +29,6 @@ import javax.mail.internet.InternetAddress;
 import javax.mail.internet.MimeBodyPart;
 import javax.mail.internet.MimeMessage;
 import javax.mail.internet.MimeMultipart;
-import javax.naming.Context;
-import javax.naming.InitialContext;
 
 import ch.qos.logback.core.AppenderBase;
 import ch.qos.logback.core.CoreConstants;
@@ -42,6 +40,7 @@ import ch.qos.logback.core.pattern.PatternLayoutBase;
 import ch.qos.logback.core.sift.DefaultDiscriminator;
 import ch.qos.logback.core.sift.Discriminator;
 import ch.qos.logback.core.spi.CyclicBufferTracker;
+import ch.qos.logback.core.spi.CyclicBufferTrackerImpl;
 import ch.qos.logback.core.util.ContentTypeUtil;
 import ch.qos.logback.core.util.OptionHelper;
 
@@ -78,9 +77,6 @@ public abstract class SMTPAppenderBase<E> extends AppenderBase<E> {
   private int smtpPort = 25;
   private boolean starttls = false;
   private boolean ssl = false;
-  private boolean sessionViaJNDI = false;
-  private String jndiLocation = CoreConstants.JNDI_COMP_PREFIX + "/mail/Session";
-
 
   String username;
   String password;
@@ -115,57 +111,16 @@ public abstract class SMTPAppenderBase<E> extends AppenderBase<E> {
   public void start() {
 
     if (cbTracker == null) {
-      cbTracker = new CyclicBufferTracker<E>();
-    }
-
-    Session session = null;
-    if (sessionViaJNDI)
-      session = lookupSessionInJNDI();
-    else
-      session = buildSessionFromProperties();
-
-    if (session == null) {
-      addError("Failed to obtain javax.mail.Session. Cannot start.");
-      return;
+      cbTracker = new CyclicBufferTrackerImpl<E>();
     }
-    mimeMsg = new MimeMessage(session);
-
-    try {
-      if (from != null) {
-        mimeMsg.setFrom(getAddress(from));
-      } else {
-        mimeMsg.setFrom();
-      }
-
-      subjectLayout = makeSubjectLayout(subjectStr);
-
-      started = true;
 
-    } catch (MessagingException e) {
-      addError("Could not activate SMTPAppender options.", e);
-    }
-  }
-
-  private Session lookupSessionInJNDI() {
-    addInfo("Looking up javax.mail.Session at JNDI location [" + jndiLocation + "]");
-    try {
-      Context initialContext = new InitialContext();
-      Object obj = initialContext.lookup(jndiLocation);
-      return (Session) obj;
-    } catch (Exception e) {
-      addError("Failed to obtain javax.mail.Session from JNDI location [" + jndiLocation+"]");
-      return null;
-    }
-  }
-
-  private Session buildSessionFromProperties() {
     Properties props = new Properties(OptionHelper.getSystemProperties());
     if (smtpHost != null) {
       props.put("mail.smtp.host", smtpHost);
     }
     props.put("mail.smtp.port", Integer.toString(smtpPort));
 
-    if (localhost != null) {
+    if(localhost != null) {
       props.put("mail.smtp.localhost", localhost);
     }
 
@@ -193,7 +148,23 @@ public abstract class SMTPAppenderBase<E> extends AppenderBase<E> {
 
     // props.put("mail.debug", "true");
 
-    return Session.getInstance(props, loginAuthenticator);
+    Session session = Session.getInstance(props, loginAuthenticator);
+    mimeMsg = new MimeMessage(session);
+
+    try {
+      if (from != null) {
+        mimeMsg.setFrom(getAddress(from));
+      } else {
+        mimeMsg.setFrom();
+      }
+
+      subjectLayout = makeSubjectLayout(subjectStr);
+
+      started = true;
+
+    } catch (MessagingException e) {
+      addError("Could not activate SMTPAppender options.", e);
+    }
   }
 
   /**
@@ -211,6 +182,8 @@ public abstract class SMTPAppenderBase<E> extends AppenderBase<E> {
     final CyclicBuffer<E> cb = cbTracker.getOrCreate(key, now);
     subAppend(cb, eventObject);
 
+    cb.asList();
+
     try {
       if (eventEvaluator.evaluate(eventObject)) {
         // clone the CyclicBuffer before sending out asynchronously
@@ -218,7 +191,7 @@ public abstract class SMTPAppenderBase<E> extends AppenderBase<E> {
         // see http://jira.qos.ch/browse/LBCLASSIC-221
         cb.clear();
 
-        if (asynchronousSending) {
+        if(asynchronousSending) {
           // perform actual sending asynchronously
           SenderRunnable senderRunnable = new SenderRunnable(cbClone, eventObject);
           context.getExecutorService().execute(senderRunnable);
@@ -235,14 +208,14 @@ public abstract class SMTPAppenderBase<E> extends AppenderBase<E> {
     }
 
     // immediately remove the buffer if asked by the user
-    if (eventMarksEndOfLife(eventObject)) {
-      cbTracker.endOfLife(key);
+    if (isEventMarkedForBufferRemoval(eventObject)) {
+      cbTracker.removeBuffer(key);
     }
 
-    cbTracker.removeStaleComponents(now);
+    cbTracker.clearStaleBuffers(now);
 
     if (lastTrackerStatusPrint + delayBetweenStatusMessages < now) {
-      addInfo("SMTPAppender [" + name + "] is tracking [" + cbTracker.getComponentCount() + "] buffers");
+      addInfo("SMTPAppender [" + name + "] is tracking [" + cbTracker.size() + "] buffers");
       lastTrackerStatusPrint = now;
       // quadruple 'delay' assuming less than max delay
       if (delayBetweenStatusMessages < MAX_DELAY_BETWEEN_STATUS_MESSAGES) {
@@ -251,7 +224,7 @@ public abstract class SMTPAppenderBase<E> extends AppenderBase<E> {
     }
   }
 
-  abstract protected boolean eventMarksEndOfLife(E eventObject);
+  abstract protected boolean isEventMarkedForBufferRemoval(E eventObject);
 
   abstract protected void subAppend(CyclicBuffer<E> cb, E eventObject);
 
@@ -310,11 +283,11 @@ public abstract class SMTPAppenderBase<E> extends AppenderBase<E> {
     for (int i = 0; i < len; i++) {
       try {
         PatternLayoutBase<E> emailPL = toPatternLayoutList.get(i);
-        String emailAdrr = emailPL.doLayout(event);
-        if (emailAdrr == null || emailAdrr.length() == 0) {
+        String email = emailPL.doLayout(event);
+        if (email == null || email.length() == 0) {
           continue;
         }
-        InternetAddress[] tmp = InternetAddress.parse(emailAdrr, true);
+        InternetAddress[] tmp = InternetAddress.parse(email, true);
         iaList.addAll(Arrays.asList(tmp));
       } catch (AddressException e) {
         addError("Could not parse email address for [" + toPatternLayoutList.get(i) + "] for event [" + event + "]", e);
@@ -365,14 +338,6 @@ public abstract class SMTPAppenderBase<E> extends AppenderBase<E> {
       String subjectStr = "Undefined subject";
       if (subjectLayout != null) {
         subjectStr = subjectLayout.doLayout(lastEventObject);
-
-        // The subject must not contain new-line characters, which cause
-        // an SMTP error (LOGBACK-865). Truncate the string at the first
-        // new-line character.
-        int newLinePos = (subjectStr != null) ? subjectStr.indexOf('\n') : -1;
-        if (newLinePos > -1) {
-          subjectStr = subjectStr.substring(0, newLinePos);
-        }
       }
       mimeMsg.setSubject(subjectStr, charsetEncoding);
 
@@ -399,8 +364,8 @@ public abstract class SMTPAppenderBase<E> extends AppenderBase<E> {
       mimeMsg.setContent(mp);
 
       mimeMsg.setSentDate(new Date());
-      addInfo("About to send out SMTP message \"" + subjectStr + "\" to " + Arrays.toString(toAddressArray));
       Transport.send(mimeMsg);
+      addInfo("Sent out SMTP message \""+subjectStr+"\" to "+Arrays.toString(toAddressArray));
     } catch (Exception e) {
       addError("Error occurred while sending e-mail notification.", e);
     }
@@ -512,7 +477,7 @@ public abstract class SMTPAppenderBase<E> extends AppenderBase<E> {
   /**
    * Set the "mail.smtp.localhost" property to the value passed as parameter to
    * this method.
-   * <p/>
+   *
    * <p>Useful in case the hostname for the client host is not fully qualified
    * and as a consequence the SMTP server rejects the clients HELO/EHLO command.
    * </p>
@@ -546,8 +511,7 @@ public abstract class SMTPAppenderBase<E> extends AppenderBase<E> {
   /**
    * By default, SMTAppender transmits emails asynchronously. For synchronous email transmission set
    * asynchronousSending to 'false'.
-   *
-   * @param asynchronousSending determines whether sending is done asynchronously or not
+   * @param asynchronousSending  determines whether sending is done asynchronously or not
    * @since 1.0.4
    */
   public void setAsynchronousSending(boolean asynchronousSending) {
@@ -635,36 +599,6 @@ public abstract class SMTPAppenderBase<E> extends AppenderBase<E> {
     return charsetEncoding;
   }
 
-
-  public String getJndiLocation() {
-    return jndiLocation;
-  }
-
-  /**
-   * Set the location where a {@link javax.mail.Session} resource is located in JNDI. Default value is
-   * "java:comp/env/mail/Session".
-   *
-   * @param jndiLocation
-   * @since 1.0.6
-   */
-  public void setJndiLocation(String jndiLocation) {
-    this.jndiLocation = jndiLocation;
-  }
-
-  public boolean isSessionViaJNDI() {
-    return sessionViaJNDI;
-  }
-
-  /**
-   * If set to true, a {@link javax.mail.Session} resource will be retrieved from JNDI. Default is false.
-   *
-   * @param sessionViaJNDI whether to obtain a javax.mail.Session by JNDI
-   * @since 1.0.6
-   */
-  public void setSessionViaJNDI(boolean sessionViaJNDI) {
-    this.sessionViaJNDI = sessionViaJNDI;
-  }
-
   /**
    * Set the character set encoding of the outgoing email messages. The default
    * encoding is "UTF-8" which usually works well for most purposes.
@@ -685,14 +619,13 @@ public abstract class SMTPAppenderBase<E> extends AppenderBase<E> {
 
   class SenderRunnable implements Runnable {
 
-    final CyclicBuffer<E> cyclicBuffer;
+    final  CyclicBuffer<E> cyclicBuffer;
     final E e;
 
     SenderRunnable(CyclicBuffer<E> cyclicBuffer, E e) {
       this.cyclicBuffer = cyclicBuffer;
       this.e = e;
     }
-
     public void run() {
       sendBuffer(cyclicBuffer, e);
     }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/SocketAppenderBase.java b/logback-core/src/main/java/ch/qos/logback/core/net/SocketAppenderBase.java
new file mode 100644
index 0000000..2a6d875
--- /dev/null
+++ b/logback-core/src/main/java/ch/qos/logback/core/net/SocketAppenderBase.java
@@ -0,0 +1,308 @@
+/**
+ * Logback: the reliable, generic, fast and flexible logging framework.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
+ *
+ * This program and the accompanying materials are dual-licensed under
+ * either the terms of the Eclipse Public License v1.0 as published by
+ * the Eclipse Foundation
+ *
+ *   or (per the licensee's choosing)
+ *
+ * under the terms of the GNU Lesser General Public License version 2.1
+ * as published by the Free Software Foundation.
+ */
+// Contributors: Dan MacDonald <dan at redknee.com>
+package ch.qos.logback.core.net;
+
+import java.io.IOException;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+import java.net.InetAddress;
+import java.net.Socket;
+
+import ch.qos.logback.core.AppenderBase;
+import ch.qos.logback.core.CoreConstants;
+import ch.qos.logback.core.spi.PreSerializationTransformer;
+
+/**
+ * 
+ * This is the base class for module specific SocketAppender implementations.
+ * 
+ * @author Ceki Gülcü
+ * @author Sébastien Pennec
+ */
+
+public abstract class SocketAppenderBase<E> extends AppenderBase<E> {
+
+  /**
+   * The default port number of remote logging server (4560).
+   */
+  static final int DEFAULT_PORT = 4560;
+
+  /**
+   * The default reconnection delay (30000 milliseconds or 30 seconds).
+   */
+  static final int DEFAULT_RECONNECTION_DELAY = 30000;
+
+  /**
+   * We remember host name as String in addition to the resolved InetAddress so
+   * that it can be returned via getOption().
+   */
+  protected String remoteHost;
+
+  protected InetAddress address;
+  protected int port = DEFAULT_PORT;
+  protected ObjectOutputStream oos;
+  protected int reconnectionDelay = DEFAULT_RECONNECTION_DELAY;
+
+  private Connector connector;
+
+  protected int counter = 0;
+
+  /**
+   * Start this appender.
+   */
+  public void start() {
+    int errorCount = 0;
+    if (port == 0) {
+      errorCount++;
+      addError("No port was configured for appender"
+          + name
+          + " For more information, please visit http://logback.qos.ch/codes.html#socket_no_port");
+    }
+
+    if (address == null) {
+      errorCount++;
+      addError("No remote address was configured for appender"
+          + name
+          + " For more information, please visit http://logback.qos.ch/codes.html#socket_no_host");
+    }
+
+    connect(address, port);
+
+    if (errorCount == 0) {
+      this.started = true;
+    }
+  }
+
+  /**
+   * Strop this appender.
+   * 
+   * <p>
+   * This will mark the appender as closed and call then {@link #cleanUp}
+   * method.
+   */
+  @Override
+  public void stop() {
+    if (!isStarted())
+      return;
+
+    this.started = false;
+    cleanUp();
+  }
+
+  /**
+   * Drop the connection to the remote host and release the underlying connector
+   * thread if it has been created
+   */
+  public void cleanUp() {
+    if (oos != null) {
+      try {
+        oos.close();
+      } catch (IOException e) {
+        addError("Could not close oos.", e);
+      }
+      oos = null;
+    }
+    if (connector != null) {
+      addInfo("Interrupting the connector.");
+      connector.interrupted = true;
+      connector = null; // allow gc
+    }
+  }
+
+  void connect(InetAddress address, int port) {
+    if (this.address == null)
+      return;
+    try {
+      // First, close the previous connection if any.
+      cleanUp();
+      oos = new ObjectOutputStream(new Socket(address, port).getOutputStream());
+    } catch (IOException e) {
+
+      String msg = "Could not connect to remote logback server at ["
+          + address.getHostName() + "].";
+      if (reconnectionDelay > 0) {
+        msg += " We will try again later.";
+        fireConnector(); // fire the connector thread
+      }
+      addInfo(msg, e);
+    }
+  }
+
+  @Override
+  protected void append(E event) {
+
+    if (event == null)
+      return;
+
+    if (address == null) {
+      addError("No remote host is set for SocketAppender named \""
+          + this.name
+          + "\". For more information, please visit http://logback.qos.ch/codes.html#socket_no_host");
+      return;
+    }
+
+    if (oos != null) {
+      try {
+        postProcessEvent(event);
+        Serializable serEvent = getPST().transform(event);
+        oos.writeObject(serEvent);
+        oos.flush();
+        if (++counter >= CoreConstants.OOS_RESET_FREQUENCY) {
+          counter = 0;
+          // Failing to reset the object output stream every now and
+          // then creates a serious memory leak.
+          // System.err.println("Doing oos.reset()");
+          oos.reset();
+        }
+      } catch (IOException e) {
+        if (oos != null) {
+          try {
+            oos.close();
+          } catch (IOException ignore) {
+          }
+        }
+
+        oos = null;
+        addWarn("Detected problem with connection: " + e);
+        if (reconnectionDelay > 0) {
+          fireConnector();
+        }
+      }
+    }
+  }
+
+  protected abstract void postProcessEvent(E event);
+  protected abstract PreSerializationTransformer<E> getPST();
+
+  void fireConnector() {
+    if (connector == null) {
+      addInfo("Starting a new connector thread.");
+      connector = new Connector();
+      connector.setDaemon(true);
+      connector.setPriority(Thread.MIN_PRIORITY);
+      connector.start();
+    }
+  }
+
+  protected static InetAddress getAddressByName(String host) {
+    try {
+      return InetAddress.getByName(host);
+    } catch (Exception e) {
+      // addError("Could not find address of [" + host + "].", e);
+      return null;
+    }
+  }
+
+  /**
+   * The <b>RemoteHost</b> property takes the name of of the host where a corresponding server is running.
+   */
+  public void setRemoteHost(String host) {
+    address = getAddressByName(host);
+    remoteHost = host;
+  }
+
+  /**
+   * Returns value of the <b>RemoteHost</b> property.
+   */
+  public String getRemoteHost() {
+    return remoteHost;
+  }
+
+  /**
+   * The <b>Port</b> property takes a positive integer representing the port
+   * where the server is waiting for connections.
+   */
+  public void setPort(int port) {
+    this.port = port;
+  }
+
+  /**
+   * Returns value of the <b>Port</b> property.
+   */
+  public int getPort() {
+    return port;
+  }
+
+  /**
+   * The <b>reconnectionDelay</b> property takes a positive integer representing
+   * the number of milliseconds to wait between each failed connection attempt
+   * to the server. The default value of this option is 30000 which corresponds
+   * to 30 seconds.
+   *
+   * <p>
+   * Setting this option to zero turns off reconnection capability.
+   */
+  public void setReconnectionDelay(int delay) {
+    this.reconnectionDelay = delay;
+  }
+
+  /**
+   * Returns value of the <b>reconnectionDelay</b> property.
+   */
+  public int getReconnectionDelay() {
+    return reconnectionDelay;
+  }
+
+  
+  /**
+   * The Connector will reconnect when the server becomes available again. It
+   * does this by attempting to open a new connection every
+   * <code>reconnectionDelay</code> milliseconds.
+   * 
+   * <p>
+   * It stops trying whenever a connection is established. It will restart to
+   * try reconnect to the server when previously open connection is dropped.
+   * 
+   * @author Ceki Gülcü
+   * @since 0.8.4
+   */
+  class Connector extends Thread {
+
+    boolean interrupted = false;
+
+    public void run() {
+      Socket socket;
+      while (!interrupted) {
+        try {
+          sleep(reconnectionDelay);
+          addInfo("Attempting connection to " + address.getHostName());
+          socket = new Socket(address, port);
+          synchronized (this) {
+            oos = new ObjectOutputStream(socket.getOutputStream());
+            connector = null;
+            addInfo("Connection established. Exiting connector thread.");
+            break;
+          }
+        } catch (InterruptedException e) {
+          addInfo("Connector interrupted. Leaving loop.");
+          return;
+        } catch (java.net.ConnectException e) {
+          addInfo("Remote host " + address.getHostName()
+              + " refused connection.");
+        } catch (IOException e) {
+          addInfo("Could not connect to " + address.getHostName()
+              + ". Exception is " + e);
+        }
+      }
+      // addInfo("Exiting Connector.run() method.");
+    }
+
+    /**
+     * public void finalize() { LogLog.debug("Connector finalize() has been
+     * called."); }
+     */
+  }
+
+}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/SocketConnector.java b/logback-core/src/main/java/ch/qos/logback/core/net/SocketConnector.java
deleted file mode 100644
index 5ddd52b..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/SocketConnector.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net;
-
-import java.net.Socket;
-import java.util.concurrent.Callable;
-
-import javax.net.SocketFactory;
-
-/**
- * A {@link Runnable} that (re)connects a socket.
- * <p>
- * An implementation of this interface is responsible for repeatedly 
- * attempting to create a socket connection to a remote host.
- *
- * @author Carl Harris
- */
-public interface SocketConnector extends Callable<Socket> {
-
-  /**
-   * An exception handler that is notified of all exceptions that occur
-   * during the (re)connection process.
-   */
-  public interface ExceptionHandler {
-    void connectionFailed(SocketConnector connector, Exception ex);
-  }
-  
-  /**
-   * Blocks the calling thread until a connection is successfully
-   * established.
-   * @return the connected socket
-   * @throws InterruptedException
-   */
-  Socket call() throws InterruptedException;
-
-  /**
-   * Sets the connector's exception handler.
-   * <p>
-   * The handler must be set before the {@link #call()} method is invoked.
-   * @param exceptionHandler the handler to set
-   */
-  void setExceptionHandler(ExceptionHandler exceptionHandler);
-  
-  /**
-   * Sets the connector's socket factory.
-   * <p>
-   * If no factory is configured that connector will use the platform's
-   * default factory.
-   * 
-   * @param socketFactory the factory to set
-   */
-  void setSocketFactory(SocketFactory socketFactory);
-  
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/SyslogAppenderBase.java b/logback-core/src/main/java/ch/qos/logback/core/net/SyslogAppenderBase.java
index 7f25479..b8887cc 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/net/SyslogAppenderBase.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/net/SyslogAppenderBase.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -33,7 +33,7 @@ public abstract class SyslogAppenderBase<E> extends AppenderBase<E> {
 
   final static String SYSLOG_LAYOUT_URL = CoreConstants.CODES_URL
       + "#syslog_layout";
-  final static int MAX_MESSAGE_SIZE_LIMIT = 65000;
+  final static int MSG_SIZE_LIMIT = 256 * 1024;
 
   Layout<E> layout;
   String facilityStr;
@@ -41,7 +41,6 @@ public abstract class SyslogAppenderBase<E> extends AppenderBase<E> {
   protected String suffixPattern;
   SyslogOutputStream sos;
   int port = SyslogConstants.SYSLOG_PORT;
-  int maxMessageSize;
 
   public void start() {
     int errorCount = 0;
@@ -51,16 +50,7 @@ public abstract class SyslogAppenderBase<E> extends AppenderBase<E> {
     }
 
     try {
-      sos = createOutputStream();
-
-      final int systemDatagramSize = sos.getSendBufferSize();
-      if (maxMessageSize == 0) {
-        maxMessageSize = Math.min(systemDatagramSize, MAX_MESSAGE_SIZE_LIMIT);
-        addInfo("Defaulting maxMessageSize to [" + maxMessageSize + "]");
-      } else if (maxMessageSize > systemDatagramSize) {
-        addWarn("maxMessageSize of [" + maxMessageSize + "] is larger than the system defined datagram size of [" + systemDatagramSize + "].");
-        addWarn("This may result in dropped logs.");
-      }
+      sos = new SyslogOutputStream(syslogHost, port);
     } catch (UnknownHostException e) {
       addError("Could not create SyslogWriter", e);
       errorCount++;
@@ -79,8 +69,6 @@ public abstract class SyslogAppenderBase<E> extends AppenderBase<E> {
     }
   }
 
-  abstract public SyslogOutputStream createOutputStream() throws UnknownHostException, SocketException;
-
   abstract public Layout<E> buildLayout();
 
   abstract public int getSeverityForEvent(Object eventObject);
@@ -96,8 +84,8 @@ public abstract class SyslogAppenderBase<E> extends AppenderBase<E> {
       if(msg == null) {
         return;
       }
-      if (msg.length() > maxMessageSize) {
-        msg = msg.substring(0, maxMessageSize);
+      if (msg.length() > MSG_SIZE_LIMIT) {
+        msg = msg.substring(0, MSG_SIZE_LIMIT);
       }
       sos.write(msg.getBytes());
       sos.flush();
@@ -142,14 +130,6 @@ public abstract class SyslogAppenderBase<E> extends AppenderBase<E> {
       return SyslogConstants.LOG_AUTHPRIV;
     } else if ("FTP".equalsIgnoreCase(facilityStr)) {
       return SyslogConstants.LOG_FTP;
-    } else if ("NTP".equalsIgnoreCase(facilityStr)) {
-      return SyslogConstants.LOG_NTP;
-    } else if ("AUDIT".equalsIgnoreCase(facilityStr)) {
-      return SyslogConstants.LOG_AUDIT;
-    } else if ("ALERT".equalsIgnoreCase(facilityStr)) {
-      return SyslogConstants.LOG_ALERT;
-    } else if ("CLOCK".equalsIgnoreCase(facilityStr)) {
-      return SyslogConstants.LOG_CLOCK;
     } else if ("LOCAL0".equalsIgnoreCase(facilityStr)) {
       return SyslogConstants.LOG_LOCAL0;
     } else if ("LOCAL1".equalsIgnoreCase(facilityStr)) {
@@ -231,25 +211,6 @@ public abstract class SyslogAppenderBase<E> extends AppenderBase<E> {
     this.port = port;
   }
 
-  /**
-   * 
-   * @return
-   */
-  public int getMaxMessageSize() {
-    return maxMessageSize;
-  }
-
-  /**
-   * Maximum size for the syslog message (in characters); messages
-   * longer than this are truncated. The default value is 65400 (which
-   * is near the maximum for syslog-over-UDP). Note that the value is
-   * characters; the number of bytes may vary if non-ASCII characters
-   * are present.
-   */
-  public void setMaxMessageSize(int maxMessageSize) {
-    this.maxMessageSize = maxMessageSize;
-  }
-
   public Layout<E> getLayout() {
     return layout;
   }
@@ -261,9 +222,7 @@ public abstract class SyslogAppenderBase<E> extends AppenderBase<E> {
 
   @Override
   public void stop() {
-    if (sos != null) {
-      sos.close();
-    }
+    sos.close();
     super.stop();
   }
 
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/SyslogConstants.java b/logback-core/src/main/java/ch/qos/logback/core/net/SyslogConstants.java
index a9e7b09..2fb431f 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/net/SyslogConstants.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/net/SyslogConstants.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/SyslogOutputStream.java b/logback-core/src/main/java/ch/qos/logback/core/net/SyslogOutputStream.java
index dbb12fe..3c9a246 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/net/SyslogOutputStream.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/net/SyslogOutputStream.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -87,7 +87,4 @@ public class SyslogOutputStream extends OutputStream {
     baos.write(b);
   }
 
-  int getSendBufferSize() throws SocketException {
-    return ds.getSendBufferSize();
-  }
 }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/server/AbstractServerSocketAppender.java b/logback-core/src/main/java/ch/qos/logback/core/net/server/AbstractServerSocketAppender.java
deleted file mode 100644
index 768b2b2..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/server/AbstractServerSocketAppender.java
+++ /dev/null
@@ -1,218 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.server;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.net.UnknownHostException;
-import java.util.concurrent.Executor;
-
-import javax.net.ServerSocketFactory;
-
-import ch.qos.logback.core.AppenderBase;
-import ch.qos.logback.core.net.AbstractSocketAppender;
-import ch.qos.logback.core.spi.PreSerializationTransformer;
-
-/**
- * 
- * This is the super class for module specific ServerSocketAppender
- * implementations can derive from.
- * 
- * @author Carl Harris
- */
-public abstract class AbstractServerSocketAppender<E> extends AppenderBase<E> {
-
-  /**
-   * Default {@link ServerSocket} backlog
-   */
-  public static final int DEFAULT_BACKLOG = 50;
-
-  /** 
-   * Default queue size used for each client
-   */
-  public static final int DEFAULT_CLIENT_QUEUE_SIZE = 100;
-  
-  private int port = AbstractSocketAppender.DEFAULT_PORT;
-  private int backlog = DEFAULT_BACKLOG;
-  private int clientQueueSize = DEFAULT_CLIENT_QUEUE_SIZE;
-  
-  private String address;
-
-  private ServerRunner<RemoteReceiverClient> runner;
-
-  @Override
-  public void start() {
-    if (isStarted()) return;
-    try {
-      ServerSocket socket = getServerSocketFactory().createServerSocket(
-          getPort(), getBacklog(), getInetAddress());    
-      ServerListener<RemoteReceiverClient> listener = createServerListener(socket);
-      
-      runner = createServerRunner(listener, getContext().getExecutorService());
-      runner.setContext(getContext());
-      getContext().getExecutorService().execute(runner);
-      super.start();
-    } catch (Exception ex) {
-      addError("server startup error: " + ex, ex);
-    }
-  }
-  
-  protected ServerListener<RemoteReceiverClient> createServerListener(
-      ServerSocket socket) {
-    return new RemoteReceiverServerListener(socket);
-  }
-  
-  protected ServerRunner<RemoteReceiverClient> createServerRunner(
-      ServerListener<RemoteReceiverClient> listener,
-      Executor executor) {
-    return new RemoteReceiverServerRunner(listener, executor, 
-        getClientQueueSize());
-  }
-  
-  @Override
-  public void stop() {
-    if (!isStarted()) return;
-    try {
-      runner.stop();
-      super.stop();
-    }
-    catch (IOException ex) {
-      addError("server shutdown error: " + ex, ex);
-    }
-  }
-
-  @Override
-  protected void append(E event) {
-    if (event == null) return;
-    postProcessEvent(event);
-    final Serializable serEvent = getPST().transform(event);
-    runner.accept(new ClientVisitor<RemoteReceiverClient>() {
-      public void visit(RemoteReceiverClient client) {
-        client.offer(serEvent);
-      }      
-    });
-  }
-
-  /**
-   * Post process an event received via {@link #append(E)}.
-   * @param event
-   */
-  protected abstract void postProcessEvent(E event);
-
-  /**
-   * Gets a transformer that will be used to convert a received event
-   * to a {@link Serializable} form.
-   * @return
-   */
-  protected abstract PreSerializationTransformer<E> getPST();
-
-  /**
-   * Gets the factory used to create {@link ServerSocket} objects.
-   * <p>
-   * The default implementation delegates to 
-   * {@link ServerSocketFactory#getDefault()}.  Subclasses may override to
-   * private a different socket factory implementation.
-   * 
-   * @return socket factory.
-   */
-  protected ServerSocketFactory getServerSocketFactory() throws Exception {
-    return ServerSocketFactory.getDefault();
-  }
-
-  /**
-   * Gets the local address for the listener.
-   * @return an {@link InetAddress} representation of the local address.
-   * @throws UnknownHostException
-   */
-  protected InetAddress getInetAddress() throws UnknownHostException {
-    if (getAddress() == null) return null;
-    return InetAddress.getByName(getAddress());
-  }
-  
-  /**
-   * Gets the local port for the listener.
-   * @return local port
-   */
-  public int getPort() {
-    return port;
-  }
-
-  /**
-   * Sets the local port for the listener.
-   * @param port the local port to set
-   */
-  public void setPort(int port) {
-    this.port = port;
-  }
-
-  /**
-   * Gets the listener queue depth.
-   * <p>
-   * This represents the number of connected clients whose connections 
-   * have not yet been accepted.
-   * @return queue depth
-   * @see java.net.ServerSocket
-   */
-  public int getBacklog() {
-    return backlog;
-  }
-
-  /**
-   * Sets the listener queue depth.
-   * <p>
-   * This represents the number of connected clients whose connections 
-   * have not yet been accepted.
-   * @param backlog the queue depth to set
-   * @see java.net.ServerSocket
-   */
-  public void setBacklog(int backlog) {
-    this.backlog = backlog;
-  }
-
-  /**
-   * Gets the local address for the listener.
-   * @return a string representation of the local address
-   */
-  public String getAddress() {
-    return address;
-  }
-
-  /**
-   * Sets the local address for the listener.
-   * @param address a host name or a string representation of an IP address
-   */
-  public void setAddress(String address) {
-    this.address = address;
-  }
-  
-  /**
-   * Gets the event queue size used for each client connection. 
-   * @return queue size
-   */
-  public int getClientQueueSize() {
-    return clientQueueSize;
-  }
-
-  /**
-   * Sets the event queue size used for each client connection.
-   * @param clientQueueSize the queue size to set
-   */
-  public void setClientQueueSize(int clientQueueSize) {
-    this.clientQueueSize = clientQueueSize;
-  }
-
-}
-
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/server/Client.java b/logback-core/src/main/java/ch/qos/logback/core/net/server/Client.java
deleted file mode 100644
index 2a856c1..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/server/Client.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.server;
-
-import java.io.Closeable;
-import java.io.IOException;
-
-/**
- * A client of a {@link ServerRunner}.
- * <p>
- * This interface exists primarily to abstract away the details of the
- * client's underlying {@code Socket} and the concurrency associated with
- * handling multiple clients.  Such realities make it difficult to create 
- * effective unit tests for the {@link ServerRunner} that are easy to 
- * understand and maintain.
- * <p>
- * This interface captures the only those details about a client that
- * the {@code ServerRunner} cares about; namely, that it is something that
- * <ol>
- *   <li>is Runnable — i.e. it can be executed concurrently</li>
- *   <li>holds resources that need to be closed before the client is
- *       discarded</li>
- * </ol>
- * 
- * @author Carl Harris
- */
-public interface Client extends Runnable, Closeable {
-
-  /**
-   * Closes any resources that are held by the client.
-   * <p>
-   * Note that (as described in Doug Lea's discussion about interrupting I/O
-   * operations in "Concurrent Programming in Java" (Addison-Wesley 
-   * Professional, 2nd edition, 1999) this method is used to interrupt
-   * any blocked I/O operation in the client when the server is shutting
-   * down.  The client implementation must anticipate this potential,
-   * and gracefully exit when the blocked I/O operation throws the
-   * relevant {@link IOException} subclass. 
-   * <p>
-   * Note also, that unlike {@link Closeable#close()} this method is not
-   * permitted to propagate any {@link IOException} that occurs when closing
-   * the underlying resource(s).
-   */
-  void close();
-  
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/server/ClientVisitor.java b/logback-core/src/main/java/ch/qos/logback/core/net/server/ClientVisitor.java
deleted file mode 100644
index efd7d1e..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/server/ClientVisitor.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.server;
-
-/**
- * A visitor for a {@link Client}.
- *
- * @author Carl Harris
- */
-public interface ClientVisitor<T extends Client> {
-
-  void visit(T client);
-  
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/server/ConcurrentServerRunner.java b/logback-core/src/main/java/ch/qos/logback/core/net/server/ConcurrentServerRunner.java
deleted file mode 100644
index e7341e7..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/server/ConcurrentServerRunner.java
+++ /dev/null
@@ -1,231 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.server;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.concurrent.Executor;
-import java.util.concurrent.RejectedExecutionException;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
-
-import ch.qos.logback.core.spi.ContextAwareBase;
-
-/**
- * A concurrent {@link ServerRunner}.
- * <p>
- * An instance of this object is created with a {@link ServerListener} and
- * an {@link Executor}.  On invocation of the {@link #start()} method, it
- * passes itself to the given {@code Executor} and returns immediately.  On
- * invocation of its {@link #run()} method by the {@link Executor} it begins 
- * accepting client connections via its {@code ServerListener}.  As each
- * new {@link Client} is accepted, the client is configured with the 
- * runner's {@link LoggingContext} and is then passed to the {@code 
- * Executor} for concurrent execution of the client's service loop.     
- * <p>
- * On invocation of the {@link #stop()} method, the runner closes the listener
- * and each of the connected clients (by invoking {@link Client#close()} 
- * effectively interrupting any blocked I/O calls and causing these concurrent
- * subtasks to exit gracefully).  This ensures that before the {@link #stop()}
- * method returns (1) all I/O resources have been released and (2) all 
- * of the threads of the {@code Executor} are idle.
- *
- * @author Carl Harris
- */
-public abstract class ConcurrentServerRunner<T extends Client> 
-    extends ContextAwareBase 
-    implements Runnable, ServerRunner<T> {
-
-  private final Lock clientsLock = new ReentrantLock();
-  
-  private final Collection<T> clients = new ArrayList<T>();
-
-  private final ServerListener<T> listener;
-  private final Executor executor;
-  
-  private boolean running;
-  
-  /**
-   * Constructs a new server runner.
-   * @param listener the listener from which the server will accept new
-   *    clients
-   * @param executor a executor that will facilitate execution of the
-   *    listening and client-handling tasks; while any {@link Executor}
-   *    is allowed here, outside of unit testing the only reasonable choice
-   *    is a bounded thread pool of some kind.
-   */
-  public ConcurrentServerRunner(ServerListener<T> listener, Executor executor) {
-    this.listener = listener;
-    this.executor = executor;
-  }
-  
-  /**
-   * {@inheritDoc}
-   */
-  public boolean isRunning() {
-    return running;
-  }
-
-  protected void setRunning(boolean running) {
-    this.running = running;
-  }
-  
-  /**
-   * {@inheritDoc}
-   */
-  public void stop() throws IOException {
-    listener.close();
-    accept(new ClientVisitor<T>() {
-      public void visit(T client) {
-        client.close();
-      } 
-    });
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public void accept(ClientVisitor<T> visitor) {
-    Collection<T> clients = copyClients();
-    for (T client : clients) {
-      try {
-        visitor.visit(client);
-      }
-      catch (RuntimeException ex) {
-        addError(client + ": " + ex);
-      }
-    }
-  }
-
-  /**
-   * Creates a copy of the collection of all clients that are presently
-   * being tracked by the server.
-   * @return collection of client objects
-   */
-  private Collection<T> copyClients() {
-    clientsLock.lock();
-    try {
-      Collection<T> copy = new ArrayList<T>(clients);
-      return copy;
-    }
-    finally {
-      clientsLock.unlock();
-    }
-  }
-  
-  /**
-   * {@inheritDoc}
-   */
-  public void run() {
-    setRunning(true);
-    try {
-      addInfo("listening on " + listener);
-      while (!Thread.currentThread().isInterrupted()) {
-        T client = listener.acceptClient();
-        if (!configureClient(client)) {
-          addError(client + ": connection dropped");
-          client.close();
-          continue;
-        }
-        try {
-          executor.execute(new ClientWrapper(client));
-        }
-        catch (RejectedExecutionException ex) {
-          addError(client + ": connection dropped");
-          client.close();
-        }
-      }
-    }
-    catch (InterruptedException ex) {
-      assert true;  // ok... we'll shut down
-    }
-    catch (Exception ex) {
-      addError("listener: " + ex);
-    }
-
-    setRunning(false);
-    addInfo("shutting down");
-    listener.close();
-  }
-
-  /**
-   * Configures a connected client.
-   * <p>
-   * A subclass implements this method to perform any necessary configuration
-   * of the client object before its {@link Client#run()} method is invoked.
-   * 
-   * @param client the subject client
-   * @return {@code true} if configuration was successful; if the return
-   *    value is {@code false} the client connection will be dropped
-   */
-  protected abstract boolean configureClient(T client);
-    
-  /**
-   * Adds a client to the collection of those being tracked by the server.
-   * @param client the client to add
-   */
-  private void addClient(T client) {
-    clientsLock.lock();
-    try {
-      clients.add(client);
-    }
-    finally {
-      clientsLock.unlock();
-    }
-  }
-  
-  /**
-   * Removes a client from the collection of those being tracked by the server.
-   * @param client the client to remote
-   */
-  private void removeClient(T client) {
-    clientsLock.lock();
-    try {
-      clients.remove(client);
-    }
-    finally {
-      clientsLock.unlock();
-    }
-  }
-  
-  /**
-   * A wrapper for a {@link Client} responsible for ensuring that client
-   * tracking is performed properly.
-   */
-  private class ClientWrapper implements Client {
-    
-    private final T delegate;
-    
-    public ClientWrapper(T client) {
-      this.delegate = client;
-    }
-
-    public void run() {
-      addClient(delegate);
-      try {
-        delegate.run();
-      }
-      finally {
-        removeClient(delegate);
-      }      
-    }
-
-    public void close() {
-      delegate.close();
-    }
-    
-  }
-  
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/server/RemoteReceiverClient.java b/logback-core/src/main/java/ch/qos/logback/core/net/server/RemoteReceiverClient.java
deleted file mode 100644
index 5a38468..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/server/RemoteReceiverClient.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.server;
-
-import java.io.Serializable;
-import java.util.concurrent.BlockingQueue;
-
-import ch.qos.logback.core.spi.ContextAware;
-
-
-/**
- * A client of a {@link ServerRunner} that receives events from a local
- * appender and logs them according to local policy.
- *
- * @author Carl Harris
- */
-interface RemoteReceiverClient extends Client, ContextAware {
-
-  /**
-   * Sets the client's event queue.
-   * <p>
-   * This method must be invoked before the {@link #run()} method is invoked.
-   * @param queue the queue to set
-   */
-  void setQueue(BlockingQueue<Serializable> queue);
-  
-  /**
-   * Offers an event to the client.
-   * @param event the subject event
-   * @return {@code true} if the client's queue accepted the event,
-   *    {@code false} if the client's queue is full
-   */
-  boolean offer(Serializable event);
-  
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/server/RemoteReceiverServerListener.java b/logback-core/src/main/java/ch/qos/logback/core/net/server/RemoteReceiverServerListener.java
deleted file mode 100644
index d2a158f..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/server/RemoteReceiverServerListener.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.server;
-
-import java.io.IOException;
-import java.net.ServerSocket;
-import java.net.Socket;
-
-/**
- * A {@link ServerListener} that accepts connections from remote receiver
- * component clients.
- *
- * @author Carl Harris
- */
-class RemoteReceiverServerListener
-    extends ServerSocketListener<RemoteReceiverClient> {
-
-  /**
-   * Constructs a new listener.
-   * @param serverSocket server socket from which new client connections
-   *    will be accepted
-   */
-  public RemoteReceiverServerListener(ServerSocket serverSocket) {
-    super(serverSocket);
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  protected RemoteReceiverClient createClient(String id, Socket socket)
-      throws IOException {
-    return new RemoteReceiverStreamClient(id, socket);
-  }
-
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/server/RemoteReceiverServerRunner.java b/logback-core/src/main/java/ch/qos/logback/core/net/server/RemoteReceiverServerRunner.java
deleted file mode 100644
index f99edf3..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/server/RemoteReceiverServerRunner.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.server;
-
-import java.io.Serializable;
-import java.util.concurrent.ArrayBlockingQueue;
-import java.util.concurrent.Executor;
-
-/**
- * A {@link ServerRunner} that listens for connections from remote receiver
- * component clients and delivers logging events to all connected clients.
- *
- * @author Carl Harris
- */
-class RemoteReceiverServerRunner 
-    extends ConcurrentServerRunner<RemoteReceiverClient> {
-
-  private final int clientQueueSize;
-  
-  /**
-   * Constructs a new server runner.
-   * @param listener the listener from which the server will accept new
-   *    clients
-   * @param executor that will be used to execute asynchronous tasks 
-   *    on behalf of the runner.
-   * @param queueSize size of the event queue that will be maintained for
-   *    each client
-   */
-  public RemoteReceiverServerRunner(
-      ServerListener<RemoteReceiverClient> listener, Executor executor,
-      int clientQueueSize) {
-    super(listener, executor);
-    this.clientQueueSize = clientQueueSize;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  protected boolean configureClient(RemoteReceiverClient client) {
-    client.setContext(getContext());
-    client.setQueue(new ArrayBlockingQueue<Serializable>(clientQueueSize));
-    return true;
-  }
-
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/server/RemoteReceiverStreamClient.java b/logback-core/src/main/java/ch/qos/logback/core/net/server/RemoteReceiverStreamClient.java
deleted file mode 100644
index 29a432e..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/server/RemoteReceiverStreamClient.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.server;
-
-import java.io.IOException;
-import java.io.ObjectOutputStream;
-import java.io.OutputStream;
-import java.io.Serializable;
-import java.net.Socket;
-import java.net.SocketException;
-import java.util.concurrent.BlockingQueue;
-
-import ch.qos.logback.core.CoreConstants;
-import ch.qos.logback.core.spi.ContextAwareBase;
-import ch.qos.logback.core.util.CloseUtil;
-
-/**
- * A {@link RemoteReceiverClient} that writes serialized logging events to an
- * {@link OutputStream}.
- *
- * @author Carl Harris
- */
-class RemoteReceiverStreamClient 
-    extends ContextAwareBase implements RemoteReceiverClient {
-
-  private final String clientId;
-  private final Socket socket;
-  private final OutputStream outputStream;
-  
-  private BlockingQueue<Serializable> queue;
-  
-  /**
-   * Constructs a new client.
-   * @param id identifier string for the client
-   * @param socket socket to which logging events will be written
-   */
-  public RemoteReceiverStreamClient(String id, Socket socket) {
-    this.clientId = "client " + id + ": ";
-    this.socket = socket;
-    this.outputStream = null;
-  }
-
-  /**
-   * Constructs a new client.
-   * <p> 
-   * This constructor exists primarily to support unit tests where it
-   * is inconvenient to have to create a socket for the test.
-   * 
-   * @param id identifier string for the client
-   * @param outputStream output stream to which logging Events will be written
-   */
-  RemoteReceiverStreamClient(String id, OutputStream outputStream) {
-    this.clientId = "client " + id + ": ";
-    this.socket = null;
-    this.outputStream = outputStream;
-  }
-  
-  /**
-   * {@inheritDoc}
-   */
-  public void setQueue(BlockingQueue<Serializable> queue) {
-    this.queue = queue;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public boolean offer(Serializable event) {
-    if (queue == null) {
-      throw new IllegalStateException("client has no event queue");
-    }
-    return queue.offer(event);
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public void close() {
-    if (socket == null) return;
-    CloseUtil.closeQuietly(socket);
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public void run() {  
-    addInfo(clientId + "connected"); 
-
-    ObjectOutputStream oos = null;
-    try {
-      int counter = 0;
-      oos = createObjectOutputStream();
-      while (!Thread.currentThread().isInterrupted()) {
-        try {
-          Serializable event = queue.take();
-          oos.writeObject(event);
-          oos.flush();
-          if (++counter >= CoreConstants.OOS_RESET_FREQUENCY) {
-            // failing to reset the stream periodically will result in a
-            // serious memory leak (as noted in AbstractSocketAppender)
-            counter = 0;
-            oos.reset();
-          }
-        }
-        catch (InterruptedException ex) {
-          Thread.currentThread().interrupt();
-        }
-      }
-    }
-    catch (SocketException ex) {
-      addInfo(clientId + ex);
-    }
-    catch (IOException ex) {
-      addError(clientId + ex);
-    }
-    catch (RuntimeException ex) {
-      addError(clientId + ex);
-    }
-    finally {
-      if (oos != null) {
-        CloseUtil.closeQuietly(oos);
-      }
-      close();
-      addInfo(clientId + "connection closed");
-    }
-  }
-
-  private ObjectOutputStream createObjectOutputStream() throws IOException {
-    if (socket == null) {
-      return new ObjectOutputStream(outputStream);
-    }
-    return new ObjectOutputStream(socket.getOutputStream());
-  }
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/server/SSLServerSocketAppenderBase.java b/logback-core/src/main/java/ch/qos/logback/core/net/server/SSLServerSocketAppenderBase.java
deleted file mode 100644
index 4b58bb3..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/server/SSLServerSocketAppenderBase.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.server;
-
-import javax.net.ServerSocketFactory;
-import javax.net.ssl.SSLContext;
-
-import ch.qos.logback.core.net.ssl.ConfigurableSSLServerSocketFactory;
-import ch.qos.logback.core.net.ssl.SSLComponent;
-import ch.qos.logback.core.net.ssl.SSLConfiguration;
-import ch.qos.logback.core.net.ssl.SSLParametersConfiguration;
-
-/**
- * 
- * This is the base class for module specific ServerSocketAppender 
- * implementations.
- * 
- * @author Carl Harris
- */
-public abstract class SSLServerSocketAppenderBase<E> 
-    extends AbstractServerSocketAppender<E> implements SSLComponent {
-
-  private SSLConfiguration ssl;
-  private ServerSocketFactory socketFactory;
-  
-  @Override
-  protected ServerSocketFactory getServerSocketFactory() {
-    return socketFactory;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public void start() {
-    try {
-      SSLContext sslContext = getSsl().createContext(this);
-      SSLParametersConfiguration parameters = getSsl().getParameters();
-      parameters.setContext(getContext());
-      socketFactory = new ConfigurableSSLServerSocketFactory(parameters, 
-          sslContext.getServerSocketFactory());
-      super.start();
-    }
-    catch (Exception ex) {
-      addError(ex.getMessage(), ex);
-    }
-  }
-
-  /**
-   * Gets the SSL configuration.
-   * @return SSL configuration; if no configuration has been set, a
-   *    default configuration is returned
-   */
-  public SSLConfiguration getSsl() {
-    if (ssl == null) {
-      ssl = new SSLConfiguration();
-    }
-    return ssl;
-  }
-
-  /**
-   * Sets the SSL configuration.
-   * @param ssl the SSL configuration to set
-   */
-  public void setSsl(SSLConfiguration ssl) {
-    this.ssl = ssl;
-  }
-  
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/server/ServerListener.java b/logback-core/src/main/java/ch/qos/logback/core/net/server/ServerListener.java
deleted file mode 100644
index ec26f36..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/server/ServerListener.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.server;
-
-import java.io.Closeable;
-import java.io.IOException;
-
-/**
- * A listener that accepts {@link Client} connections on behalf of a
- * {@link ServerRunner}.
- * <p>
- * This interface exists primarily to abstract away the details of the
- * listener's underlying {@code ServerSocket} and the concurrency associated
- * with handling multiple clients. Such realities make it difficult to create
- * effective unit tests for the {@link ServerRunner} that are easy to 
- * understand and maintain.
- * <p>
- * This interface captures the only those details about the listener that the
- * {@code ServerRunner} cares about; namely, that it is something that has
- * an underlying resource (or resources) that need to be closed before the
- * listener is discarded.
- * </ol>
- */
-public interface ServerListener<T extends Client> extends Closeable {
-
-  /**
-   * Accepts the next client that appears on this listener.
-   * <p>
-   * An implementation of this method is expected to block the calling thread
-   * and not return until either a client appears or an exception occurs.
-   * 
-   * @return client object
-   * @throws IOException
-   * @throws InterruptedException
-   */
-  T acceptClient() throws IOException, InterruptedException;
-  
-  /**
-   * Closes any underlying {@link Closeable} resources associated with this
-   * listener.
-   * <p>
-   * Note that (as described in Doug Lea's discussion about interrupting I/O
-   * operations in "Concurrent Programming in Java" (Addison-Wesley 
-   * Professional, 2nd edition, 1999) this method is used to interrupt
-   * any blocked I/O operation in the client when the server is shutting
-   * down.  The client implementation must anticipate this potential,
-   * and gracefully exit when the blocked I/O operation throws the 
-   * relevant {@link IOException} subclass. 
-   * <p>
-   * Note also, that unlike {@link Closeable#close()} this method is not
-   * permitted to propagate any {@link IOException} that occurs when closing
-   * the underlying resource(s).
-   */
-  void close();
-  
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/server/ServerRunner.java b/logback-core/src/main/java/ch/qos/logback/core/net/server/ServerRunner.java
deleted file mode 100644
index fc24bc7..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/server/ServerRunner.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.server;
-
-import java.io.IOException;
-
-import ch.qos.logback.core.spi.ContextAware;
-
-/**
- * An object that is responsible for the asynchronous execution of a
- * socket server.
- * <p>
- * This interface exists primarily to allow the runner to be mocked for
- * the purpose of unit testing the socket server implementation.
- * 
- * @author Carl Harris
- */
-public interface ServerRunner<T extends Client> extends ContextAware, Runnable {
-
-  /**
-   * Gets a flag indicating whether the server is currently running.
-   * @return flag state
-   */
-  boolean isRunning();
-  
-  /**
-   * Stops execution of the runner.
-   * <p>
-   * This method must cause all I/O and thread resources associated with
-   * the runner to be released.  If the receiver has not been started, this
-   * method must have no effect.
-   * @throws IOException
-   */
-  void stop() throws IOException;
-
-  /**
-   * Presents each connected client to the given visitor.   
-   * @param visitor the subject visitor
-   */
-  void accept(ClientVisitor<T> visitor);
-  
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/server/ServerSocketListener.java b/logback-core/src/main/java/ch/qos/logback/core/net/server/ServerSocketListener.java
deleted file mode 100644
index 5abd77e..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/server/ServerSocketListener.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.server;
-
-import java.io.IOException;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.net.SocketAddress;
-
-import ch.qos.logback.core.util.CloseUtil;
-
-/**
- * A {@link ServerListener} that accepts connections on a {@link ServerSocket}.
- *
- * @author Carl Harris
- */
-public abstract class ServerSocketListener<T extends Client> 
-    implements ServerListener<T> {
-
-  private final ServerSocket serverSocket;
-
-  /**
-   * Constructs a new listener.
-   * @param serverSocket server socket delegate
-   */
-  public ServerSocketListener(ServerSocket serverSocket) {
-    this.serverSocket = serverSocket;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public T acceptClient() throws IOException {
-    Socket socket = serverSocket.accept();
-    return createClient(
-        socketAddressToString(socket.getRemoteSocketAddress()), socket);
-  }
-
-  /**
-   * Creates the client object for a new socket connection
-   * @param id identifier string for the client
-   * @param socket client's socket connection
-   * @return client object
-   * @throws IOException
-   */
-  protected abstract T createClient(String id, Socket socket) 
-      throws IOException;
-  
-  /**
-   * {@inheritDoc}
-   */
-  public void close() {
-    CloseUtil.closeQuietly(serverSocket);
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public String toString() {
-    return socketAddressToString(serverSocket.getLocalSocketAddress());
-  }
-
-  /**
-   * Converts a socket address to a reasonable display string.
-   * @param address the subject socket address
-   * @return display string
-   */
-  private String socketAddressToString(SocketAddress address) {
-    String addr = address.toString();
-    int i = addr.indexOf("/");
-    if (i >= 0) {
-      addr = addr.substring(i + 1);
-    }
-    return addr;
-  }
-
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/server/package.html b/logback-core/src/main/java/ch/qos/logback/core/net/server/package.html
deleted file mode 100644
index 9fecf5e..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/server/package.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
-	<head>
-	  <title></title>
-	</head>
-	<body>
-		<p>Contains the base classes used by logback to serve logging events to
-		   remote peers.</p>
-	</body>
-</html>
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/ssl/ConfigurableSSLServerSocketFactory.java b/logback-core/src/main/java/ch/qos/logback/core/net/ssl/ConfigurableSSLServerSocketFactory.java
deleted file mode 100644
index 1ef326c..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/ssl/ConfigurableSSLServerSocketFactory.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.ssl;
-
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-
-import javax.net.ServerSocketFactory;
-import javax.net.ssl.SSLServerSocket;
-import javax.net.ssl.SSLServerSocketFactory;
-
-/**
- * An {@link SSLServerSocketFactory} that configures SSL parameters 
- * (those specified in {@link SSLParametersConfiguration) on each newly 
- * created socket. 
- * <p>
- * When any of this factory's {@code createServerSocket} methods are invoked, 
- * it calls on a delegate {@link SSLServerSocketFactory} to create the socket, 
- * and then sets the SSL parameters of the socket (using the provided 
- * configuration) before returning the socket to the caller.
- *
- * @author Carl Harris
- */
-public class ConfigurableSSLServerSocketFactory extends ServerSocketFactory {
-
-  private final SSLParametersConfiguration parameters;
-  private final SSLServerSocketFactory delegate;
-
-  /**
-   * Creates a new factory.
-   * @param parameters parameters that will be configured on each
-   *    socket created by the factory
-   * @param delegate socket factory that will be called upon to create
-   *    server sockets before configuration
-   */
-  public ConfigurableSSLServerSocketFactory(
-      SSLParametersConfiguration parameters, SSLServerSocketFactory delegate) {
-    this.parameters = parameters;
-    this.delegate = delegate;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public ServerSocket createServerSocket(int port, int backlog, InetAddress ifAddress)
-      throws IOException {
-    SSLServerSocket socket = (SSLServerSocket) delegate.createServerSocket(
-        port, backlog, ifAddress);
-    parameters.configure(new SSLConfigurableServerSocket(socket));
-    return socket;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public ServerSocket createServerSocket(int port, int backlog)
-      throws IOException {
-    SSLServerSocket socket = (SSLServerSocket) delegate.createServerSocket(
-        port, backlog);
-    parameters.configure(new SSLConfigurableServerSocket(socket));
-    return socket;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public ServerSocket createServerSocket(int port) throws IOException {
-    SSLServerSocket socket = (SSLServerSocket) delegate.createServerSocket(
-        port);
-    parameters.configure(new SSLConfigurableServerSocket(socket));
-    return socket;
-  }
-
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/ssl/ConfigurableSSLSocketFactory.java b/logback-core/src/main/java/ch/qos/logback/core/net/ssl/ConfigurableSSLSocketFactory.java
deleted file mode 100644
index f04abe6..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/ssl/ConfigurableSSLSocketFactory.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.ssl;
-
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.Socket;
-import java.net.UnknownHostException;
-
-import javax.net.SocketFactory;
-import javax.net.ssl.SSLParameters;
-import javax.net.ssl.SSLSocket;
-import javax.net.ssl.SSLSocketFactory;
-
-/**
- * An {@link SSLSocketFactory} that configures SSL parameters 
- * (those covered by {@link SSLParameters}) on each newly created socket. 
- * <p>
- * When any of this factory's {@code createSocket} methods are invoked, it
- * calls on a {@link SSLSocketFactory} delegate to create the socket, and 
- * then sets the SSL parameters of the socket (using the provided 
- * configuration) before returning the socket to the caller.
- *
- * @author Carl Harris
- */
-public class ConfigurableSSLSocketFactory extends SocketFactory {
-
-  private final SSLParametersConfiguration parameters;
-  private final SSLSocketFactory delegate;
-
-  /**
-   * Creates a new factory.
-   * @param parameters parameters that will be configured on each
-   *    socket created by the factory
-   * @param delegate socket factory that will be called upon to create
-   *    sockets before configuration
-   */
-  public ConfigurableSSLSocketFactory(SSLParametersConfiguration parameters,
-      SSLSocketFactory delegate) {
-    this.parameters = parameters;
-    this.delegate = delegate;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public Socket createSocket(InetAddress address, int port,
-      InetAddress localAddress, int localPort) throws IOException {
-    SSLSocket socket = (SSLSocket) delegate.createSocket(address, port, 
-        localAddress, localPort);
-    parameters.configure(new SSLConfigurableSocket(socket));
-    return socket;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public Socket createSocket(InetAddress host, int port) throws IOException {
-    SSLSocket socket = (SSLSocket) delegate.createSocket(host, port);
-    parameters.configure(new SSLConfigurableSocket(socket));
-    return socket;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public Socket createSocket(String host, int port, InetAddress localHost,
-      int localPort) throws IOException, UnknownHostException {
-    SSLSocket socket = (SSLSocket) delegate.createSocket(host, port, 
-        localHost, localPort);
-    parameters.configure(new SSLConfigurableSocket(socket));
-    return socket;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public Socket createSocket(String host, int port) throws IOException,
-      UnknownHostException {
-    SSLSocket socket = (SSLSocket) delegate.createSocket(host, port);
-    parameters.configure(new SSLConfigurableSocket(socket));
-    return socket;
-  }
-  
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/ssl/KeyManagerFactoryFactoryBean.java b/logback-core/src/main/java/ch/qos/logback/core/net/ssl/KeyManagerFactoryFactoryBean.java
deleted file mode 100644
index cce54b3..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/ssl/KeyManagerFactoryFactoryBean.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.ssl;
-
-import java.security.NoSuchAlgorithmException;
-import java.security.NoSuchProviderException;
-
-import javax.net.ssl.KeyManagerFactory;
-
-/**
- * A factory bean for a JSSE {@link KeyManagerFactory}.
- * <p>
- * This object holds the configurable properties of a key manager factory
- * and uses them to create and load a {@link KeyManagerFactory} instance.
- *
- * @author Carl Harris
- */
-public class KeyManagerFactoryFactoryBean {
-
-  private String algorithm;
-  private String provider;
-
-  /**
-   * Creates a {@link KeyManagerFactory} using the receiver's configuration.
-   * @return factory object
-   * @throws NoSuchProviderException if the provider specified by 
-   *    {@link #setProvider(String)} is not known to the platform
-   * @throws NoSuchAlgorithmException if the algorithm specified by
-   *    {@link #setAlgorithm(String)} is not known to the specified provider
-   *    (or to the default platform provider if no provider is specified)
-   */
-  public KeyManagerFactory createKeyManagerFactory() 
-      throws NoSuchProviderException, NoSuchAlgorithmException {
-    
-    return getProvider() != null ?
-        KeyManagerFactory.getInstance(getAlgorithm(), getProvider())
-        : KeyManagerFactory.getInstance(getAlgorithm());
-  }
-  
-  /**
-   * Gets the algorithm name for the key manager factory.
-   * @return algorithm name (e.g. {@code SunX509}); the default algorithm
-   *    (obtained from {@link KeyManagerFactory#getDefaultAlgorithm()})
-   *    is returned if no algorithm has been configured
-   */
-  public String getAlgorithm() {
-    if (algorithm == null) {
-      return KeyManagerFactory.getDefaultAlgorithm();
-    }
-    return algorithm;
-  }
-
-  /**
-   * Sets the algorithm name for the key manager factory.
-   * @param algorithm an algorithm name, which must be recognized by the
-   *    provider specified by {@link #setProvider(String)} or by the 
-   *    platform's default provider if no provider is specified. 
-   */
-  public void setAlgorithm(String algorithm) {
-    this.algorithm = algorithm;
-  }
-
-  /**
-   * Gets the JSSE provider name for the key manager factory.
-   * @return provider name
-   */
-  public String getProvider() {
-    return provider;
-  }
-
-  /**
-   * Sets the JSSE provider name for the key manager factory.
-   * @param provider name of the JSSE provider to utilize in creating the
-   *    key manager factory
-   */
-  public void setProvider(String provider) {
-    this.provider = provider;
-  }
-
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/ssl/KeyStoreFactoryBean.java b/logback-core/src/main/java/ch/qos/logback/core/net/ssl/KeyStoreFactoryBean.java
deleted file mode 100644
index 8472fdc..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/ssl/KeyStoreFactoryBean.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.ssl;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.security.KeyStore;
-import java.security.KeyStoreException;
-import java.security.NoSuchAlgorithmException;
-import java.security.NoSuchProviderException;
-
-import ch.qos.logback.core.util.LocationUtil;
-
-
-/**
- * A factory bean for a JCA {@link KeyStore}.
- * <p>
- * This object holds the configurable properties of a key store and uses
- * them to create and load a {@link KeyStore} instance.
- *
- * @author Carl Harris
- */
-public class KeyStoreFactoryBean {
-
-  private String location;
-  private String provider;
-  private String type;
-  private String password;
-
-  /**
-   * Creates a new {@link KeyStore} using the receiver's configuration.
-   * @return key store
-   * @throws NoSuchProviderException if the provider specified by 
-   *    {@link #setProvider(String)} is not known to the platform
-   * @throws NoSuchAlgorithmException if the key store type specified by
-   *    {@link #setType(String)} is not known to the specified provider
-   *    (or the platform's default provider if the provider isn't specified)
-   * @throws KeyStoreException if some other error occurs in loading
-   *    the key store from the resource specified by 
-   *    {@link #setLocation(String)}
-   */
-  public KeyStore createKeyStore() throws NoSuchProviderException, 
-      NoSuchAlgorithmException, KeyStoreException {
-    
-    if (getLocation() == null) {
-      throw new IllegalArgumentException("location is required");
-    }
-    
-    InputStream inputStream = null;
-    try {
-      URL url = LocationUtil.urlForResource(getLocation());
-      inputStream = url.openStream();
-      KeyStore keyStore = newKeyStore();
-      keyStore.load(inputStream, getPassword().toCharArray());
-      return keyStore;
-    }
-    catch (NoSuchProviderException ex) {
-      throw new NoSuchProviderException("no such keystore provider: " 
-            + getProvider());
-    }
-    catch (NoSuchAlgorithmException ex) {
-      throw new NoSuchAlgorithmException("no such keystore type: "
-          + getType());
-    }
-    catch (FileNotFoundException ex) {
-      throw new KeyStoreException(getLocation() + ": file not found");
-    }
-    catch (Exception ex) {
-      throw new KeyStoreException(getLocation() + ": " + ex.getMessage(), ex);
-    }
-    finally {
-      try {
-        if (inputStream != null) {
-          inputStream.close();
-        }
-      }
-      catch (IOException ex) {
-        ex.printStackTrace(System.err);
-      }
-    }
-  }
-  
-  /**
-   * Invokes the appropriate JCE factory method to obtain a new
-   * {@link KeyStore} object.
-   */
-  private KeyStore newKeyStore() throws NoSuchAlgorithmException, 
-      NoSuchProviderException, KeyStoreException {
-    
-    return getProvider() != null ? 
-        KeyStore.getInstance(getType(), getProvider()) 
-        : KeyStore.getInstance(getType());        
-  }
-
-  /**
-   * Gets the location of the key store resource.
-   * @return a String containing a URL for the resource
-   */
-  public String getLocation() {
-    return location;
-  }
-
-  /**
-   * Sets the location of the key store resource.
-   * @param location a String containing a URL for the resource; if the 
-   *    URL string isn't prefixed by a scheme, the path is assumed to be 
-   *    relative to the root of the classpath.
-   */
-  public void setLocation(String location) {
-    this.location = location;
-  }
-
-  /**
-   * Gets the type of key store to load.
-   * @return a key store type name (e.g. {@code JKS}); the 
-   *    {@link SSL#DEFAULT_KEYSTORE_TYPE} is returned if no type has been configured
-   */
-  public String getType() {
-    if (type == null) {
-      return SSL.DEFAULT_KEYSTORE_TYPE;
-    }
-    return type;
-  }
-
-  /**
-   * Sets the type of key store to load.
-   * @param type a key store type name (e.g. {@code JKS}, {@code PKCS12});
-   *    the type specified must be supported by the provider specified by
-   *    {@link #setProvider(String)} or by the platform's default provider
-   *    if no provider is specified
-   */
-  public void setType(String type) {
-    this.type = type;
-  }
-
-  /**
-   * Gets the JCA key store provider name.
-   * @return provider name or {@code null} if no provider has been configured
-   */
-  public String getProvider() {
-    return provider;
-  }
-
-  /**
-   * Sets the JCA key store provider name.
-   * @param provider name of the JCA provider to utilize in creating the
-   *    key store
-   */
-  public void setProvider(String provider) {
-    this.provider = provider;
-  }
-
-  /**
-   * Gets the password to use to access the key store.
-   * @return password string; the {@link SSL#DEFAULT_KEYSTORE_PASSWORD} is returned
-   *    if no password has been configured
-   */
-  public String getPassword() {
-    if (password == null) {
-      return SSL.DEFAULT_KEYSTORE_PASSWORD;
-    }
-    return password;
-  }
-
-  /**
-   * Sets the password to use to access the keystore.
-   * @param password the password to set
-   */
-  public void setPassword(String password) {
-    this.password = password;
-  }
-
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/ssl/SSL.java b/logback-core/src/main/java/ch/qos/logback/core/net/ssl/SSL.java
deleted file mode 100644
index f76fcc2..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/ssl/SSL.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.ssl;
-
-
-/**
- * Various constants used by the SSL implementation.
- *
- * @author Carl Harris
- */
-public interface SSL {
-
-  /** Default secure transport protocol */
-  String DEFAULT_PROTOCOL = "SSL";
-  
-  /** Default key store type */ 
-  String DEFAULT_KEYSTORE_TYPE = "JKS";
-  
-  /** Default key store passphrase */
-  String DEFAULT_KEYSTORE_PASSWORD = "changeit";
-
-  /** Default secure random generator algorithm */
-  String DEFAULT_SECURE_RANDOM_ALGORITHM = "SHA1PRNG";
-  
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/ssl/SSLComponent.java b/logback-core/src/main/java/ch/qos/logback/core/net/ssl/SSLComponent.java
deleted file mode 100644
index ab84608..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/ssl/SSLComponent.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.ssl;
-
-/**
- * A interface used to identify components that have an SSL configuration.
- *
- * @author Carl Harris
- */
-public interface SSLComponent {
-
-  SSLConfiguration getSsl();
-  
-  void setSsl(SSLConfiguration ssl);
-  
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/ssl/SSLConfigurable.java b/logback-core/src/main/java/ch/qos/logback/core/net/ssl/SSLConfigurable.java
deleted file mode 100644
index f43e8d2..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/ssl/SSLConfigurable.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.ssl;
-
-/**
- * An object that has configurable SSL parameters.
- * <p>
- * This interface allows us o decouple the {@link SSLParametersConfiguration}
- * from {@link SSLSocket} and {@link SSLServerSocket} to facilitate unit
- * testing.
- *
- * @author Carl Harris
- */
-public interface SSLConfigurable {
-
-  /**
-   * Gets the set of protocols that the SSL component enables by default.
-   * 
-   * @return protocols (generally a subset of the set returned by
-   *    {@link #getSupportedProtocols()}); the return value may be 
-   *    an empty array but must never be {@code null}.
-   */
-  String[] getDefaultProtocols();
-
-  /**
-   * Gets the set of protocols that the SSL component supports.
-   * @return protocols supported protocols; the return value may be 
-   *    an empty array but must never be {@code null}.
-   */
-  String[] getSupportedProtocols();
-
-  /**
-   * Sets the enabled protocols on the SSL component.
-   * @param cipherSuites the protocols to enable
-   */
-  void setEnabledProtocols(String[] protocols);
-
-  /**
-   * Gets the set of cipher suites that the SSL component enables by default.
-   * 
-   * @return cipher suites (generally a subset of the set returned by
-   *    {@link #getSupportedCipherSuites()}); the return value may be 
-   *    an empty array but must never be {@code null}
-   */
-  String[] getDefaultCipherSuites();
-  
-  /**
-   * Gets the set of cipher suites that the SSL component supports.
-   * @return supported cipher suites; the return value may be 
-   *    an empty array but must never be {@code null}
-   */
-  String[] getSupportedCipherSuites();
-  
-  /**
-   * Sets the enabled cipher suites on the SSL component.
-   * @param cipherSuites the cipher suites to enable
-   */
-  void setEnabledCipherSuites(String[] cipherSuites);
-  
-  /**
-   * Sets a flag indicating whether the SSL component should require 
-   * client authentication.
-   * @param state the flag state to set
-   */
-  void setNeedClientAuth(boolean state);
-  
-  /**
-   * Sets a flag indicating whether the SSL component should request 
-   * client authentication.
-   * @param state the flag state to set
-   */
-  void setWantClientAuth(boolean state);
-  
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/ssl/SSLConfigurableServerSocket.java b/logback-core/src/main/java/ch/qos/logback/core/net/ssl/SSLConfigurableServerSocket.java
deleted file mode 100644
index 2971b4c..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/ssl/SSLConfigurableServerSocket.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.ssl;
-
-import javax.net.ssl.SSLServerSocket;
-
-/**
- * An {@link SSLConfigurable} wrapper for an {@link SSLServerSocket}.
- *
- * @author Carl Harris
- */
-public class SSLConfigurableServerSocket implements SSLConfigurable {
-
-  private final SSLServerSocket delegate;
-
-  public SSLConfigurableServerSocket(SSLServerSocket delegate) {
-    this.delegate = delegate;
-  }
-
-  public String[] getDefaultProtocols() {
-    return delegate.getEnabledProtocols();
-  }
-
-  public String[] getSupportedProtocols() {
-    return delegate.getSupportedProtocols();
-  }
-
-  public void setEnabledProtocols(String[] protocols) {
-    delegate.setEnabledProtocols(protocols);
-  }
-
-  public String[] getDefaultCipherSuites() {
-    return delegate.getEnabledCipherSuites();
-  }
-
-  public String[] getSupportedCipherSuites() {
-    return delegate.getSupportedCipherSuites();
-  }
-
-  public void setEnabledCipherSuites(String[] suites) {
-    delegate.setEnabledCipherSuites(suites);
-  }
-
-  public void setNeedClientAuth(boolean state) {
-    delegate.setNeedClientAuth(state);
-  }
-
-  public void setWantClientAuth(boolean state) {
-    delegate.setWantClientAuth(state);
-  }
-  
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/ssl/SSLConfigurableSocket.java b/logback-core/src/main/java/ch/qos/logback/core/net/ssl/SSLConfigurableSocket.java
deleted file mode 100644
index e2bcdec..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/ssl/SSLConfigurableSocket.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.ssl;
-
-import javax.net.ssl.SSLSocket;
-
-/**
- * An {@link SSLConfigurable} wrapper for an {@link SSLSocket}.
- *
- * @author Carl Harris
- */
-public class SSLConfigurableSocket implements SSLConfigurable {
-
-  private final SSLSocket delegate;
-
-  public SSLConfigurableSocket(SSLSocket delegate) {
-    this.delegate = delegate;
-  }
-
-  public String[] getDefaultProtocols() {
-    return delegate.getEnabledProtocols();
-  }
-
-  public String[] getSupportedProtocols() {
-    return delegate.getSupportedProtocols();
-  }
-
-  public void setEnabledProtocols(String[] protocols) {
-    delegate.setEnabledProtocols(protocols);
-  }
-
-  public String[] getDefaultCipherSuites() {
-    return delegate.getEnabledCipherSuites();
-  }
-
-  public String[] getSupportedCipherSuites() {
-    return delegate.getSupportedCipherSuites();
-  }
-
-  public void setEnabledCipherSuites(String[] suites) {
-    delegate.setEnabledCipherSuites(suites);
-  }
-
-  public void setNeedClientAuth(boolean state) {
-    delegate.setNeedClientAuth(state);
-  }
-
-  public void setWantClientAuth(boolean state) {
-    delegate.setWantClientAuth(state);
-  }
-  
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/ssl/SSLConfiguration.java b/logback-core/src/main/java/ch/qos/logback/core/net/ssl/SSLConfiguration.java
deleted file mode 100644
index 6cbbc6c..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/ssl/SSLConfiguration.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.ssl;
-
-import javax.net.ssl.SSLContext;
-
-/**
- * A configuration for an {@link SSLContext}.
- * <p> 
- *
- * @author Carl Harris
- */
-public class SSLConfiguration extends SSLContextFactoryBean {
-
-  private SSLParametersConfiguration parameters;
-
-  /**
-   * Gets the SSL parameters configuration.
-   * @return parameters configuration; if no parameters object was
-   *    configured, a default parameters object is returned
-   */
-  public SSLParametersConfiguration getParameters() {
-    if (parameters == null) {
-      parameters = new SSLParametersConfiguration();
-    }
-    return parameters;
-  }
-
-  /**
-   * Sets the SSL parameters configuration.
-   * @param parameters the parameters configuration to set
-   */
-  public void setParameters(SSLParametersConfiguration parameters) {
-    this.parameters = parameters;
-  }
-
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/ssl/SSLContextFactoryBean.java b/logback-core/src/main/java/ch/qos/logback/core/net/ssl/SSLContextFactoryBean.java
deleted file mode 100644
index a57880c..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/ssl/SSLContextFactoryBean.java
+++ /dev/null
@@ -1,341 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.ssl;
-
-import java.security.KeyManagementException;
-import java.security.KeyStore;
-import java.security.KeyStoreException;
-import java.security.NoSuchAlgorithmException;
-import java.security.NoSuchProviderException;
-import java.security.SecureRandom;
-import java.security.UnrecoverableKeyException;
-import java.security.cert.CertificateException;
-
-import javax.net.ssl.KeyManager;
-import javax.net.ssl.KeyManagerFactory;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.TrustManagerFactory;
-
-import ch.qos.logback.core.spi.ContextAware;
-
-/**
- * A factory bean for a JSSE {@link SSLContext}.
- * <p>
- * This object holds the configurable properties for an SSL context and uses
- * them to create an {@link SSLContext} instance.
- *
- * @author Carl Harris
- */
-public class SSLContextFactoryBean {
-    
-  private static final String JSSE_KEY_STORE_PROPERTY = "javax.net.ssl.keyStore";
-  private static final String JSSE_TRUST_STORE_PROPERTY = "javax.net.ssl.trustStore";
-  
-  private KeyStoreFactoryBean keyStore;
-  private KeyStoreFactoryBean trustStore;
-  private SecureRandomFactoryBean secureRandom;
-  private KeyManagerFactoryFactoryBean keyManagerFactory;
-  private TrustManagerFactoryFactoryBean trustManagerFactory;
-  private String protocol;
-  private String provider;
-
-  /**
-   * Creates a new {@link SSLContext} using the receiver's configuration.
-   * @param context context for status messages
-   * @return {@link SSLContext} object
-   * @throws NoSuchProviderException if a provider specified for one of the
-   *    JCA or JSSE components utilized in creating the context is not
-   *    known to the platform
-   * @throws NoSuchAlgorithmException if a JCA or JSSE algorithm, protocol, 
-   *    or type name specified for one of the context's components is not
-   *    known to a given provider (or platform default provider for the
-   *    component)
-   * @throws KeyManagementException if an error occurs in creating a 
-   *    {@link KeyManager} for the context
-   * @throws UnrecoverableKeyException if a private key needed by a 
-   *    {@link KeyManager} cannot be obtained from a key store
-   * @throws KeyStoreException if an error occurs in reading the
-   *    contents of a key store
-   * @throws CertificateException if an error occurs in reading the
-   *    contents of a certificate
-   */
-  public SSLContext createContext(ContextAware context) throws NoSuchProviderException, 
-      NoSuchAlgorithmException, KeyManagementException, 
-      UnrecoverableKeyException, KeyStoreException, CertificateException {
-    
-    SSLContext sslContext = getProvider() != null ?
-        SSLContext.getInstance(getProtocol(), getProvider())
-        : SSLContext.getInstance(getProtocol());
-    
-    context.addInfo("SSL protocol '" + sslContext.getProtocol() 
-        + "' provider '" + sslContext.getProvider() + "'");
-    
-    KeyManager[] keyManagers = createKeyManagers(context);
-    TrustManager[] trustManagers = createTrustManagers(context);
-    SecureRandom secureRandom = createSecureRandom(context);
-    sslContext.init(keyManagers, trustManagers, secureRandom);
-    return sslContext;
-  }
-  
-  /**
-   * Creates key managers using the receiver's key store configuration.
-   * @param context context for status messages
-   * @return an array of key managers or {@code null} if no key store
-   *    configuration was provided
-   * @throws NoSuchProviderException if a provider specified for one
-   *    of the key manager components is not known to the platform
-   * @throws NoSuchAlgorithmException if an algorithm specified for
-   *    one of the key manager components is not known to the relevant
-   *    provider
-   * @throws KeyStoreException if an error occurs in reading a key store
-   */
-  private KeyManager[] createKeyManagers(ContextAware context) 
-      throws NoSuchProviderException, NoSuchAlgorithmException, 
-      UnrecoverableKeyException, KeyStoreException {
-    
-    if (getKeyStore() == null) return null;
-    
-    KeyStore keyStore = getKeyStore().createKeyStore();
-    context.addInfo(
-        "key store of type '" + keyStore.getType() 
-        + "' provider '" + keyStore.getProvider()
-        + "': " + getKeyStore().getLocation());          
-
-    KeyManagerFactory kmf = getKeyManagerFactory().createKeyManagerFactory();
-    context.addInfo("key manager algorithm '" + kmf.getAlgorithm() 
-        + "' provider '" + kmf.getProvider() + "'");
-    
-    char[] passphrase = getKeyStore().getPassword().toCharArray();
-    kmf.init(keyStore, passphrase);
-    return kmf.getKeyManagers();
-  }
-  
-  /**
-   * Creates trust managers using the receiver's trust store configuration.
-   * @param context context for status messages
-   * @return an array of trust managers or {@code null} if no trust store
-   *    configuration was provided
-   * @throws NoSuchProviderException if a provider specified for one
-   *    of the trust manager components is not known to the platform
-   * @throws NoSuchAlgorithmException if an algorithm specified for
-   *    one of the trust manager components is not known to the relevant
-   *    provider
-   * @throws KeyStoreException if an error occurs in reading a key
-   *    store containing trust anchors 
-   */
-  private TrustManager[] createTrustManagers(ContextAware context) 
-      throws NoSuchProviderException, NoSuchAlgorithmException, 
-      KeyStoreException {
-    
-    if (getTrustStore() == null) return null;
-    
-    KeyStore trustStore = getTrustStore().createKeyStore();
-    context.addInfo(
-        "trust store of type '" + trustStore.getType() 
-        + "' provider '" + trustStore.getProvider()
-        + "': " + getTrustStore().getLocation());          
-    
-    TrustManagerFactory tmf = getTrustManagerFactory()
-        .createTrustManagerFactory();
-    context.addInfo("trust manager algorithm '" + tmf.getAlgorithm() 
-        + "' provider '" + tmf.getProvider() + "'");
-    
-    tmf.init(trustStore);
-    return tmf.getTrustManagers();
-  }
-
-  private SecureRandom createSecureRandom(ContextAware context) 
-      throws NoSuchProviderException, NoSuchAlgorithmException {
-    
-    SecureRandom secureRandom = getSecureRandom().createSecureRandom();
-    context.addInfo("secure random algorithm '" + secureRandom.getAlgorithm()
-        + "' provider '" + secureRandom.getProvider() + "'");
-    
-    return secureRandom;
-  }
-
-  /**
-   * Gets the key store configuration.
-   * @return key store factory bean or {@code null} if no key store 
-   *    configuration was provided
-   */
-  public KeyStoreFactoryBean getKeyStore() {
-    if (keyStore == null) { 
-      keyStore = keyStoreFromSystemProperties(JSSE_KEY_STORE_PROPERTY);
-    }
-    return keyStore;
-  }
-
-  /**
-   * Sets the key store configuration.
-   * @param keyStore the key store factory bean to set
-   */
-  public void setKeyStore(KeyStoreFactoryBean keyStore) {
-    this.keyStore = keyStore;
-  }
-
-  /**
-   * Gets the trust store configuration.
-   * @return trust store factory bean or {@code null} if no trust store 
-   *    configuration was provided
-   */
-  public KeyStoreFactoryBean getTrustStore() {
-    if (trustStore == null) {
-      trustStore = keyStoreFromSystemProperties(JSSE_TRUST_STORE_PROPERTY);
-    }
-    return trustStore;
-  }
-
-  /**
-   * Sets the trust store configuration.
-   * @param trustStore the trust store factory bean to set
-   */
-  public void setTrustStore(KeyStoreFactoryBean trustStore) {
-    this.trustStore = trustStore;
-  }
-
-  /**
-   * Constructs a key store factory bean using JSSE system properties.
-   * @param property base property name (e.g. {@code javax.net.ssl.keyStore})
-   * @return key store or {@code null} if no value is defined for the
-   *    base system property name
-   */
-  private KeyStoreFactoryBean keyStoreFromSystemProperties(String property) {
-    if (System.getProperty(property) == null) return null;
-    KeyStoreFactoryBean keyStore = new KeyStoreFactoryBean();
-    keyStore.setLocation(locationFromSystemProperty(property));
-    keyStore.setProvider(System.getProperty(property + "Provider"));
-    keyStore.setPassword(System.getProperty(property + "Password"));
-    keyStore.setType(System.getProperty(property + "Type"));
-    return keyStore;
-  }
-
-  /**
-   * Constructs a resource location from a JSSE system property.
-   * @param name property name (e.g. {@code javax.net.ssl.keyStore})
-   * @return URL for the location specified in the property or {@code null}
-   *    if no value is defined for the property
-   */
-  private String locationFromSystemProperty(String name) {
-    String location = System.getProperty(name);
-    if (location != null && !location.startsWith("file:")) {
-      location = "file:" + location;
-    }
-    return location;
-  }
-
-  /**
-   * Gets the secure random generator configuration.
-   * @return secure random factory bean; if no secure random generator 
-   *    configuration has been set, a default factory bean is returned
-   */
-  public SecureRandomFactoryBean getSecureRandom() {
-    if (secureRandom == null) {
-      return new SecureRandomFactoryBean();
-    }
-    return secureRandom;
-  }
-
-  /**
-   * Sets the secure random generator configuration.
-   * @param secureRandom the secure random factory bean to set
-   */
-  public void setSecureRandom(SecureRandomFactoryBean secureRandom) {
-    this.secureRandom = secureRandom;
-  }
-
-  /**
-   * Gets the key manager factory configuration.
-   * @return factory bean; if no key manager factory 
-   *    configuration has been set, a default factory bean is returned
-   */
-  public KeyManagerFactoryFactoryBean getKeyManagerFactory() {
-    if (keyManagerFactory == null) {
-      return new KeyManagerFactoryFactoryBean();
-    }
-    return keyManagerFactory;
-  }
-
-  /**
-   * Sets the key manager factory configuration.
-   * @param keyManagerFactory the key manager factory factory bean to set
-   */
-  public void setKeyManagerFactory(
-      KeyManagerFactoryFactoryBean keyManagerFactory) {
-    this.keyManagerFactory = keyManagerFactory;
-  }
-
-  /**
-   * Gets the trust manager factory configuration.
-   * @return factory bean; if no trust manager factory 
-   *    configuration has been set, a default factory bean is returned
-   */
-  public TrustManagerFactoryFactoryBean getTrustManagerFactory() {
-    if (trustManagerFactory == null) {
-      return new TrustManagerFactoryFactoryBean();
-    }
-    return trustManagerFactory;
-  }
-
-  /**
-   * Sets the trust manager factory configuration.
-   * @param trustManagerFactory the factory bean to set
-   */
-  public void setTrustManagerFactory(
-      TrustManagerFactoryFactoryBean trustManagerFactory) {
-    this.trustManagerFactory = trustManagerFactory;
-  }
-
-  /**
-   * Gets the secure transport protocol name.
-   * @return protocol name (e.g. {@code SSL}, {@code TLS}); the
-   *    {@link SSL#DEFAULT_PROTOCOL} is returned if no protocol has been
-   *    configured
-   */
-  public String getProtocol() {
-    if (protocol == null) {
-      return SSL.DEFAULT_PROTOCOL;
-    }
-    return protocol;
-  }
-
-  /**
-   * Sets the secure transport protocol name.
-   * @param protocol a protocol name, which must be recognized by the provider
-   *    specified by {@link #setProvider(String)} or by the platform's
-   *    default provider if no platform was specified.
-   */
-  public void setProtocol(String protocol) {
-    this.protocol = protocol;
-  }
-
-  /**
-   * Gets the JSSE provider name for the SSL context.
-   * @return JSSE provider name
-   */
-  public String getProvider() {
-    return provider;
-  }
-
-  /**
-   * Sets the JSSE provider name for the SSL context.
-   * @param provider name of the JSSE provider to use in creating the
-   *    SSL context
-   */
-  public void setProvider(String provider) {
-    this.provider = provider;
-  }
-
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/ssl/SSLNestedComponentRegistryRules.java b/logback-core/src/main/java/ch/qos/logback/core/net/ssl/SSLNestedComponentRegistryRules.java
deleted file mode 100644
index 6f02509..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/ssl/SSLNestedComponentRegistryRules.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.ssl;
-
-import ch.qos.logback.core.joran.spi.DefaultNestedComponentRegistry;
-
-/**
- * Nested component registry rules for {@link SSLConfiguration} and its
- * components.
- *
- * @author Carl Harris
- */
-public class SSLNestedComponentRegistryRules {
-
-  static public void addDefaultNestedComponentRegistryRules(
-      DefaultNestedComponentRegistry registry) {
-    registry.add(SSLComponent.class, "ssl", SSLConfiguration.class);
-    registry.add(SSLConfiguration.class, "parameters", 
-        SSLParametersConfiguration.class);
-    registry.add(SSLConfiguration.class, "keyStore", 
-        KeyStoreFactoryBean.class);
-    registry.add(SSLConfiguration.class, "trustStore", 
-        KeyStoreFactoryBean.class);
-    registry.add(SSLConfiguration.class, "keyManagerFactory", 
-        KeyManagerFactoryFactoryBean.class);
-    registry.add(SSLConfiguration.class, "trustManagerFactory", 
-        TrustManagerFactoryFactoryBean.class);
-    registry.add(SSLConfiguration.class, "secureRandom", 
-        SecureRandomFactoryBean.class);
-  }
-
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/ssl/SSLParametersConfiguration.java b/logback-core/src/main/java/ch/qos/logback/core/net/ssl/SSLParametersConfiguration.java
deleted file mode 100644
index efdd73a..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/ssl/SSLParametersConfiguration.java
+++ /dev/null
@@ -1,256 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.ssl;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import javax.net.ssl.SSLEngine;
-
-import org.codehaus.janino.Java;
-
-import ch.qos.logback.core.spi.ContextAwareBase;
-import ch.qos.logback.core.util.OptionHelper;
-import ch.qos.logback.core.util.StringCollectionUtil;
-
-
-/**
- * A configuration of SSL parameters for an {@link SSLEngine}.
- *
- * @author Carl Harris
- */
-public class SSLParametersConfiguration extends ContextAwareBase {
-
-  private String includedProtocols;
-  private String excludedProtocols;
-  private String includedCipherSuites;
-  private String excludedCipherSuites;
-  private Boolean needClientAuth;
-  private Boolean wantClientAuth;
-  private String[] enabledProtocols;
-  private String[] enabledCipherSuites;
-  
-  /**
-   * Configures SSL parameters on an {@link SSLConfigurable}.
-   * @param socket the subject configurable
-   */
-  public void configure(SSLConfigurable socket) {
-    socket.setEnabledProtocols(enabledProtocols(
-        socket.getSupportedProtocols(), socket.getDefaultProtocols()));
-    socket.setEnabledCipherSuites(enabledCipherSuites(
-        socket.getSupportedCipherSuites(), socket.getDefaultCipherSuites()));
-    if (isNeedClientAuth() != null) {
-      socket.setNeedClientAuth(isNeedClientAuth());
-    }
-    if (isWantClientAuth() != null) {
-      socket.setWantClientAuth(isWantClientAuth());
-    }
-  }
-  
-  /**
-   * Gets the set of enabled protocols based on the configuration.
-   * @param supportedProtocols protocols supported by the SSL engine 
-   * @param defaultProtocols default protocols enabled by the SSL engine
-   * @return enabled protocols
-   */
-  private String[] enabledProtocols(String[] supportedProtocols,
-      String[] defaultProtocols) {
-    if (enabledProtocols == null) {
-      // we're assuming that the same engine is used for all configurables
-      // so once we determine the enabled set, we won't do it again
-      if (OptionHelper.isEmpty(getIncludedProtocols())
-          && OptionHelper.isEmpty(getExcludedProtocols())) {
-        enabledProtocols = Arrays.copyOf(defaultProtocols, 
-            defaultProtocols.length);
-      }
-      else {
-        enabledProtocols = includedStrings(supportedProtocols, 
-            getIncludedProtocols(), getExcludedProtocols());
-      }
-      for (String protocol : enabledProtocols) {
-        addInfo("enabled protocol: " + protocol);
-       }
-    }
-    return enabledProtocols;
-  }
-  
-  /**
-   * Gets the set of enabled cipher suites based on the configuration.
-   * @param supportedCipherSuites cipher suites supported by the SSL engine 
-   * @param defaultCipherSuites default cipher suites enabled by the SSL engine
-   * @return enabled cipher suites
-   */
-  private String[] enabledCipherSuites(String[] supportedCipherSuites,
-      String[] defaultCipherSuites) {
-    if (enabledCipherSuites == null) {
-      // we're assuming that the same engine is used for all configurables
-      // so once we determine the enabled set, we won't do it again
-      if (OptionHelper.isEmpty(getIncludedCipherSuites())
-          && OptionHelper.isEmpty(getExcludedCipherSuites())) {
-        enabledCipherSuites = Arrays.copyOf(defaultCipherSuites, 
-            defaultCipherSuites.length);
-      }
-      else {
-        enabledCipherSuites = includedStrings(supportedCipherSuites, 
-            getIncludedCipherSuites(), getExcludedCipherSuites());
-      }
-      for (String cipherSuite : enabledCipherSuites) {
-        addInfo("enabled cipher suite: " + cipherSuite);
-      }
-    }
-    return enabledCipherSuites;
-  }
-  
-  /**
-   * Applies include and exclude patterns to an array of default string values
-   * to produce an array of strings included by the patterns.
-   * @param defaults default list of string values
-   * @param included comma-separated patterns that identity values to include
-   * @param excluded comma-separated patterns that identity string to exclude
-   * @return an array of strings containing those strings from {@code defaults}
-   *    that match at least one pattern in {@code included} that are not
-   *    matched by any pattern in {@code excluded}
-   */
-  private String[] includedStrings(String[] defaults, String included,
-      String excluded) {
-    List<String> values = new ArrayList<String>(defaults.length);
-    values.addAll(Arrays.asList(defaults));
-    if (included != null) {
-      StringCollectionUtil.retainMatching(values, stringToArray(included));
-    }
-    if (excluded != null) {
-      StringCollectionUtil.removeMatching(values, stringToArray(excluded));
-    }
-    return values.toArray(new String[values.size()]);
-  }
-  
-  /**
-   * Splits a string containing comma-separated values into an array.
-   * @param s the subject string
-   * @return array of values contained in {@code s}
-   */
-  private String[] stringToArray(String s) {
-    return s.split("\\s*,\\s*");
-  }
-  
-  /**
-   * Gets the JSSE secure transport protocols to include.
-   * @return a string containing comma-separated JSSE secure transport 
-   *    protocol names (e.g. {@code TLSv1})
-   */
-  public String getIncludedProtocols() {
-    return includedProtocols;
-  }
-
-  /**
-   * Sets the JSSE secure transport protocols to include.
-   * @param protocols a string containing comma-separated JSSE secure 
-   *    transport protocol names
-   * @see Java Cryptography Architecture Standard Algorithm Name Documentation
-   */
-  public void setIncludedProtocols(String protocols) {
-    this.includedProtocols = protocols;
-  }
-
-  /**
-   * Gets the JSSE secure transport protocols to exclude.
-   * @return a string containing comma-separated JSSE secure transport 
-   *    protocol names (e.g. {@code TLSv1})
-   */
-  public String getExcludedProtocols() {
-    return excludedProtocols;
-  }
-
-  /**
-   * Sets the JSSE secure transport protocols to exclude.
-   * @param protocols a string containing comma-separated JSSE secure 
-   *    transport protocol names
-   * @see Java Cryptography Architecture Standard Algorithm Name Documentation
-   */
-  public void setExcludedProtocols(String protocols) {
-    this.excludedProtocols = protocols;
-  }
-
-  /**
-   * Gets the JSSE cipher suite names to include.
-   * @return a string containing comma-separated JSSE cipher suite names
-   *    (e.g. {@code TLS_DHE_RSA_WITH_AES_256_CBC_SHA})
-   */
-  public String getIncludedCipherSuites() {
-    return includedCipherSuites;
-  }
-
-  /**
-   * Sets the JSSE cipher suite names to include.
-   * @param cipherSuites a string containing comma-separated JSSE cipher
-   *    suite names
-   * @see Java Cryptography Architecture Standard Algorithm Name Documentation
-   */
-  public void setIncludedCipherSuites(String cipherSuites) {
-    this.includedCipherSuites = cipherSuites;
-  }
-
-  /**
-   * Gets the JSSE cipher suite names to exclude.
-   * @return a string containing comma-separated JSSE cipher suite names
-   *    (e.g. {@code TLS_DHE_RSA_WITH_AES_256_CBC_SHA})
-   */
-  public String getExcludedCipherSuites() {
-    return excludedCipherSuites;
-  }
-
-  /**
-   * Sets the JSSE cipher suite names to exclude.
-   * @param cipherSuites a string containing comma-separated JSSE cipher
-   *    suite names
-   * @see Java Cryptography Architecture Standard Algorithm Name Documentation
-   */
-  public void setExcludedCipherSuites(String cipherSuites) {
-    this.excludedCipherSuites = cipherSuites;
-  }
-
-  /**
-   * Gets a flag indicating whether client authentication is required.
-   * @return flag state
-   */
-  public Boolean isNeedClientAuth() {
-    return needClientAuth;
-  }
-
-  /**
-   * Sets a flag indicating whether client authentication is required.
-   * @param needClientAuth the flag state to set
-   */
-  public void setNeedClientAuth(Boolean needClientAuth) {
-    this.needClientAuth = needClientAuth;
-  }
-
-  /**
-   * Gets a flag indicating whether client authentication is desired.
-   * @return flag state
-   */
-  public Boolean isWantClientAuth() {
-    return wantClientAuth;
-  }
-
-  /**
-   * Sets a flag indicating whether client authentication is desired.
-   * @param wantClientAuth the flag state to set
-   */
-  public void setWantClientAuth(Boolean wantClientAuth) {
-    this.wantClientAuth = wantClientAuth;
-  }
-
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/ssl/SecureRandomFactoryBean.java b/logback-core/src/main/java/ch/qos/logback/core/net/ssl/SecureRandomFactoryBean.java
deleted file mode 100644
index 9f56532..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/ssl/SecureRandomFactoryBean.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.ssl;
-
-import java.security.NoSuchAlgorithmException;
-import java.security.NoSuchProviderException;
-import java.security.SecureRandom;
-
-/**
- * A factory bean for a JCA {@link SecureRandom} generator.
- * <p>
- * This object holds the configurable properties of a secure random generator
- * and uses them to create and load a {@link SecureRandom} instance.
- *
- * @author Carl Harris
- */
-public class SecureRandomFactoryBean {
-
-  private String algorithm;
-  private String provider;
-
-  /**
-   * Creates a new {@link SecureRandom} generator using the receiver's 
-   * configuration.
-   * @return secure random generator instance
-   * @throws NoSuchProviderException if the provider name specified by
-   *    {@link #setProvider(String)} is not known to the platform
-   * @throws NoSuchAlgorithmException if the algorithm name specified by
-   *    {@link #setAlgorithm(String)} is not recognized by the specified
-   *    provider (or the platform's default provider if the provider isn't 
-   *    specified)
-   */
-  public SecureRandom createSecureRandom() throws NoSuchProviderException, 
-      NoSuchAlgorithmException {
-    try {
-      return getProvider() != null ?
-          SecureRandom.getInstance(getAlgorithm(), getProvider())
-          : SecureRandom.getInstance(getAlgorithm());
-    }
-    catch (NoSuchProviderException ex) {
-      throw new NoSuchProviderException("no such secure random provider: "
-          + getProvider());      
-    }
-    catch (NoSuchAlgorithmException ex) {
-      throw new NoSuchAlgorithmException("no such secure random algorithm: "
-          + getAlgorithm());      
-    }
-  }
-  
-  /**
-   * Gets the secure random generator algorithm name. 
-   * @return an algorithm name (e.g. {@code SHA1PRNG}); the 
-   *    {@link SSL#DEFAULT_SECURE_RANDOM_ALGORITHM} is returned if no algorithm has been
-   *    specified
-   */
-  public String getAlgorithm() {
-    if (algorithm == null) {
-      return SSL.DEFAULT_SECURE_RANDOM_ALGORITHM;
-    }
-    return algorithm;
-  }
-
-  /**
-   * Sets the secure random generator algorithm name.
-   * @param algorithm an algorithm name, which must be recognized by the
-   *    provider specified via {@link #setProvider(String)} or by the
-   *    platform's default provider if no provider is specified.
-   */
-  public void setAlgorithm(String algorithm) {
-    this.algorithm = algorithm;
-  }
-
-  /**
-   * Gets the JCA provider name for the secure random generator.
-   * @return provider name
-   */
-  public String getProvider() {
-    return provider;
-  }
-
-  /**
-   * Sets the JCA provider name for the secure random generator.
-   * @param provider name of the JCA provider to utilize in creating the
-   *    secure random generator
-   */
-  public void setProvider(String provider) {
-    this.provider = provider;
-  }
-
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/ssl/TrustManagerFactoryFactoryBean.java b/logback-core/src/main/java/ch/qos/logback/core/net/ssl/TrustManagerFactoryFactoryBean.java
deleted file mode 100644
index 6043a71..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/ssl/TrustManagerFactoryFactoryBean.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.ssl;
-
-import java.security.NoSuchAlgorithmException;
-import java.security.NoSuchProviderException;
-
-import javax.net.ssl.TrustManagerFactory;
-
-/**
- * A factory bean for a JSSE {@link TrustManagerFactory}.
- * <p>
- * This object holds the configurable properties of a trust manager factory
- * and uses them to create and load a {@link TrustManagerFactory} instance.
- *
- * @author Carl Harris
- */
-public class TrustManagerFactoryFactoryBean {
-
-  private String algorithm;
-  private String provider;
-
-  /**
-   * Creates a {@link TrustManagerFactory} using the receiver's configuration.
-   * @return factory object
-   * @throws NoSuchProviderException if the provider specified by 
-   *    {@link #setProvider(String)} is not known to the platform
-   * @throws NoSuchAlgorithmException if the algorithm specified by
-   *    {@link #setAlgorithm(String)} is not known to the specified provider
-   *    (or to the default platform provider if no provider is specified)
-   */
-  public TrustManagerFactory createTrustManagerFactory() 
-      throws NoSuchProviderException, NoSuchAlgorithmException {
-    
-    return getProvider() != null ?
-        TrustManagerFactory.getInstance(getAlgorithm(), getProvider())
-        : TrustManagerFactory.getInstance(getAlgorithm());
-  }
-  
-  /**
-   * Gets the algorithm name for the trust manager factory.
-   * @return algorithm name (e.g. {@code PKIX}); the default algorithm
-   *    (obtained from {@link TrustManagerFactory#getDefaultAlgorithm()})
-   *    is returned if no algorithm has been configured
-   */
-  public String getAlgorithm() {
-    if (algorithm == null) {
-      return TrustManagerFactory.getDefaultAlgorithm();
-    }
-    return algorithm;
-  }
-
-  /**
-   * Sets the algorithm name for the trust manager factory.
-   * @param algorithm an algorithm name, which must be recognized by the
-   *    provider specified by {@link #setProvider(String)} or by the 
-   *    platform's default provider if no provider is specified. 
-   */
-  public void setAlgorithm(String algorithm) {
-    this.algorithm = algorithm;
-  }
-
-  /**
-   * Gets the JSSE provider name for the trust manager factory.
-   * @return provider name
-   */
-  public String getProvider() {
-    return provider;
-  }
-
-  /**
-   * Sets the JSSE provider name for the trust manager factory.
-   * @param provider name of the JSSE provider to utilize in creating the
-   *    trust manager factory
-   */
-  public void setProvider(String provider) {
-    this.provider = provider;
-  }
-
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/ssl/package.html b/logback-core/src/main/java/ch/qos/logback/core/net/ssl/package.html
deleted file mode 100644
index c77183f..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/net/ssl/package.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html> 
-  <head>
-    <title></title>
-  </head>
-  <body>
-    <p>Contains classes that create and configure a JSSE SSLContext needed
-       for secure transport of logging events by SSLSocketAppender.</p>
-    <p>The central class in this package is SSLConfiguration, which 
-       provides a factory method for the SSLContext and SSLParameters 
-       objects.  Other classes are factory beans, which are designed to
-       hold the various configurable properties of the components used in
-       creating an SSLContext, and to create the relevant component when
-       needed during the assembly of the context.</p>
-  </body> 
-</html>
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/CompositeConverter.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/CompositeConverter.java
index 2e8158f..b907756 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/CompositeConverter.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/pattern/CompositeConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -24,14 +24,10 @@ abstract public class CompositeConverter<E> extends DynamicConverter<E> {
       c.write(buf, event);
     }
     String intermediary = buf.toString();
-    return transform(event, intermediary);
+    return transform(intermediary);
   }
 
-  abstract protected String transform(E event, String in);
-
-  public Converter<E> getChildConverter() {
-    return childConverter;
-  }
+  abstract String transform(String in);
 
   public void setChildConverter(Converter<E> child) {
     childConverter = child;
@@ -40,10 +36,10 @@ abstract public class CompositeConverter<E> extends DynamicConverter<E> {
   public String toString() {
     StringBuilder buf = new StringBuilder();
     buf.append("CompositeConverter<");
-
-    if (formattingInfo != null)
-      buf.append(formattingInfo);
-
+    
+    if(formattingInfo != null)
+    buf.append(formattingInfo);
+    
     if (childConverter != null) {
       buf.append(", children: ").append(childConverter);
     }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/Converter.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/Converter.java
index f8e4e9e..4db85c6 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/Converter.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/pattern/Converter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/ConverterUtil.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/ConverterUtil.java
index 1c4682d..9c93eea 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/ConverterUtil.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/pattern/ConverterUtil.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,9 +13,6 @@
  */
 package ch.qos.logback.core.pattern;
 
-import ch.qos.logback.core.Context;
-import ch.qos.logback.core.spi.ContextAware;
-
 public class ConverterUtil {
 
   /**
@@ -23,17 +20,17 @@ public class ConverterUtil {
    *
    * @param head
    */
-  public static <E> void startConverters(Converter<E> head) {
-    Converter<E> c = head;
+  public static void startConverters(Converter head) {
+    Converter c = head;
     while (c != null) {
       // CompositeConverter is a subclass of  DynamicConverter
       if (c instanceof CompositeConverter) {
-        CompositeConverter<E> cc = (CompositeConverter<E>) c;
-        Converter<E> childConverter = cc.childConverter;
+        CompositeConverter cc = (CompositeConverter) c;
+        Converter childConverter = cc.childConverter;
         startConverters(childConverter);
         cc.start();
       } else if (c instanceof DynamicConverter) {
-        DynamicConverter<E> dc = (DynamicConverter<E>) c;
+        DynamicConverter dc = (DynamicConverter) c;
         dc.start();
       }
       c = c.getNext();
@@ -53,14 +50,4 @@ public class ConverterUtil {
     }
     return p;
   }
-
-  public static <E> void setContextForConverters(Context context, Converter<E> head) {
-    Converter<E> c = head;
-    while (c != null) {
-      if (c instanceof ContextAware) {
-        ((ContextAware) c).setContext(context);
-      }
-      c = c.getNext();
-    }
-  }
 }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/DynamicConverter.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/DynamicConverter.java
index 2967a60..022178c 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/DynamicConverter.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/pattern/DynamicConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -32,7 +32,7 @@ abstract public class DynamicConverter<E> extends FormattingConverter<E>
   /**
    * Is this component active?
    */
-  protected boolean started = false;
+  boolean started = false;
 
   /**
    * Components that depend on options passed during configuration can override
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/FormatInfo.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/FormatInfo.java
index d59817d..bf51571 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/FormatInfo.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/pattern/FormatInfo.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -139,15 +139,6 @@ public class FormatInfo {
         && (leftTruncate == r.leftTruncate);
   }
 
-  @Override
-  public int hashCode() {
-    int result = min;
-    result = 31 * result + max;
-    result = 31 * result + (leftPad ? 1 : 0);
-    result = 31 * result + (leftTruncate ? 1 : 0);
-    return result;
-  }
-
   public String toString() {
     return "FormatInfo(" + min + ", " + max + ", " + leftPad + ", "
         + leftTruncate + ")";
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/FormattingConverter.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/FormattingConverter.java
index 4e55204..5ef1817 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/FormattingConverter.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/pattern/FormattingConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/IdentityCompositeConverter.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/IdentityCompositeConverter.java
index d5f109d..e3a6f89 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/IdentityCompositeConverter.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/pattern/IdentityCompositeConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -16,7 +16,7 @@ package ch.qos.logback.core.pattern;
 public class IdentityCompositeConverter<E> extends CompositeConverter<E> {
 
   @Override
-  protected String transform(E event, String in) {
+  String transform(String in) {
     return in;
   }
 }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/LiteralConverter.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/LiteralConverter.java
index 153cd06..1678885 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/LiteralConverter.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/pattern/LiteralConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/PatternLayoutBase.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/PatternLayoutBase.java
index 89b9475..2a7aa6d 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/PatternLayoutBase.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/pattern/PatternLayoutBase.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,19 +13,19 @@
  */
 package ch.qos.logback.core.pattern;
 
+import java.util.HashMap;
+import java.util.Map;
+
 import ch.qos.logback.core.Context;
 import ch.qos.logback.core.CoreConstants;
 import ch.qos.logback.core.LayoutBase;
 import ch.qos.logback.core.pattern.parser.Node;
 import ch.qos.logback.core.pattern.parser.Parser;
-import ch.qos.logback.core.spi.ScanException;
+import ch.qos.logback.core.pattern.parser.ScanException;
+import ch.qos.logback.core.spi.ContextAware;
 import ch.qos.logback.core.status.ErrorStatus;
 import ch.qos.logback.core.status.StatusManager;
 
-import java.util.HashMap;
-import java.util.Map;
-
-
 abstract public class PatternLayoutBase<E> extends LayoutBase<E> {
 
   Converter<E> head;
@@ -87,7 +87,7 @@ abstract public class PatternLayoutBase<E> extends LayoutBase<E> {
       if (postCompileProcessor != null) {
         postCompileProcessor.process(head);
       }
-      ConverterUtil.setContextForConverters(getContext(), head);
+      setContextForConverters(head);
       ConverterUtil.startConverters(this.head);
       super.start();
     } catch (ScanException sce) {
@@ -102,14 +102,15 @@ abstract public class PatternLayoutBase<E> extends LayoutBase<E> {
     this.postCompileProcessor = postCompileProcessor;
   }
 
-  /**
-   *
-   * @param head
-   * @deprecated  Use {@link ConverterUtil#setContextForConverters} instead. This method will
-   *  be removed in future releases.
-   */
   protected void setContextForConverters(Converter<E> head) {
-    ConverterUtil.setContextForConverters(getContext(), head);
+    Context context = getContext();
+    Converter c = head;
+    while (c != null) {
+      if (c instanceof ContextAware) {
+        ((ContextAware) c).setContext(context);
+      }
+      c = c.getNext();
+    }
   }
 
   protected String writeLoopOnConverters(E event) {
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/PatternLayoutEncoderBase.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/PatternLayoutEncoderBase.java
index c510c7f..73b67ee 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/PatternLayoutEncoderBase.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/pattern/PatternLayoutEncoderBase.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/PostCompileProcessor.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/PostCompileProcessor.java
index 4ff169a..4bcea48 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/PostCompileProcessor.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/pattern/PostCompileProcessor.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/ReplacingCompositeConverter.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/ReplacingCompositeConverter.java
index cda692e..bfb5444 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/ReplacingCompositeConverter.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/pattern/ReplacingCompositeConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -42,7 +42,7 @@ public class ReplacingCompositeConverter<E> extends CompositeConverter<E> {
   }
 
   @Override
-  protected String transform(E event, String in) {
+  String transform(String in) {
     if (!started)
       return in;
     return pattern.matcher(in).replaceAll(replacement);
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/SpacePadder.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/SpacePadder.java
index 7fec9f5..a765477 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/SpacePadder.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/pattern/SpacePadder.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/ANSIConstants.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/color/ANSIConstants.java
deleted file mode 100644
index 0488fdf..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/ANSIConstants.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.pattern.color;
-
-public class ANSIConstants {
-
-  public final static String ESC_START = "\033[";
-  public final static String ESC_END = "m";
-  public final static String BOLD = "1;";
-
-  public final static String BLACK_FG = "30";
-  public final static String RED_FG = "31";
-  public final static String GREEN_FG = "32";
-  public final static String YELLOW_FG = "33";
-  public final static String BLUE_FG  = "34";
-  public final static String MAGENTA_FG  = "35";
-  public final static String CYAN_FG = "36";
-  public final static String WHITE_FG = "37";
-  public final static String DEFAULT_FG  = "39";
-
-
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/BlackCompositeConverter.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/color/BlackCompositeConverter.java
deleted file mode 100644
index 37b2164..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/BlackCompositeConverter.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.pattern.color;
-
-/**
- * Encloses a given set of converter output in black using the appropriate ANSI escape codes.
- * @param <E>
- * @author  Ceki Gülcü
- * @since 1.0.5
- */
-public class BlackCompositeConverter<E> extends ForegroundCompositeConverterBase<E> {
-
-  @Override
-  protected String getForegroundColorCode(E event) {
-    return ANSIConstants.BLACK_FG;
-  }
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/BlueCompositeConverter.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/color/BlueCompositeConverter.java
deleted file mode 100644
index f3fa002..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/BlueCompositeConverter.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.pattern.color;
-
-/**
- * Encloses a given set of converter output in blue using the appropriate ANSI escape codes.
- * @param <E>
- * @author  Ceki Gülcü
- * @since 1.0.5
- */
-public class BlueCompositeConverter<E> extends ForegroundCompositeConverterBase<E> {
-
-  @Override
-  protected String getForegroundColorCode(E event) {
-    return ANSIConstants.BLUE_FG;
-  }
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/BoldBlueCompositeConverter.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/color/BoldBlueCompositeConverter.java
deleted file mode 100644
index 4089531..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/BoldBlueCompositeConverter.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.pattern.color;
-
-import static ch.qos.logback.core.pattern.color.ANSIConstants.BLUE_FG;
-import static ch.qos.logback.core.pattern.color.ANSIConstants.BOLD;
-
-/**
- * Encloses a given set of converter output in bold blue using the appropriate ANSI escape codes.
- *
- * @param <E>
- * @author Ceki Gülcü
- * @since 1.0.5
- */
-public class BoldBlueCompositeConverter<E> extends ForegroundCompositeConverterBase<E> {
-
-  @Override
-  protected String getForegroundColorCode(E event) {
-    return BOLD + BLUE_FG;
-  }
-}
\ No newline at end of file
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/BoldCyanCompositeConverter.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/color/BoldCyanCompositeConverter.java
deleted file mode 100644
index 93ece1b..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/BoldCyanCompositeConverter.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.pattern.color;
-
-import static ch.qos.logback.core.pattern.color.ANSIConstants.BOLD;
-import static ch.qos.logback.core.pattern.color.ANSIConstants.CYAN_FG;
-
-/**
- * Encloses a given set of converter output in bold cyan using the appropriate ANSI escape codes.
- *
- * @param <E>
- * @author Ceki Gülcü
- * @since 1.0.5
- */
-public class BoldCyanCompositeConverter<E> extends ForegroundCompositeConverterBase<E> {
-
-  @Override
-  protected String getForegroundColorCode(E event) {
-    return BOLD + CYAN_FG;
-  }
-}
\ No newline at end of file
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/BoldGreenCompositeConverter.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/color/BoldGreenCompositeConverter.java
deleted file mode 100644
index 8e9934a..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/BoldGreenCompositeConverter.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.pattern.color;
-
-import static ch.qos.logback.core.pattern.color.ANSIConstants.BOLD;
-import static ch.qos.logback.core.pattern.color.ANSIConstants.GREEN_FG;
-
-/**
- * Encloses a given set of converter output in bold green using the appropriate ANSI escape codes.
- *
- * @param <E>
- * @author Ceki Gülcü
- * @since 1.0.5
- */
-public class BoldGreenCompositeConverter<E> extends ForegroundCompositeConverterBase<E> {
-
-  @Override
-  protected String getForegroundColorCode(E event) {
-    return BOLD + GREEN_FG;
-  }
-}
\ No newline at end of file
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/BoldMagentaCompositeConverter.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/color/BoldMagentaCompositeConverter.java
deleted file mode 100644
index 69b5af1..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/BoldMagentaCompositeConverter.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.pattern.color;
-
-import static ch.qos.logback.core.pattern.color.ANSIConstants.BOLD;
-import static ch.qos.logback.core.pattern.color.ANSIConstants.MAGENTA_FG;
-
-/**
- * Encloses a given set of converter output in bold magenta using the appropriate ANSI escape codes.
- *
- * @param <E>
- * @author Ceki Gülcü
- * @since 1.0.5
- */
-public class BoldMagentaCompositeConverter<E> extends ForegroundCompositeConverterBase<E> {
-
-  @Override
-  protected String getForegroundColorCode(E event) {
-    return BOLD + MAGENTA_FG;
-  }
-}
\ No newline at end of file
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/BoldRedCompositeConverter.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/color/BoldRedCompositeConverter.java
deleted file mode 100644
index 2b63f1b..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/BoldRedCompositeConverter.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.pattern.color;
-
-import static ch.qos.logback.core.pattern.color.ANSIConstants.*;
-
-/**
- * Encloses a given set of converter output in bold red using the appropriate ANSI escape codes.
- * @param <E>
- * @author  Ceki Gülcü
- * @since 1.0.5
- */
-public class BoldRedCompositeConverter <E> extends ForegroundCompositeConverterBase<E> {
-
-  @Override
-  protected String getForegroundColorCode(E event) {
-    return BOLD+RED_FG;
-  }
-}
\ No newline at end of file
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/BoldWhiteCompositeConverter.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/color/BoldWhiteCompositeConverter.java
deleted file mode 100644
index 86991ea..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/BoldWhiteCompositeConverter.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.pattern.color;
-
-import static ch.qos.logback.core.pattern.color.ANSIConstants.BOLD;
-import static ch.qos.logback.core.pattern.color.ANSIConstants.WHITE_FG;
-
-/**
- * Encloses a given set of converter output in bold white using the appropriate ANSI escape codes.
- *
- * @param <E>
- * @author Ceki Gülcü
- * @since 1.0.5
- */
-public class BoldWhiteCompositeConverter<E> extends ForegroundCompositeConverterBase<E> {
-
-  @Override
-  protected String getForegroundColorCode(E event) {
-    return BOLD + WHITE_FG;
-  }
-}
\ No newline at end of file
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/BoldYellowCompositeConverter.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/color/BoldYellowCompositeConverter.java
deleted file mode 100644
index 5aa5ea6..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/BoldYellowCompositeConverter.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.pattern.color;
-
-import static ch.qos.logback.core.pattern.color.ANSIConstants.BOLD;
-import static ch.qos.logback.core.pattern.color.ANSIConstants.YELLOW_FG;
-
-/**
- * Encloses a given set of converter output in bold yellow using the appropriate ANSI escape codes.
- *
- * @param <E>
- * @author Ceki Gülcü
- * @since 1.0.5
- */
-public class BoldYellowCompositeConverter<E> extends ForegroundCompositeConverterBase<E> {
-
-  @Override
-  protected String getForegroundColorCode(E event) {
-    return BOLD + YELLOW_FG;
-  }
-}
\ No newline at end of file
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/CyanCompositeConverter.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/color/CyanCompositeConverter.java
deleted file mode 100644
index 0bee1bb..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/CyanCompositeConverter.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.pattern.color;
-
-/**
- * Encloses a given set of converter output in cyan using the appropriate ANSI escape codes.
- * @param <E>
- * @author  Ceki Gülcü
- * @since 1.0.5
- */
-public class CyanCompositeConverter<E> extends ForegroundCompositeConverterBase<E> {
-
-  @Override
-  protected String getForegroundColorCode(E event) {
-    return ANSIConstants.CYAN_FG;
-  }
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/ForegroundCompositeConverterBase.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/color/ForegroundCompositeConverterBase.java
deleted file mode 100644
index c8f3209..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/ForegroundCompositeConverterBase.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.pattern.color;
-
-import ch.qos.logback.core.pattern.CompositeConverter;
-import static ch.qos.logback.core.pattern.color.ANSIConstants.*;
-
-/**
- * Base class for all foreground color setting composite converters.
- *
- * @param <E>
- * @since 1.0.5
- */
-abstract public class ForegroundCompositeConverterBase<E> extends CompositeConverter<E> {
-
-  final private static String SET_DEFAULT_COLOR = ESC_START+"0;"+DEFAULT_FG+ESC_END;
-
-  @Override
-  protected String transform(E event, String in) {
-    StringBuilder sb = new StringBuilder();
-    sb.append(ESC_START);
-    sb.append(getForegroundColorCode(event));
-    sb.append(ESC_END);
-    sb.append(in);
-    sb.append(SET_DEFAULT_COLOR);
-    return sb.toString();
-  }
-
-  /**
-   * Derived classes return the foreground color specific to the derived class instance.
-   * @return  the foreground color for this instance
-   */
-  abstract protected String getForegroundColorCode(E event);
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/GrayCompositeConverter.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/color/GrayCompositeConverter.java
deleted file mode 100644
index 3c0740e..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/GrayCompositeConverter.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.pattern.color;
-
-import static ch.qos.logback.core.pattern.color.ANSIConstants.*;
-
-/**
- * Encloses a given set of converter output in gray using the appropriate ANSI
- * escape codes.
- *
- * @param <E>
- * @author  Ceki Gülcü
- * @since 1.0.5
- */
-public class GrayCompositeConverter<E> extends ForegroundCompositeConverterBase<E> {
-
-  @Override
-  protected String getForegroundColorCode(E event) {
-    return BOLD + BLACK_FG;
-  }
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/GreenCompositeConverter.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/color/GreenCompositeConverter.java
deleted file mode 100644
index f16efa8..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/GreenCompositeConverter.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.pattern.color;
-
-/**
- * Encloses a given set of converter output in green using the appropriate ANSI escape codes.
- * @param <E>
- * @author  Ceki Gülcü
- * @since 1.0.5
- */
-public class GreenCompositeConverter<E> extends ForegroundCompositeConverterBase<E> {
-
-  @Override
-  protected String getForegroundColorCode(E event) {
-    return ANSIConstants.GREEN_FG;
-  }
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/MagentaCompositeConverter.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/color/MagentaCompositeConverter.java
deleted file mode 100644
index 3d3c9e4..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/MagentaCompositeConverter.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.pattern.color;
-
-/**
- * Encloses a given set of converter output in magenta using the appropriate ANSI escape codes.
- * @param <E>
- * @author  Ceki Gülcü
- * @since 1.0.5
- */
-public class MagentaCompositeConverter<E> extends ForegroundCompositeConverterBase<E> {
-
-  @Override
-  protected String getForegroundColorCode(E event) {
-    return ANSIConstants.MAGENTA_FG;
-  }
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/RedCompositeConverter.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/color/RedCompositeConverter.java
deleted file mode 100644
index 3e6bacc..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/RedCompositeConverter.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.pattern.color;
-
-/**
- * Encloses a given set of converter output in red using the appropriate ANSI escape codes.
- * @param <E>
- * @author  Ceki Gülcü
- * @since 1.0.5
- */
-public class RedCompositeConverter<E> extends ForegroundCompositeConverterBase<E> {
-
-  @Override
-  protected String getForegroundColorCode(E event) {
-    return ANSIConstants.RED_FG;
-  }
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/WhiteCompositeConverter.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/color/WhiteCompositeConverter.java
deleted file mode 100644
index ef1f9c3..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/WhiteCompositeConverter.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.pattern.color;
-
-/**
- * Encloses a given set of converter output in white using the appropriate ANSI escape codes.
- * @param <E>
- * @author  Ceki Gülcü
- * @since 1.0.5
- */
-public class WhiteCompositeConverter<E> extends ForegroundCompositeConverterBase<E> {
-
-  @Override
-  protected String getForegroundColorCode(E event) {
-    return ANSIConstants.WHITE_FG;
-  }
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/YellowCompositeConverter.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/color/YellowCompositeConverter.java
deleted file mode 100644
index 061209c..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/color/YellowCompositeConverter.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.pattern.color;
-
-/**
- * Encloses a given set of converter output in yellow using the appropriate ANSI escape codes.
- * @param <E>
- * @author  Ceki Gülcü
- * @since 1.0.5
- */
-public class YellowCompositeConverter<E> extends ForegroundCompositeConverterBase<E> {
-
-  @Override
-  protected String getForegroundColorCode(E event) {
-    return ANSIConstants.YELLOW_FG;
-  }
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/Compiler.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/Compiler.java
index 76b884c..5209a51 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/Compiler.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/Compiler.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/CompositeNode.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/CompositeNode.java
index cce49f5..52630ec 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/CompositeNode.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/CompositeNode.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -30,6 +30,7 @@ public class CompositeNode extends SimpleKeywordNode {
 	}
 
 	public boolean equals(Object o) {
+		//System.out.println("CompositeNode.equals()");
     if(!super.equals(o)) {
       return false;
     }
@@ -41,14 +42,9 @@ public class CompositeNode extends SimpleKeywordNode {
 		return (childNode != null) ? childNode.equals(r.childNode)
 						: (r.childNode == null);
 	}
-
-  @Override
-  public int hashCode() {
-    return super.hashCode();
-  }
-
-  public String toString() {
-		StringBuilder buf = new StringBuilder();
+	
+	public String toString() {
+		StringBuffer buf = new StringBuffer();
 		if(childNode != null) {
 		 buf.append("CompositeNode("+childNode+")");
 		} else {
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/FormattingNode.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/FormattingNode.java
index 748d804..a1288d2 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/FormattingNode.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/FormattingNode.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -48,11 +48,4 @@ public class FormattingNode extends Node {
     return (formatInfo != null ? formatInfo.equals(r.formatInfo)
         : r.formatInfo == null);
   }
-
-  @Override
-  public int hashCode() {
-    int result = super.hashCode();
-    result = 31 * result + (formatInfo != null ? formatInfo.hashCode() : 0);
-    return result;
-  }
 }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/Node.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/Node.java
index 590334f..0e82b72 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/Node.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/Node.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -67,14 +67,7 @@ public class Node {
 				&& (next != null ? next.equals(r.next) : r.next == null);
 	}
 
-  @Override
-  public int hashCode() {
-    int result = type;
-    result = 31 * result + (value != null ? value.hashCode() : 0);
-    return result;
-  }
-
-  String printNext() {
+	String printNext() {
 		if (next != null) {
 			return " -> " + next;
 		} else {
@@ -83,7 +76,7 @@ public class Node {
 	}
 
 	public String toString() {
-	    StringBuilder buf = new StringBuilder();
+		StringBuffer buf = new StringBuffer();
 		switch (type) {
 		case LITERAL:
 			buf.append("LITERAL(" + value + ")");
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/OptionTokenizer.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/OptionTokenizer.java
index a0fec77..a4747cb 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/OptionTokenizer.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/OptionTokenizer.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -29,7 +29,6 @@ import static ch.qos.logback.core.CoreConstants.DOUBLE_QUOTE_CHAR;
 
 
 import ch.qos.logback.core.pattern.parser.TokenStream.TokenizerState;
-import ch.qos.logback.core.spi.ScanException;
 
 public class OptionTokenizer {
 
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/Parser.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/Parser.java
index aad4f47..2cc6ce8 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/Parser.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/Parser.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -25,7 +25,6 @@ import ch.qos.logback.core.pattern.ReplacingCompositeConverter;
 import ch.qos.logback.core.pattern.util.IEscapeUtil;
 import ch.qos.logback.core.pattern.util.RegularEscapeUtil;
 import ch.qos.logback.core.spi.ContextAwareBase;
-import ch.qos.logback.core.spi.ScanException;
 
 // ~=lamda
 // E = TE|T
diff --git a/logback-core/src/main/java/ch/qos/logback/core/spi/ScanException.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/ScanException.java
similarity index 85%
rename from logback-core/src/main/java/ch/qos/logback/core/spi/ScanException.java
rename to logback-core/src/main/java/ch/qos/logback/core/pattern/parser/ScanException.java
index 8eef629..518bacd 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/spi/ScanException.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/ScanException.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -11,7 +11,7 @@
  * under the terms of the GNU Lesser General Public License version 2.1
  * as published by the Free Software Foundation.
  */
-package ch.qos.logback.core.spi;
+package ch.qos.logback.core.pattern.parser;
 
 public class ScanException extends Exception {
 
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/SimpleKeywordNode.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/SimpleKeywordNode.java
index 33050e8..6c21cf0 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/SimpleKeywordNode.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/SimpleKeywordNode.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -36,6 +36,7 @@ public class SimpleKeywordNode extends FormattingNode {
   }
 
   public boolean equals(Object o) {
+    // System.out.println("Keyword.equals()");
     if (!super.equals(o)) {
       return false;
     }
@@ -49,13 +50,8 @@ public class SimpleKeywordNode extends FormattingNode {
         : r.optionList == null);
   }
 
-  @Override
-  public int hashCode() {
-    return super.hashCode();
-  }
-
   public String toString() {
-    StringBuilder buf = new StringBuilder();
+    StringBuffer buf = new StringBuffer();
     if (optionList == null) {
       buf.append("KeyWord(" + value + "," + formatInfo + ")");
     } else {
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/Token.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/Token.java
index 86c3da6..b0f4571 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/Token.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/Token.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/TokenStream.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/TokenStream.java
index 8a26d35..7c622a0 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/TokenStream.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/pattern/parser/TokenStream.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -23,7 +23,6 @@ import static ch.qos.logback.core.CoreConstants.ESCAPE_CHAR;
 import ch.qos.logback.core.pattern.util.IEscapeUtil;
 import ch.qos.logback.core.pattern.util.RegularEscapeUtil;
 import ch.qos.logback.core.pattern.util.RestrictedEscapeUtil;
-import ch.qos.logback.core.spi.ScanException;
 
 /**
  * <p>
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/util/AlmostAsIsEscapeUtil.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/util/AlmostAsIsEscapeUtil.java
index 1daea37..e9dd43e 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/util/AlmostAsIsEscapeUtil.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/pattern/util/AlmostAsIsEscapeUtil.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/util/AsIsEscapeUtil.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/util/AsIsEscapeUtil.java
index e02a350..0ae340a 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/util/AsIsEscapeUtil.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/pattern/util/AsIsEscapeUtil.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/util/IEscapeUtil.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/util/IEscapeUtil.java
index c597b9c..c497947 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/util/IEscapeUtil.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/pattern/util/IEscapeUtil.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/util/RegularEscapeUtil.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/util/RegularEscapeUtil.java
index 481bdf0..0e18498 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/util/RegularEscapeUtil.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/pattern/util/RegularEscapeUtil.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -60,7 +60,7 @@ public class RegularEscapeUtil implements IEscapeUtil {
   public static String basicEscape(String s) {
     char c;
     int len = s.length();
-    StringBuilder sbuf = new StringBuilder(len);
+    StringBuffer sbuf = new StringBuffer(len);
 
     int i = 0;
     while (i < len) {
diff --git a/logback-core/src/main/java/ch/qos/logback/core/pattern/util/RestrictedEscapeUtil.java b/logback-core/src/main/java/ch/qos/logback/core/pattern/util/RestrictedEscapeUtil.java
index 0a6599c..2916176 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/pattern/util/RestrictedEscapeUtil.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/pattern/util/RestrictedEscapeUtil.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/property/FileExistsPropertyDefiner.java b/logback-core/src/main/java/ch/qos/logback/core/property/FileExistsPropertyDefiner.java
index b265ddd..89b16e7 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/property/FileExistsPropertyDefiner.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/property/FileExistsPropertyDefiner.java
@@ -1,30 +1,9 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
 package ch.qos.logback.core.property;
 
 import ch.qos.logback.core.PropertyDefinerBase;
-import ch.qos.logback.core.util.OptionHelper;
-
 import java.io.File;
 
 /**
- * In conjunction with {@link ch.qos.logback.core.joran.action.PropertyAction} sets
- * the named variable to "true" if the file specified by {@link #setPath(String) path}
- * property exists, to "false" otherwise.
- *
- * @see #getPropertyValue()
- *
  * @author Ceki Gücü
  */
 public class FileExistsPropertyDefiner extends PropertyDefinerBase {
@@ -35,28 +14,18 @@ public class FileExistsPropertyDefiner extends PropertyDefinerBase {
     return path;
   }
 
-  /**
-   * The path for the file to search for.
-   *
-   * @param path
-   */
   public void setPath(String path) {
     this.path = path;
   }
 
-  /**
-   * Returns "true" if the file specified by {@link #setPath(String) path} property exists.
-   * Returns "false" otherwise.
-   *
-   * @return "true"|"false" depending on the existence of file
-   */
   public String getPropertyValue() {
-    if (OptionHelper.isEmpty(path)) {
-      addError("The \"path\" property must be set.");
-      return null;
-    }
-
+    if(path == null)
+      return "false";
     File file = new File(path);
-    return booleanAsStr(file.exists());
+    System.out.println(file.getAbsolutePath());
+    if(file.exists())
+      return "true";
+    else
+    return "false";
   }
 }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/property/ResourceExistsPropertyDefiner.java b/logback-core/src/main/java/ch/qos/logback/core/property/ResourceExistsPropertyDefiner.java
deleted file mode 100644
index d5f7672..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/property/ResourceExistsPropertyDefiner.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package ch.qos.logback.core.property;
-
-import ch.qos.logback.core.PropertyDefinerBase;
-import ch.qos.logback.core.util.Loader;
-import ch.qos.logback.core.util.OptionHelper;
-
-import java.net.URL;
-
-/**
- * In conjunction with {@link ch.qos.logback.core.joran.action.PropertyAction} sets
- * the named variable to "true" if the {@link #setResource(String) resource} specified
- * by the user is available on the class path, "false" otherwise.
- *
- * @see #getPropertyValue()
- *
- * @author XuHuisheng
- * @author Ceki Gulcu
- * @since 1.1.0
- */
-public class ResourceExistsPropertyDefiner extends PropertyDefinerBase {
-
-  String resourceStr;
-
-  public String getResource() {
-    return resourceStr;
-  }
-
-  /**
-   * The resource to search for on the class path.
-   *
-   * @param resource
-   */
-  public void setResource(String resource) {
-    this.resourceStr = resource;
-  }
-
-  /**
-   * Returns the string "true" if the {@link #setResource(String) resource} specified by the
-   * user is available on the class path, "false" otherwise.
-   *
-   * @return "true"|"false" depending on the availability of resource on the classpath
-   */
-  public String getPropertyValue() {
-    if (OptionHelper.isEmpty(resourceStr)) {
-      addError("The \"resource\" property must be set.");
-      return null;
-    }
-
-    URL resourceURL = Loader.getResourceBySelfClassLoader(resourceStr);
-    return booleanAsStr(resourceURL != null);
-  }
-
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/read/CyclicBufferAppender.java b/logback-core/src/main/java/ch/qos/logback/core/read/CyclicBufferAppender.java
index 7dd1d75..54abbb4 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/read/CyclicBufferAppender.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/read/CyclicBufferAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -54,7 +54,7 @@ public class CyclicBufferAppender<E> extends AppenderBase<E> {
     }
   }
 
-  public E get(int i) {
+  public Object get(int i) {
     if (isStarted()) {
       return cb.get(i);
     } else {
@@ -62,10 +62,6 @@ public class CyclicBufferAppender<E> extends AppenderBase<E> {
     }
   }
 
-  public void reset() {
-    cb.clear();
-  }
-
   /**
    * Set the size of the cyclic buffer.
    */
diff --git a/logback-core/src/main/java/ch/qos/logback/core/read/ListAppender.java b/logback-core/src/main/java/ch/qos/logback/core/read/ListAppender.java
index f934443..20deac3 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/read/ListAppender.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/read/ListAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/recovery/RecoveryCoordinator.java b/logback-core/src/main/java/ch/qos/logback/core/recovery/RecoveryCoordinator.java
index 21341ac..3dd1044 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/recovery/RecoveryCoordinator.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/recovery/RecoveryCoordinator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -15,8 +15,8 @@ package ch.qos.logback.core.recovery;
 
 public class RecoveryCoordinator {
 
-  public final static long BACKOFF_COEFFICIENT_MIN = 20;
-  static long BACKOFF_COEFFICIENT_MAX = 327680;  // BACKOFF_COEFFICIENT_MIN * 4^7
+  public final static long BACKOFF_COEFFICIENT_MIN = 100;
+  static long BACKOFF_COEFFICIENT_MAX = 409600;  // BACKOFF_COEFFICIENT_MIN * 4^6
   
   private long backOffCoefficient = BACKOFF_COEFFICIENT_MIN;
   
diff --git a/logback-core/src/main/java/ch/qos/logback/core/recovery/ResilientFileOutputStream.java b/logback-core/src/main/java/ch/qos/logback/core/recovery/ResilientFileOutputStream.java
index bd958fb..3fa2fa6 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/recovery/ResilientFileOutputStream.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/recovery/ResilientFileOutputStream.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -41,6 +41,7 @@ public class ResilientFileOutputStream extends ResilientOutputStreamBase {
     return file;
   }
 
+
   @Override
   String getDescription() {
     return "file ["+file+"]";
@@ -48,9 +49,7 @@ public class ResilientFileOutputStream extends ResilientOutputStreamBase {
 
   @Override
   OutputStream openNewOutputStream() throws IOException {
-    // see LOGBACK-765
-    fos = new FileOutputStream(file, true);
-    return new BufferedOutputStream(fos);
+    return  new FileOutputStream(file, true);
   }
   
   @Override
diff --git a/logback-core/src/main/java/ch/qos/logback/core/recovery/ResilientOutputStreamBase.java b/logback-core/src/main/java/ch/qos/logback/core/recovery/ResilientOutputStreamBase.java
index 5d922a1..5e4702a 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/recovery/ResilientOutputStreamBase.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/recovery/ResilientOutputStreamBase.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/recovery/ResilientSyslogOutputStream.java b/logback-core/src/main/java/ch/qos/logback/core/recovery/ResilientSyslogOutputStream.java
index ab20b71..1fcdcff 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/recovery/ResilientSyslogOutputStream.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/recovery/ResilientSyslogOutputStream.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/DefaultTimeBasedFileNamingAndTriggeringPolicy.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/DefaultTimeBasedFileNamingAndTriggeringPolicy.java
index 5114e1d..6943173 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/rolling/DefaultTimeBasedFileNamingAndTriggeringPolicy.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/DefaultTimeBasedFileNamingAndTriggeringPolicy.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/FixedWindowRollingPolicy.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/FixedWindowRollingPolicy.java
index a395f1b..718e763 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/rolling/FixedWindowRollingPolicy.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/FixedWindowRollingPolicy.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -37,12 +37,12 @@ public class FixedWindowRollingPolicy extends RollingPolicyBase {
   RenameUtil util = new RenameUtil();
   Compressor compressor;
 
-  public static final String ZIP_ENTRY_DATE_PATTERN = "yyyy-MM-dd_HHmm";
+  public static String ZIP_ENTRY_DATE_PATTERN = "yyyy-MM-dd_HHmm";
 
   /**
-   * It's almost always a bad idea to have a large window size, say over 20.
+   * It's almost always a bad idea to have a large window size, say over 12.
    */
-  private static int MAX_WINDOW_SIZE = 20;
+  private static int MAX_WINDOW_SIZE = 12;
 
   public FixedWindowRollingPolicy() {
     minIndex = 1;
@@ -80,10 +80,9 @@ public class FixedWindowRollingPolicy extends RollingPolicyBase {
       maxIndex = minIndex;
     }
 
-    final int maxWindowSize = getMaxWindowSize();
-    if ((maxIndex - minIndex) > maxWindowSize) {
+    if ((maxIndex - minIndex) > MAX_WINDOW_SIZE) {
       addWarn("Large window sizes are not allowed.");
-      maxIndex = minIndex + maxWindowSize;
+      maxIndex = minIndex + MAX_WINDOW_SIZE;
       addWarn("MaxIndex reduced to " + maxIndex);
     }
 
@@ -104,15 +103,6 @@ public class FixedWindowRollingPolicy extends RollingPolicyBase {
     super.start();
   }
 
-  /**
-   * Subclasses can override this method to increase the max window size, if required.  This is to
-   * address LOGBACK-266.
-   * @return
-   */
-  protected int getMaxWindowSize() {
-    return MAX_WINDOW_SIZE;
-  }
-
   private String transformFileNamePatternFromInt2Date(String fileNamePatternStr) {
     String slashified = FileFilterUtil.slashify(fileNamePatternStr);
     String stemOfFileNamePattern = FileFilterUtil.afterLastSlash(slashified);
diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/RollingFileAppender.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/RollingFileAppender.java
index 0b1e76c..3224202 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/rolling/RollingFileAppender.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/RollingFileAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,23 +13,20 @@
  */
 package ch.qos.logback.core.rolling;
 
-import ch.qos.logback.core.FileAppender;
-import ch.qos.logback.core.rolling.helper.CompressionMode;
-import ch.qos.logback.core.rolling.helper.FileNamePattern;
-
 import java.io.File;
 import java.io.IOException;
 
 import static ch.qos.logback.core.CoreConstants.CODES_URL;
-
+import ch.qos.logback.core.FileAppender;
+import ch.qos.logback.core.rolling.helper.CompressionMode;
 /**
  * <code>RollingFileAppender</code> extends {@link FileAppender} to backup the
  * log files depending on {@link RollingPolicy} and {@link TriggeringPolicy}.
- * <p/>
- * <p/>
+ * <p>
+ * 
  * For more information about this appender, please refer to the online manual
  * at http://logback.qos.ch/manual/appenders.html#RollingFileAppender
- *
+ * 
  * @author Heinz Richter
  * @author Ceki Gülcü
  */
@@ -38,15 +35,11 @@ public class RollingFileAppender<E> extends FileAppender<E> {
   TriggeringPolicy<E> triggeringPolicy;
   RollingPolicy rollingPolicy;
 
-  static private String RFA_NO_TP_URL = CODES_URL + "#rfa_no_tp";
-  static private String RFA_NO_RP_URL = CODES_URL + "#rfa_no_rp";
-  static private String COLLISION_URL = CODES_URL + "#rfa_collision";
-
   public void start() {
     if (triggeringPolicy == null) {
       addWarn("No TriggeringPolicy was set for the RollingFileAppender named "
-              + getName());
-      addWarn("For more information, please visit " + RFA_NO_TP_URL);
+          + getName());
+      addWarn("For more information, please visit "+CODES_URL+"#rfa_no_tp");
       return;
     }
 
@@ -58,15 +51,8 @@ public class RollingFileAppender<E> extends FileAppender<E> {
 
     if (rollingPolicy == null) {
       addError("No RollingPolicy was set for the RollingFileAppender named "
-              + getName());
-      addError("For more information, please visit " + RFA_NO_RP_URL);
-      return;
-    }
-
-    // sanity check for http://jira.qos.ch/browse/LOGBACK-796
-    if (fileAndPatternCollide()) {
-      addError("File property collides with fileNamePattern. Aborting.");
-      addError("For more information, please visit " + COLLISION_URL);
+          + getName());
+      addError("For more information, please visit "+CODES_URL+"rfa_no_rp");
       return;
     }
 
@@ -86,23 +72,10 @@ public class RollingFileAppender<E> extends FileAppender<E> {
     super.start();
   }
 
-  private boolean fileAndPatternCollide() {
-    if (triggeringPolicy instanceof RollingPolicyBase) {
-      final RollingPolicyBase base = (RollingPolicyBase) triggeringPolicy;
-      final FileNamePattern fileNamePattern = base.fileNamePattern;
-      // no use checking if either fileName or  fileNamePattern are null
-      if (fileNamePattern != null && fileName != null) {
-        String regex = fileNamePattern.toRegex();
-        return fileName.matches(regex);
-      }
-    }
-    return false;
-  }
-
   @Override
   public void stop() {
-    if (rollingPolicy != null) rollingPolicy.stop();
-    if (triggeringPolicy != null) triggeringPolicy.stop();
+    if(rollingPolicy != null) rollingPolicy.stop();
+    if(triggeringPolicy != null) triggeringPolicy.stop();
     super.stop();
   }
 
@@ -112,7 +85,7 @@ public class RollingFileAppender<E> extends FileAppender<E> {
     // allow setting the file name to null if mandated by prudent mode
     if (file != null && ((triggeringPolicy != null) || (rollingPolicy != null))) {
       addError("File property must be set before any triggeringPolicy or rollingPolicy properties");
-      addError("Visit " + CODES_URL + "#rfa_file_after for more information");
+      addError("Visit "+CODES_URL+"#rfa_file_after for more information");
     }
     super.setFile(file);
   }
@@ -126,34 +99,14 @@ public class RollingFileAppender<E> extends FileAppender<E> {
    * Implemented by delegating most of the rollover work to a rolling policy.
    */
   public void rollover() {
-    lock.lock();
-    try {
+    synchronized (lock) {
       // Note: This method needs to be synchronized because it needs exclusive
       // access while it closes and then re-opens the target file.
       //
       // make sure to close the hereto active log file! Renaming under windows
       // does not work for open files.
       this.closeOutputStream();
-      attemptRollover();
-      attemptOpenFile();
-    } finally {
-      lock.unlock();
-    }
-  }
-
-    private void attemptOpenFile() {
-      try {
-        // update the currentlyActiveFile LOGBACK-64
-        currentlyActiveFile = new File(rollingPolicy.getActiveFileName());
 
-        // This will also close the file. This is OK since multiple close operations are safe.
-        this.openFile(rollingPolicy.getActiveFileName());
-      } catch (IOException e) {
-        addError("setFile(" + fileName + ", false) call failed.", e);
-      }
-    }
-
-    private void attemptRollover() {
       try {
         rollingPolicy.rollover();
       } catch (RolloverFailure rf) {
@@ -161,9 +114,22 @@ public class RollingFileAppender<E> extends FileAppender<E> {
         // we failed to roll-over, let us not truncate and risk data loss
         this.append = true;
       }
+
+      try {
+        // update the currentlyActiveFile
+        // http://jira.qos.ch/browse/LBCORE-90
+        currentlyActiveFile = new File(rollingPolicy.getActiveFileName());
+
+        // This will also close the file. This is OK since multiple
+        // close operations are safe.
+        this.openFile(rollingPolicy.getActiveFileName());
+      } catch (IOException e) {
+        addError("setFile(" + fileName + ", false) call failed.", e);
+      }
     }
+  }
 
-    /**
+  /**
    * This method differentiates RollingFileAppender from its super class.
    */
   @Override
@@ -194,7 +160,7 @@ public class RollingFileAppender<E> extends FileAppender<E> {
    * Sets the rolling policy. In case the 'policy' argument also implements
    * {@link TriggeringPolicy}, then the triggering policy for this appender is
    * automatically set to be the policy argument.
-   *
+   * 
    * @param policy
    */
   @SuppressWarnings("unchecked")
diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/RollingPolicy.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/RollingPolicy.java
index 49dce02..1c2464e 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/rolling/RollingPolicy.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/RollingPolicy.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/RollingPolicyBase.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/RollingPolicyBase.java
index 0f2ddd6..712f775 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/rolling/RollingPolicyBase.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/RollingPolicyBase.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -27,8 +27,7 @@ import ch.qos.logback.core.spi.ContextAwareBase;
 public abstract class RollingPolicyBase extends ContextAwareBase implements
     RollingPolicy {
   protected CompressionMode compressionMode = CompressionMode.NONE;
-
-  FileNamePattern fileNamePattern;
+  protected FileNamePattern fileNamePattern;
   // fileNamePatternStr is always slashified, see setter
   protected String fileNamePatternStr;
 
diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/RolloverFailure.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/RolloverFailure.java
index a88c548..6299131 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/rolling/RolloverFailure.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/RolloverFailure.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -14,22 +14,16 @@
 package ch.qos.logback.core.rolling;
 
 
-import ch.qos.logback.core.LogbackException;
-
 /**
  * A RolloverFailure occurs if, for whatever reason a rollover fails.
  *
  * @author Ceki Gulcu
  */
-public class RolloverFailure extends LogbackException {
+public class RolloverFailure extends Exception {
 
   private static final long serialVersionUID = -4407533730831239458L;
 
   public RolloverFailure(String msg) {
     super(msg);
   }
-
-  public RolloverFailure(String message, Throwable cause) {
-    super(message, cause);
-  }
 }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/SizeAndTimeBasedFNATP.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/SizeAndTimeBasedFNATP.java
index 76bf92d..c641e49 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/rolling/SizeAndTimeBasedFNATP.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/SizeAndTimeBasedFNATP.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -17,7 +17,6 @@ import java.io.File;
 import java.util.Date;
 
 import ch.qos.logback.core.joran.spi.NoAutoStart;
-import ch.qos.logback.core.rolling.helper.ArchiveRemover;
 import ch.qos.logback.core.rolling.helper.CompressionMode;
 import ch.qos.logback.core.rolling.helper.FileFilterUtil;
 import ch.qos.logback.core.rolling.helper.SizeAndTimeBasedArchiveRemover;
@@ -37,13 +36,13 @@ public class SizeAndTimeBasedFNATP<E> extends
     // in super.start()
     super.start();
 
-    archiveRemover = createArchiveRemover();
+    archiveRemover = new SizeAndTimeBasedArchiveRemover(tbrp.fileNamePattern, rc);
     archiveRemover.setContext(context);
 
     // we need to get the correct value of currentPeriodsCounter.
     // usually the value is 0, unless the appender or the application
     // is stopped and restarted within the same period
-    String regex = tbrp.fileNamePattern.toRegexForFixedDate(dateInCurrentPeriod);
+    String regex = tbrp.fileNamePattern.toRegex(dateInCurrentPeriod);
     String stemRegex = FileFilterUtil.afterLastSlash(regex);
 
 
@@ -52,10 +51,6 @@ public class SizeAndTimeBasedFNATP<E> extends
     started = true;
   }
 
-  protected ArchiveRemover createArchiveRemover() {
-    return new SizeAndTimeBasedArchiveRemover(tbrp.fileNamePattern, rc);
-  }
-
   void computeCurrentPeriodsHighestCounterValue(final String stemRegex) {
     File file = new File(getCurrentPeriodsFileNameWithoutCompressionSuffix());
     File parentDir = file.getParentFile();
diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/SizeBasedTriggeringPolicy.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/SizeBasedTriggeringPolicy.java
index f27b55d..43eb581 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/rolling/SizeBasedTriggeringPolicy.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/SizeBasedTriggeringPolicy.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/TimeBasedFileNamingAndTriggeringPolicy.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/TimeBasedFileNamingAndTriggeringPolicy.java
index 7a77628..03e49c4 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/rolling/TimeBasedFileNamingAndTriggeringPolicy.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/TimeBasedFileNamingAndTriggeringPolicy.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/TimeBasedFileNamingAndTriggeringPolicyBase.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/TimeBasedFileNamingAndTriggeringPolicyBase.java
index 8fec847..6f0b137 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/rolling/TimeBasedFileNamingAndTriggeringPolicyBase.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/TimeBasedFileNamingAndTriggeringPolicyBase.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/TimeBasedRollingPolicy.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/TimeBasedRollingPolicy.java
index 9f7ac41..a0bc950 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/rolling/TimeBasedRollingPolicy.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/TimeBasedRollingPolicy.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -15,10 +15,7 @@ package ch.qos.logback.core.rolling;
 
 import java.io.File;
 import java.util.Date;
-import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
 
 import ch.qos.logback.core.CoreConstants;
 import ch.qos.logback.core.rolling.helper.*;
@@ -104,26 +101,6 @@ public class TimeBasedRollingPolicy<E> extends RollingPolicyBase implements
     super.start();
   }
 
-  @Override
-  public void stop() {
-    if(!isStarted())
-      return;
-    waitForAsynchronousJobToStop();
-    super.stop();
-  }
-
-
-  private void waitForAsynchronousJobToStop() {
-    if(future != null) {
-      try {
-        future.get(CoreConstants.SECONDS_TO_WAIT_FOR_COMPRESSION_JOBS, TimeUnit.SECONDS);
-      } catch (TimeoutException e) {
-        addError("Timeout while waiting for compression job to finish", e);
-      } catch (Exception e) {
-        addError("Unexpected exception while waiting for compression job to finish", e);
-      }
-    }
-  }
   private String transformFileNamePattern2ZipEntry(String fileNamePatternStr) {
     String slashified = FileFilterUtil.slashify(fileNamePatternStr);
     return FileFilterUtil.afterLastSlash(slashified);
@@ -146,7 +123,8 @@ public class TimeBasedRollingPolicy<E> extends RollingPolicyBase implements
     String elapsedPeriodsFileName = timeBasedFileNamingAndTriggeringPolicy
         .getElapsedPeriodsFileName();
 
-    String elapsedPeriodStem = FileFilterUtil.afterLastSlash(elapsedPeriodsFileName);
+    String elpasedPeriodStem = FileFilterUtil.afterLastSlash(elapsedPeriodsFileName);
+
 
     if (compressionMode == CompressionMode.NONE) {
       if (getParentsRawFileProperty() != null) {
@@ -154,9 +132,9 @@ public class TimeBasedRollingPolicy<E> extends RollingPolicyBase implements
       } // else { nothing to do if CompressionMode == NONE and parentsRawFileProperty == null }
     } else {
       if (getParentsRawFileProperty() == null) {
-        future = asyncCompress(elapsedPeriodsFileName, elapsedPeriodsFileName, elapsedPeriodStem);
+        future = asyncCompress(elapsedPeriodsFileName, elapsedPeriodsFileName, elpasedPeriodStem);
       } else {
-        future = renamedRawAndAsyncCompress(elapsedPeriodsFileName, elapsedPeriodStem);
+        future = renamedRawAndAsyncCompress(elapsedPeriodsFileName, elpasedPeriodStem);
       }
     }
 
diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/TriggeringPolicy.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/TriggeringPolicy.java
index 8bdfce2..f37c6e1 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/rolling/TriggeringPolicy.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/TriggeringPolicy.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/TriggeringPolicyBase.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/TriggeringPolicyBase.java
index 8d5a9be..ea8ab36 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/rolling/TriggeringPolicyBase.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/TriggeringPolicyBase.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/ArchiveRemover.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/ArchiveRemover.java
index 23b0f93..0285e12 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/ArchiveRemover.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/ArchiveRemover.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/AsynchronousCompressor.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/AsynchronousCompressor.java
index 3f42b60..869bab7 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/AsynchronousCompressor.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/AsynchronousCompressor.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/CompressionMode.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/CompressionMode.java
index 703bd38..57296bf 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/CompressionMode.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/CompressionMode.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/CompressionRunnable.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/CompressionRunnable.java
index 77d4287..305f0dc 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/CompressionRunnable.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/CompressionRunnable.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/Compressor.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/Compressor.java
index 4380195..7403f91 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/Compressor.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/Compressor.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/DateTokenConverter.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/DateTokenConverter.java
index 6949c27..e19621e 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/DateTokenConverter.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/DateTokenConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/DefaultArchiveRemover.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/DefaultArchiveRemover.java
index 7b10dd7..a5a8c05 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/DefaultArchiveRemover.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/DefaultArchiveRemover.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/FileFilterUtil.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/FileFilterUtil.java
index 32119a5..86be9a0 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/FileFilterUtil.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/FileFilterUtil.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/FileNamePattern.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/FileNamePattern.java
index 06b40db..41332c1 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/FileNamePattern.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/FileNamePattern.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -23,7 +23,7 @@ import ch.qos.logback.core.pattern.ConverterUtil;
 import ch.qos.logback.core.pattern.LiteralConverter;
 import ch.qos.logback.core.pattern.parser.Node;
 import ch.qos.logback.core.pattern.parser.Parser;
-import ch.qos.logback.core.spi.ScanException;
+import ch.qos.logback.core.pattern.parser.ScanException;
 import ch.qos.logback.core.pattern.util.AlmostAsIsEscapeUtil;
 import ch.qos.logback.core.spi.ContextAwareBase;
 
@@ -157,11 +157,8 @@ public class FileNamePattern extends ContextAwareBase {
 
   /**
    * Given date, convert this instance to a regular expression.
-   *
-   * Used to compute sub-regex when the pattern has both %d and %i, and the
-   * date is known.
    */
-  public String toRegexForFixedDate(Date date) {
+  public String toRegex(Date date) {
     StringBuilder buf = new StringBuilder();
     Converter<Object> p = headTokenConverter;
     while (p != null) {
diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/FileStoreUtil.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/FileStoreUtil.java
deleted file mode 100644
index 5a2a68d..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/FileStoreUtil.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.rolling.helper;
-
-import ch.qos.logback.core.rolling.RolloverFailure;
-
-import java.io.File;
-import java.lang.reflect.Method;
-
-/**
- * A utility class using functionality available since JDK 1.7.
- *
- * @author ceki
- * @since 1.0.10
- */
-public class FileStoreUtil {
-
-  static final String PATH_CLASS_STR = "java.nio.file.Path";
-  static final String FILES_CLASS_STR = "java.nio.file.Files";
-
-  /**
-   * This method assumes that both files a and b exists.
-   *
-   * @param a
-   * @param b
-   * @return
-   * @throws Exception
-   */
-  static public boolean areOnSameFileStore(File a, File b) throws RolloverFailure {
-    if (!a.exists()) {
-      throw new IllegalArgumentException("File [" + a + "] does not exist.");
-    }
-    if (!b.exists()) {
-      throw new IllegalArgumentException("File [" + b + "] does not exist.");
-    }
-
-// Implements the following by reflection
-//    Path pathA = a.toPath();
-//    Path pathB = b.toPath();
-//
-//    FileStore fileStoreA = Files.getFileStore(pathA);
-//    FileStore fileStoreB = Files.getFileStore(pathB);
-//
-//    return fileStoreA.equals(fileStoreB);
-
-    try {
-      Class<?> pathClass = Class.forName(PATH_CLASS_STR);
-      Class<?> filesClass = Class.forName(FILES_CLASS_STR);
-
-      Method toPath = File.class.getMethod("toPath");
-      Method getFileStoreMethod = filesClass.getMethod("getFileStore", pathClass);
-
-
-      Object pathA = toPath.invoke(a);
-      Object pathB = toPath.invoke(b);
-
-      Object fileStoreA = getFileStoreMethod.invoke(null, pathA);
-      Object fileStoreB = getFileStoreMethod.invoke(null, pathB);
-      return fileStoreA.equals(fileStoreB);
-    } catch (Exception e) {
-      throw new RolloverFailure("Failed to check file store equality for [" + a + "] and [" + b + "]", e);
-    }
-  }
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/IntegerTokenConverter.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/IntegerTokenConverter.java
index 1cf1736..a6d402f 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/IntegerTokenConverter.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/IntegerTokenConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/MonoTypedConverter.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/MonoTypedConverter.java
index f7e752d..c1b3833 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/MonoTypedConverter.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/MonoTypedConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/PeriodicityType.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/PeriodicityType.java
index ac8c40e..d4ad8cd 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/PeriodicityType.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/PeriodicityType.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/RenameUtil.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/RenameUtil.java
index f38a625..8a40d05 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/RenameUtil.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/RenameUtil.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -25,7 +25,6 @@ import ch.qos.logback.core.CoreConstants;
 import ch.qos.logback.core.rolling.RollingFileAppender;
 import ch.qos.logback.core.rolling.RolloverFailure;
 import ch.qos.logback.core.spi.ContextAwareBase;
-import ch.qos.logback.core.util.EnvUtil;
 import ch.qos.logback.core.util.FileUtil;
 
 
@@ -36,86 +35,89 @@ import ch.qos.logback.core.util.FileUtil;
  */
 public class RenameUtil extends ContextAwareBase {
 
-  static String RENAMING_ERROR_URL = CoreConstants.CODES_URL + "#renamingError";
+  static String RENAMING_ERROR_URL = CoreConstants.CODES_URL+"#renamingError";
 
   /**
-   * A relatively robust file renaming method which in case of failure due to
-   * src and target being on different volumes, falls back onto
-   * renaming by copying.
+   * A robust file renaming method which in case of failure falls back to
+   * renaming by copying. In case, the file to be renamed is open by another
+   * process, renaming by copying will succeed whereas regular renaming will
+   * fail. However, renaming by copying is much slower.
    *
-   * @param src
-   * @param target
+   * @param from
+   * @param to
    * @throws RolloverFailure
    */
-  public void rename(String src, String target) throws RolloverFailure {
-    if (src.equals(target)) {
-      addWarn("Source and target files are the same [" + src + "]. Skipping.");
+  public void rename(String from, String to) throws RolloverFailure {
+    if (from.equals(to)) {
+      addWarn("From and to file are the same [" + from + "]. Skipping.");
       return;
     }
-    File srcFile = new File(src);
+    File fromFile = new File(from);
 
-    if (srcFile.exists()) {
-      File targetFile = new File(target);
-      createMissingTargetDirsIfNecessary(targetFile);
+    if (fromFile.exists()) {
+      File toFile = new File(to);
+      createMissingTargetDirsIfNecessary(toFile);
 
-      addInfo("Renaming file [" + srcFile + "] to [" + targetFile + "]");
+      addInfo("Renaming file [" + fromFile + "] to [" + toFile + "]");
 
-      boolean result = srcFile.renameTo(targetFile);
+      boolean result = fromFile.renameTo(toFile);
 
       if (!result) {
-        addWarn("Failed to rename file [" + srcFile + "] as [" + targetFile + "].");
-        if (areOnDifferentVolumes(srcFile, targetFile)) {
-          addWarn("Detected different file systems for source [" + src + "] and target [" + target + "]. Attempting rename by copying.");
-          renameByCopying(src, target);
-          return;
-        } else {
-          addWarn("Please consider leaving the [file] option of " + RollingFileAppender.class.getSimpleName() + " empty.");
-          addWarn("See also " + RENAMING_ERROR_URL);
-        }
+        addWarn("Failed to rename file [" + fromFile + "] to [" + toFile + "].");
+        addWarn("Please consider leaving the [file] option of "+ RollingFileAppender.class.getSimpleName()+" empty.");
+        addWarn("See also "+ RENAMING_ERROR_URL);
+
       }
     } else {
-      throw new RolloverFailure("File [" + src + "] does not exist.");
+      throw new RolloverFailure("File [" + from + "] does not exist.");
     }
   }
 
+  static final int BUF_SIZE = 32 * 1024;
 
-  /**
-   * Attempts tp determine whether both files are on different volumes. Returns true if we could determine that
-   * the files are on different volumes. Returns false otherwise or if an error occurred while doing the check.
-   *
-   * @param srcFile
-   * @param targetFile
-   * @return true if on different volumes, false otherwise or if an error occurred
-   */
-   boolean areOnDifferentVolumes(File srcFile, File targetFile) throws RolloverFailure {
-    if (!EnvUtil.isJDK7OrHigher())
-      return false;
-
-    File parentOfTarget = targetFile.getParentFile();
-
+  public void renameByCopying(String from, String to)
+          throws RolloverFailure {
+    BufferedInputStream bis = null;
+    BufferedOutputStream bos = null;
     try {
-      boolean onSameFileStore = FileStoreUtil.areOnSameFileStore(srcFile, parentOfTarget);
-      return !onSameFileStore;
-    } catch (RolloverFailure rf) {
-      addWarn("Error while checking file store equality", rf);
-      return false;
-    }
-  }
-
+      bis = new BufferedInputStream(new FileInputStream(from));
+      bos = new BufferedOutputStream(new FileOutputStream(to));
+      byte[] inbuf = new byte[BUF_SIZE];
+      int n;
 
+      while ((n = bis.read(inbuf)) != -1) {
+        bos.write(inbuf, 0, n);
+      }
 
+      bis.close();
+      bis = null;
+      bos.close();
+      bos = null;
 
-  public void renameByCopying(String src, String target)
-          throws RolloverFailure {
+      File fromFile = new File(from);
 
-    FileUtil fileUtil = new FileUtil(getContext());
-    fileUtil.copy(src, target);
-
-    File srcFile = new File(src);
-   if (!srcFile.delete()) {
-      addWarn("Could not delete " + src);
+      if (!fromFile.delete()) {
+        addWarn("Could not delete " + from);
+      }
+    } catch (IOException ioe) {
+      addError("Failed to rename file by copying", ioe);
+      throw new RolloverFailure("Failed to rename file by copying");
+    } finally {
+      if(bis != null) {
+        try {
+          bis.close();
+        } catch (IOException e) {
+          // ignore
+        }
+      }
+      if(bos != null) {
+        try {
+          bos.close();
+        } catch (IOException e) {
+          // ignore
+        }
+      }
     }
-
   }
 
   void createMissingTargetDirsIfNecessary(File toFile) throws RolloverFailure {
diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/RollingCalendar.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/RollingCalendar.java
index 87a02f5..f7e5bec 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/RollingCalendar.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/RollingCalendar.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/SizeAndTimeBasedArchiveRemover.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/SizeAndTimeBasedArchiveRemover.java
index f275aa5..d2d418a 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/SizeAndTimeBasedArchiveRemover.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/SizeAndTimeBasedArchiveRemover.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -26,7 +26,7 @@ public class SizeAndTimeBasedArchiveRemover extends DefaultArchiveRemover {
   public void cleanByPeriodOffset(Date now, int periodOffset) {
     Date dateOfPeriodToClean = rc.getRelativeDate(now, periodOffset);
 
-    String regex = fileNamePattern.toRegexForFixedDate(dateOfPeriodToClean);
+    String regex = fileNamePattern.toRegex(dateOfPeriodToClean);
     String stemRegex = FileFilterUtil.afterLastSlash(regex);
     File archive0 = new File(fileNamePattern.convertMultipleArguments(
         dateOfPeriodToClean, 0));
diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/TimeBasedArchiveRemover.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/TimeBasedArchiveRemover.java
index c46d1d6..6e8039a 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/TimeBasedArchiveRemover.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/TimeBasedArchiveRemover.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/TokenConverter.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/TokenConverter.java
index 4af5483..dd275eb 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/TokenConverter.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/TokenConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/sift/AbstractDiscriminator.java b/logback-core/src/main/java/ch/qos/logback/core/sift/AbstractDiscriminator.java
deleted file mode 100644
index 1c74cd6..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/sift/AbstractDiscriminator.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package ch.qos.logback.core.sift;
-
-import ch.qos.logback.core.spi.ContextAwareBase;
-
-/**
- * Base implementation of {@link Discriminator} that provides basic lifecycle management
- *
- * @author Tomasz Nurkiewicz
- * @since 3/29/13, 3:28 PM
- */
-public abstract class AbstractDiscriminator<E> extends ContextAwareBase implements Discriminator<E> {
-
-  protected boolean started;
-
-  public void start() {
-    started = true;
-  }
-
-  public void stop() {
-    started = false;
-  }
-
-  public boolean isStarted() {
-    return started;
-  }
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/sift/AppenderFactory.java b/logback-core/src/main/java/ch/qos/logback/core/sift/AppenderFactory.java
deleted file mode 100644
index f5d0b2b..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/sift/AppenderFactory.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package ch.qos.logback.core.sift;
-
-import ch.qos.logback.core.Appender;
-import ch.qos.logback.core.Context;
-import ch.qos.logback.core.joran.spi.JoranException;
-
-/**
- * Created with IntelliJ IDEA.
- * User: ceki
- * Date: 25.04.13
- * Time: 19:00
- * To change this template use File | Settings | File Templates.
- */
-public interface AppenderFactory<E> {
-  Appender<E> buildAppender(Context context, String discriminatingValue) throws JoranException;
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/sift/AbstractAppenderFactoryUsingJoran.java b/logback-core/src/main/java/ch/qos/logback/core/sift/AppenderFactoryBase.java
similarity index 52%
rename from logback-core/src/main/java/ch/qos/logback/core/sift/AbstractAppenderFactoryUsingJoran.java
rename to logback-core/src/main/java/ch/qos/logback/core/sift/AppenderFactoryBase.java
index 07ae389..4906214 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/sift/AbstractAppenderFactoryUsingJoran.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/sift/AppenderFactoryBase.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,39 +13,31 @@
  */
 package ch.qos.logback.core.sift;
 
+import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
 
 import ch.qos.logback.core.Appender;
 import ch.qos.logback.core.Context;
 import ch.qos.logback.core.joran.event.SaxEvent;
 import ch.qos.logback.core.joran.spi.JoranException;
 
-/**
- * Builds new appenders dynamically by running SiftingJoranConfigurator instance,
- * a custom configurator tailored for the contents of the sift element.
- * @param <E>
- */
-public abstract class AbstractAppenderFactoryUsingJoran<E> implements AppenderFactory<E> {
+public abstract class AppenderFactoryBase<E> {
 
   final List<SaxEvent> eventList;
-  protected String key;
-  protected Map<String, String> parentPropertyMap;
-
-  protected AbstractAppenderFactoryUsingJoran(List<SaxEvent> eventList, String key, Map<String, String> parentPropertyMap) {
-    this.eventList = removeSiftElement(eventList);
-    this.key = key;
-    this.parentPropertyMap = parentPropertyMap;
-    
+  
+  protected AppenderFactoryBase(List<SaxEvent> eventList) {
+    this.eventList = new ArrayList<SaxEvent>(eventList);
+    removeSiftElement();
   }
 
-  List<SaxEvent> removeSiftElement(List<SaxEvent> eventList) {
-    return eventList.subList(1, eventList.size() - 1);
+  void removeSiftElement() {
+    eventList.remove(0);
+    eventList.remove(eventList.size() - 1);
   }
 
   public abstract SiftingJoranConfiguratorBase<E> getSiftingJoranConfigurator(String k);
   
-  public Appender<E> buildAppender(Context context, String discriminatingValue) throws JoranException {
+  Appender<E> buildAppender(Context context, String discriminatingValue) throws JoranException {
     SiftingJoranConfiguratorBase<E> sjc = getSiftingJoranConfigurator(discriminatingValue);
     sjc.setContext(context);
     sjc.doConfigure(eventList);
diff --git a/logback-core/src/main/java/ch/qos/logback/core/sift/AppenderTracker.java b/logback-core/src/main/java/ch/qos/logback/core/sift/AppenderTracker.java
index f45c0d0..ab43698 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/sift/AppenderTracker.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/sift/AppenderTracker.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,72 +13,19 @@
  */
 package ch.qos.logback.core.sift;
 
+import java.util.List;
+
 import ch.qos.logback.core.Appender;
-import ch.qos.logback.core.Context;
 import ch.qos.logback.core.CoreConstants;
-import ch.qos.logback.core.helpers.NOPAppender;
-import ch.qos.logback.core.joran.spi.JoranException;
-import ch.qos.logback.core.spi.AbstractComponentTracker;
-import ch.qos.logback.core.spi.ContextAwareImpl;
-
-/**
- * Track appenders by key. When an appender is not used for
- * longer than {@link #DEFAULT_TIMEOUT} it is stopped and removed.
- *
- * @author Tommy Becker
- * @author Ceki Gulcu
- * @author David Roussel
- */
-public class AppenderTracker<E> extends AbstractComponentTracker<Appender<E>> {
-
-  int nopaWarningCount = 0;
-
-  final Context context;
-  final AppenderFactory<E> appenderFactory;
-  final ContextAwareImpl contextAware;
-
-  public AppenderTracker(Context context, AppenderFactory<E> appenderFactory) {
-    super();
-    this.context = context;
-    this.appenderFactory = appenderFactory;
-    this.contextAware = new ContextAwareImpl(context, this);
-  }
-
-
-  @Override
-  protected void processPriorToRemoval(Appender<E> component) {
-    component.stop();
-  }
-
-  @Override
-  protected Appender<E> buildComponent(String key) {
-    Appender<E> appender = null;
-    try {
-      appender = appenderFactory.buildAppender(context, key);
-    } catch (JoranException je) {
-      contextAware.addError("Error while building appender with discriminating value [" + key + "]");
-    }
-    if (appender == null) {
-      appender = buildNOPAppender(key);
-    }
-
-    return appender;
-  }
 
-  private NOPAppender<E> buildNOPAppender(String key) {
-    if (nopaWarningCount < CoreConstants.MAX_ERROR_COUNT) {
-      nopaWarningCount++;
-      contextAware.addError("Building NOPAppender for discriminating value [" + key + "]");
-    }
-    NOPAppender<E> nopa = new NOPAppender<E>();
-    nopa.setContext(context);
-    nopa.start();
-    return nopa;
-  }
+public interface AppenderTracker<E> {
 
-  @Override
-  protected boolean isComponentStale(Appender<E> appender) {
-    return !appender.isStarted();
-  }
+  int THRESHOLD = 30 * 60 * CoreConstants.MILLIS_IN_ONE_SECOND; // 30 minutes
 
-}
+  void put(String key, Appender<E> value, long timestamp);
+  Appender<E> get(String key, long timestamp);
+  void stopStaleAppenders(long timestamp);
+  List<String> keyList();
+  List<Appender<E>> valueList();
+  void stopAndRemoveNow(String key);
+}
\ No newline at end of file
diff --git a/logback-core/src/main/java/ch/qos/logback/core/sift/AppenderTrackerImpl.java b/logback-core/src/main/java/ch/qos/logback/core/sift/AppenderTrackerImpl.java
new file mode 100644
index 0000000..bc81897
--- /dev/null
+++ b/logback-core/src/main/java/ch/qos/logback/core/sift/AppenderTrackerImpl.java
@@ -0,0 +1,239 @@
+/**
+ * Logback: the reliable, generic, fast and flexible logging framework.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
+ *
+ * This program and the accompanying materials are dual-licensed under
+ * either the terms of the Eclipse Public License v1.0 as published by
+ * the Eclipse Foundation
+ *
+ *   or (per the licensee's choosing)
+ *
+ * under the terms of the GNU Lesser General Public License version 2.1
+ * as published by the Free Software Foundation.
+ */
+package ch.qos.logback.core.sift;
+
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import ch.qos.logback.core.Appender;
+import ch.qos.logback.core.CoreConstants;
+
+/**
+ * Track appenders by a key. When an appender is not used for
+ * longer than THRESHOLD, stop it.
+ * @author Ceki Gulcu
+ */
+public class AppenderTrackerImpl<E> implements AppenderTracker<E> {
+
+  Map<String, Entry> map = new HashMap<String, Entry>();
+ 
+  Entry head; // least recently used entries are towards the head
+  Entry tail; // most recently used entries are towards the tail
+
+  long lastCheck = 0;
+
+  AppenderTrackerImpl() {
+    head = new Entry(null, null, 0);
+    tail = head;
+  }
+
+
+  public synchronized void put(String key, Appender<E> value, long timestamp) {
+    Entry entry = map.get(key);
+    if (entry == null) {
+      entry = new Entry(key, value, timestamp);
+      map.put(key, entry);
+    }
+    moveToTail(entry);
+  }
+
+  public synchronized Appender<E> get(String key, long timestamp) {
+    Entry existing = map.get(key);
+    if (existing == null) {
+      return null;
+    } else {
+      existing.setTimestamp(timestamp);
+      moveToTail(existing);
+      return existing.value;
+    }
+  }
+
+  
+  public synchronized void stopStaleAppenders(long now) {
+    if (lastCheck + CoreConstants.MILLIS_IN_ONE_SECOND > now) {
+      return;
+    }
+    lastCheck = now;
+    while (head.value != null && isEntryStale(head,now)) {
+      Appender<E> appender = head.value;
+      appender.stop();
+      removeHead();
+    }
+  } 
+
+  /**
+   * @since 0.9.19
+   * @param key
+   */
+  public synchronized void stopAndRemoveNow(String key) {
+    Entry e = head;
+    Entry found = null;
+    while (e != tail) {
+      if(key.equals(e.key)) {
+        found = e;
+        break;
+      }
+      e = e.next;
+    }
+    if(found != null) {
+      rearrangePreexistingLinks(e);
+      map.remove(key);
+      Appender<E> appender = e.value;
+      appender.stop();
+    }
+  }
+  
+  public List<String> keyList() {
+    List<String> result = new LinkedList<String>();
+    Entry e = head;
+    while (e != tail) {
+      result.add(e.key);
+      e = e.next;
+    }
+    return result;
+  }
+  
+  
+  private boolean isEntryStale(Entry entry, long now) {
+    // stopped or improperly started appenders are considered stale
+    // see also http://jira.qos.ch/browse/LBCLASSIC-316
+    if(!entry.value.isStarted())
+      return true;
+
+    // unused appenders are also considered stale
+    return ((entry.timestamp + THRESHOLD) < now);
+  }
+
+  
+  private void removeHead() {
+    // System.out.println("RemoveHead called");
+    map.remove(head.key);
+    head = head.next;
+    head.prev = null;
+  }
+
+  private void moveToTail(Entry e) {
+    rearrangePreexistingLinks(e);
+    rearrangeTailLinks(e);
+  }
+
+  private void rearrangePreexistingLinks(Entry e) {
+    if (e.prev != null) {
+      e.prev.next = e.next;
+    }
+    if (e.next != null) {
+      e.next.prev = e.prev;
+    }
+    if (head == e) {
+      head = e.next;
+    }
+  }
+
+  private void rearrangeTailLinks(Entry e) {
+    if (head == tail) {
+      head = e;
+    }
+    Entry preTail = tail.prev;
+    if (preTail != null) {
+      preTail.next = e;
+    }
+    e.prev = preTail;
+    e.next = tail;
+    tail.prev = e;
+  }
+
+  public void dump() {
+    Entry e = head;
+    System.out.print("N:");
+    while (e != null) {
+      // System.out.print(e+"->");
+      System.out.print(e.key + ", ");
+      e = e.next;
+    }
+    System.out.println();
+  }
+
+
+
+  public List<Appender<E>> valueList() {
+    List<Appender<E>> result = new LinkedList<Appender<E>>();
+    Entry e = head;
+    while (e != tail) {
+      result.add(e.value);
+      e = e.next;
+    }
+    return result;
+  }
+  
+  // ================================================================
+  private class Entry {
+    Entry next;
+    Entry prev;
+
+    String key;
+    Appender<E> value;
+    long timestamp;
+
+    Entry(String k, Appender<E> v, long timestamp) {
+      this.key = k;
+      this.value = v;
+      this.timestamp = timestamp;
+    }
+
+//    public long getTimestamp() {
+//      return timestamp;
+//    }
+
+    public void setTimestamp(long timestamp) {
+      this.timestamp = timestamp;
+    }
+
+    @Override
+    public int hashCode() {
+      final int prime = 31;
+      int result = 1;
+      result = prime * result + ((key == null) ? 0 : key.hashCode());
+      return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+      if (this == obj)
+        return true;
+      if (obj == null)
+        return false;
+      if (getClass() != obj.getClass())
+        return false;
+      final Entry other = (Entry) obj;
+      if (key == null) {
+        if (other.key != null)
+          return false;
+      } else if (!key.equals(other.key))
+        return false;
+      if (value == null) {
+        if (other.value != null)
+          return false;
+      } else if (!value.equals(other.value))
+        return false;
+      return true;
+    }
+
+    @Override
+    public String toString() {
+      return "(" + key + ", " + value + ")";
+    }
+  }
+}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/sift/DefaultDiscriminator.java b/logback-core/src/main/java/ch/qos/logback/core/sift/DefaultDiscriminator.java
index 83dcc24..ed3c69a 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/sift/DefaultDiscriminator.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/sift/DefaultDiscriminator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,14 +13,17 @@
  */
 package ch.qos.logback.core.sift;
 
+import ch.qos.logback.core.sift.Discriminator;
 
 /**
  * @author Ceki Gücü
  */
-public class DefaultDiscriminator<E> extends AbstractDiscriminator<E> {
+public class DefaultDiscriminator<E> implements Discriminator<E> {
 
   static public final String DEFAULT = "default";
 
+  boolean started = false;
+
   public String getDiscriminatingValue(E e) {
     return DEFAULT;
   }
@@ -29,4 +32,15 @@ public class DefaultDiscriminator<E> extends AbstractDiscriminator<E> {
     return DEFAULT;
   }
 
+  public void start() {
+    started = true;
+  }
+
+  public void stop() {
+    started = false;
+  }
+
+  public boolean isStarted() {
+    return started;  
+  }
 }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/sift/Discriminator.java b/logback-core/src/main/java/ch/qos/logback/core/sift/Discriminator.java
index d800596..9ca7555 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/sift/Discriminator.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/sift/Discriminator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/sift/SiftingAppenderBase.java b/logback-core/src/main/java/ch/qos/logback/core/sift/SiftingAppenderBase.java
index 7bc7514..5816f1b 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/sift/SiftingAppenderBase.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/sift/SiftingAppenderBase.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -15,49 +15,28 @@ package ch.qos.logback.core.sift;
 
 import ch.qos.logback.core.Appender;
 import ch.qos.logback.core.AppenderBase;
-import ch.qos.logback.core.util.Duration;
+import ch.qos.logback.core.CoreConstants;
+import ch.qos.logback.core.helpers.NOPAppender;
+import ch.qos.logback.core.joran.spi.JoranException;
 
 /**
  * This appender serves as the base class for actual SiftingAppenders
  * implemented by the logback-classic and logback-access modules. In a nutshell,
  * a SiftingAppender contains other appenders which it can build dynamically
- * depending on discriminating values supplied by the event currently being
- * processed. The appender to build (dynamically) is specified as part of a
- * configuration file.
- *
+ * depending on discriminating values supplied by event currently being
+ * processed. The built appender is specified as part of a configuration file.
+ * 
  * @author Ceki Gulcu
  */
 public abstract class SiftingAppenderBase<E> extends
-        AppenderBase<E> {
+    AppenderBase<E> {
 
-  protected AppenderTracker<E> appenderTracker;
-  AppenderFactory<E> appenderFactory;
-  Duration timeout = new Duration(AppenderTracker.DEFAULT_TIMEOUT);
-  int maxAppenderCount = AppenderTracker.DEFAULT_MAX_COMPONENTS;
+  protected AppenderTracker<E> appenderTracker = new AppenderTrackerImpl<E>();
+  AppenderFactoryBase<E> appenderFactory;
 
   Discriminator<E> discriminator;
 
-  public Duration getTimeout() {
-    return timeout;
-  }
-
-  public void setTimeout(Duration timeout) {
-    this.timeout = timeout;
-  }
-
-  public int getMaxAppenderCount() {
-    return maxAppenderCount;
-  }
-
-  public void setMaxAppenderCount(int maxAppenderCount) {
-    this.maxAppenderCount = maxAppenderCount;
-  }
-
-  /**
-   * This setter is intended to be invoked by SiftAction. Customers have no reason to invoke
-   * this method directly.
-   */
-  public void setAppenderFactory(AppenderFactory<E> appenderFactory) {
+  public void setAppenderFactory(AppenderFactoryBase<E> appenderFactory) {
     this.appenderFactory = appenderFactory;
   }
 
@@ -72,14 +51,6 @@ public abstract class SiftingAppenderBase<E> extends
       addError("Discriminator has not started successfully. Aborting");
       errors++;
     }
-    if (appenderFactory == null) {
-      addError("AppenderFactory has not been set. Aborting");
-      errors++;
-    } else {
-      appenderTracker = new AppenderTracker<E>(context, appenderFactory);
-      appenderTracker.setMaxComponents(maxAppenderCount);
-      appenderTracker.setTimeout(timeout.getMilliseconds());
-    }
     if (errors == 0) {
       super.start();
     }
@@ -87,7 +58,7 @@ public abstract class SiftingAppenderBase<E> extends
 
   @Override
   public void stop() {
-    for (Appender<E> appender : appenderTracker.allComponents()) {
+    for (Appender<E> appender : appenderTracker.valueList()) {
       appender.stop();
     }
   }
@@ -99,20 +70,30 @@ public abstract class SiftingAppenderBase<E> extends
     if (!isStarted()) {
       return;
     }
+
     String discriminatingValue = discriminator.getDiscriminatingValue(event);
     long timestamp = getTimestamp(event);
-
-    Appender<E> appender = appenderTracker.getOrCreate(discriminatingValue, timestamp);
-    // marks the appender for removal as specified by the user
-    if (eventMarksEndOfLife(event)) {
-      appenderTracker.endOfLife(discriminatingValue);
+    
+    Appender<E> appender = appenderTracker.get(discriminatingValue, timestamp);
+    if (appender == null) {
+      try {
+        appender = appenderFactory.buildAppender(context, discriminatingValue);
+        if (appender == null) {
+          appender = buildNOPAppender(discriminatingValue);
+        }
+        appenderTracker.put(discriminatingValue, appender, timestamp);
+
+      } catch (JoranException e) {
+        addError("Failed to build appender for [" + discriminatingValue + "]",
+            e);
+        return;
+      }
     }
-    appenderTracker.removeStaleComponents(timestamp);
+    appenderTracker.stopStaleAppenders(timestamp);
+    
     appender.doAppend(event);
   }
 
-  protected abstract boolean eventMarksEndOfLife(E event);
-
   public Discriminator<E> getDiscriminator() {
     return discriminator;
   }
@@ -120,18 +101,30 @@ public abstract class SiftingAppenderBase<E> extends
   public void setDiscriminator(Discriminator<E> discriminator) {
     this.discriminator = discriminator;
   }
+  
+  
+  int nopaWarningCount = 0;
+  
+  NOPAppender<E> buildNOPAppender(String discriminatingValue) {
+    if(nopaWarningCount < CoreConstants.MAX_ERROR_COUNT) {
+      nopaWarningCount++;
+      addError("Failed to build an appender for discriminating value ["+discriminatingValue+"]");
+    }
+    NOPAppender<E> nopa = new NOPAppender<E>();
+    nopa.setContext(context);
+    nopa.start();
+    return nopa;
+  }
 
-
-  // sometimes one needs to close a nested appender immediately
+  // sometime one needs to close a nested appender immediately
   // for example when executing a command which has its own nested appender
   // and the command also cleans up after itself. However, an open file appender
   // will prevent the folder from being deleted
   // see http://www.qos.ch/pipermail/logback-user/2010-March/001487.html
-
   /**
    * @since 0.9.19
    */
-  public AppenderTracker<E> getAppenderTracker() {
+  public AppenderTracker getAppenderTracker() {
     return appenderTracker;
   }
 
diff --git a/logback-core/src/main/java/ch/qos/logback/core/sift/SiftingJoranConfiguratorBase.java b/logback-core/src/main/java/ch/qos/logback/core/sift/SiftingJoranConfiguratorBase.java
index fb07701..5684865 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/sift/SiftingJoranConfiguratorBase.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/sift/SiftingJoranConfiguratorBase.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -19,29 +19,17 @@ import java.util.Map;
 import ch.qos.logback.core.Appender;
 import ch.qos.logback.core.CoreConstants;
 import ch.qos.logback.core.joran.GenericConfigurator;
-import ch.qos.logback.core.joran.action.*;
+import ch.qos.logback.core.joran.action.NestedBasicPropertyIA;
+import ch.qos.logback.core.joran.action.NestedComplexPropertyIA;
 import ch.qos.logback.core.joran.event.SaxEvent;
-import ch.qos.logback.core.joran.spi.ElementSelector;
 import ch.qos.logback.core.joran.spi.Interpreter;
 import ch.qos.logback.core.joran.spi.JoranException;
-import ch.qos.logback.core.joran.spi.RuleStore;
 
 public abstract class SiftingJoranConfiguratorBase<E> extends
-        GenericConfigurator {
-
-  protected final String key;
-  protected final String value;
-  // properties inherited from the main joran run
-  protected final Map<String, String> parentPropertyMap;
-
-  protected SiftingJoranConfiguratorBase(String key, String value, Map<String, String> parentPropertyMap) {
-    this.key = key;
-    this.value = value;
-    this.parentPropertyMap = parentPropertyMap;
-  }
+    GenericConfigurator {
 
   final static String ONE_AND_ONLY_ONE_URL = CoreConstants.CODES_URL
-          + "#1andOnly1";
+      + "#1andOnly1";
 
   @Override
   protected void addImplicitRules(Interpreter interpreter) {
@@ -54,18 +42,11 @@ public abstract class SiftingJoranConfiguratorBase<E> extends
     interpreter.addImplicitAction(nestedSimpleIA);
   }
 
-  @Override
-  protected void addInstanceRules(RuleStore rs) {
-    rs.addRule(new ElementSelector("configuration/property"), new PropertyAction());
-    rs.addRule(new ElementSelector("configuration/timestamp"), new TimestampAction());
-    rs.addRule(new ElementSelector("configuration/define"), new DefinePropertyAction());
-  }
-
   abstract public Appender<E> getAppender();
 
   int errorEmmissionCount = 0;
 
-  protected void oneAndOnlyOneCheck(Map<?, ?> appenderMap) {
+  protected void oneAndOnlyOneCheck(Map appenderMap) {
     String errMsg = null;
     if (appenderMap.size() == 0) {
       errorEmmissionCount++;
@@ -73,7 +54,7 @@ public abstract class SiftingJoranConfiguratorBase<E> extends
     } else if (appenderMap.size() > 1) {
       errorEmmissionCount++;
       errMsg = "Only and only one appender can be nested the <sift> element in SiftingAppender. See also "
-              + ONE_AND_ONLY_ONE_URL;
+          + ONE_AND_ONLY_ONE_URL;
     }
 
     if (errMsg != null && errorEmmissionCount < CoreConstants.MAX_ERROR_COUNT) {
@@ -84,9 +65,4 @@ public abstract class SiftingJoranConfiguratorBase<E> extends
   public void doConfigure(final List<SaxEvent> eventList) throws JoranException {
     super.doConfigure(eventList);
   }
-
-  @Override
-  public String toString() {
-    return this.getClass().getName() + "{" + key + "=" + value + '}';
-  }
 }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/spi/AbstractComponentTracker.java b/logback-core/src/main/java/ch/qos/logback/core/spi/AbstractComponentTracker.java
deleted file mode 100644
index 33b0158..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/spi/AbstractComponentTracker.java
+++ /dev/null
@@ -1,310 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.spi;
-
-
-import ch.qos.logback.core.CoreConstants;
-
-import java.util.*;
-
-/**
- * An abstract implementation of the ComponentTracker interface. Derived classes must implement
- * {@link #buildComponent(String)}, {@link #processPriorToRemoval(Object)}, and {@link #isComponentStale(Object)}
- * methods as appropriate for their component type.
- *
- * @param <C> component type
- *
- * @author Tommy Becker
- * @author Ceki Gulcu
- * @author David Roussel
- */
-abstract public class AbstractComponentTracker<C> implements ComponentTracker<C> {
-  private static final boolean ACCESS_ORDERED = true;
-
-  // Components in lingering state last 10 seconds
-  final public static long LINGERING_TIMEOUT = 10 * CoreConstants.MILLIS_IN_ONE_SECOND;
-
-  /**
-   * The minimum amount of time that has to elapse between successive removal iterations.
-   */
-  final public static long WAIT_BETWEEN_SUCCESSIVE_REMOVAL_ITERATIONS = CoreConstants.MILLIS_IN_ONE_SECOND;
-
-  protected int maxComponents = DEFAULT_MAX_COMPONENTS;
-  protected long timeout = DEFAULT_TIMEOUT;
-
-  // an access ordered map. Least recently accessed element will be removed after a 'timeout'
-  LinkedHashMap<String, Entry<C>> liveMap = new LinkedHashMap<String, Entry<C>>(32, .75f, ACCESS_ORDERED);
-
-  // an access ordered map. Least recently accessed element will be removed after LINGERING_TIMEOUT
-  LinkedHashMap<String, Entry<C>> lingerersMap = new LinkedHashMap<String, Entry<C>>(16, .75f, ACCESS_ORDERED);
-  long lastCheck = 0;
-
-  /**
-   * Stop or clean the component.
-   *
-   * @param component
-   */
-  abstract protected void processPriorToRemoval(C component);
-
-  /**
-   * Build a component based on the key.
-   *
-   * @param key
-   * @return
-   */
-  abstract protected C buildComponent(String key);
-
-  /**
-   * Components can declare themselves stale. Such components may be
-   * removed before they time out.
-   *
-   * @param c
-   * @return
-   */
-  protected abstract boolean isComponentStale(C c);
-
-
-  public int getComponentCount() {
-    return liveMap.size() + lingerersMap.size();
-  }
-
-  /**
-   * Get an entry from the liveMap, if not found search the lingerersMap.
-   *
-   * @param key
-   * @return
-   */
-  private Entry<C> getFromEitherMap(String key) {
-    Entry<C> entry = liveMap.get(key);
-    if (entry != null)
-      return entry;
-    else {
-      return lingerersMap.get(key);
-    }
-  }
-
-  /**
-   * {@inheritDoc}
-   *
-   * <p>Note that this method is synchronized.</p>
-   *
-   * @param key {@inheritDoc}
-   * @return {@inheritDoc}
-   *
-   */
-  public synchronized C find(String key) {
-    Entry<C> entry = getFromEitherMap(key);
-    if (entry == null) return null;
-    else return entry.component;
-  }
-
-  /**
-   *  {@inheritDoc}
-   *
-   * <p>Note that this method is atomic, i.e. synchronized.</p>
-   *
-   * @param key {@inheritDoc}
-   * @param timestamp {@inheritDoc}
-   * @return {@inheritDoc}
-   */
-  public synchronized C getOrCreate(String key, long timestamp) {
-    Entry<C> entry = getFromEitherMap(key);
-    if (entry == null) {
-      C c = buildComponent(key);
-      entry = new Entry(key, c, timestamp);
-      // new entries go into the main map
-      liveMap.put(key, entry);
-    } else {
-      entry.setTimestamp(timestamp);
-    }
-    return entry.component;
-  }
-
-  /**
-   * Mark component identified by 'key' as having reached its end-of-life.
-   *
-   * @param key
-   */
-  public void endOfLife(String key) {
-    Entry entry = liveMap.remove(key);
-    if (entry == null)
-      return;
-    lingerersMap.put(key, entry);
-  }
-
-  /**
-   * Clear (and detach) components which are stale. Components which have not
-   * been accessed for more than a user-specified duration are deemed stale.
-   *
-   * @param now
-   */
-  public synchronized void removeStaleComponents(long now) {
-    if (isTooSoonForRemovalIteration(now)) return;
-    removeExcedentComponents();
-    removeStaleComponentsFromMainMap(now);
-    removeStaleComponentsFromLingerersMap(now);
-  }
-
-  private void removeExcedentComponents() {
-    genericStaleComponentRemover(liveMap, 0, byExcedent);
-  }
-
-  private void removeStaleComponentsFromMainMap(long now) {
-    genericStaleComponentRemover(liveMap, now, byTimeout);
-  }
-
-  private void removeStaleComponentsFromLingerersMap(long now) {
-    genericStaleComponentRemover(lingerersMap, now, byLingering);
-  }
-
-  private void genericStaleComponentRemover(LinkedHashMap<String, Entry<C>> map, long now,
-                                            RemovalPredicator<C> removalPredicator) {
-    Iterator<Map.Entry<String, Entry<C>>> iter = map.entrySet().iterator();
-    while (iter.hasNext()) {
-      Map.Entry<String, Entry<C>> mapEntry = iter.next();
-      Entry<C> entry = mapEntry.getValue();
-      if (removalPredicator.isSlatedForRemoval(entry, now)) {
-        iter.remove();
-        C c = entry.component;
-        processPriorToRemoval(c);
-      } else {
-        break;
-      }
-    }
-  }
-
-  private RemovalPredicator<C> byExcedent = new RemovalPredicator<C>() {
-    public boolean isSlatedForRemoval(Entry<C> entry, long timestamp) {
-      return (liveMap.size() > maxComponents);
-    }
-  };
-
-  private RemovalPredicator<C> byTimeout = new RemovalPredicator<C>() {
-    public boolean isSlatedForRemoval(Entry<C> entry, long timestamp) {
-      return isEntryStale(entry, timestamp);
-    }
-  };
-  private RemovalPredicator<C> byLingering = new RemovalPredicator<C>() {
-    public boolean isSlatedForRemoval(Entry<C> entry, long timestamp) {
-      return isEntryDoneLingering(entry, timestamp);
-    }
-  };
-
-  private boolean isTooSoonForRemovalIteration(long now) {
-    if (lastCheck + WAIT_BETWEEN_SUCCESSIVE_REMOVAL_ITERATIONS > now) {
-      return true;
-    }
-    lastCheck = now;
-    return false;
-  }
-
-  private boolean isEntryStale(Entry<C> entry, long now) {
-    // stopped or improperly started appenders are considered stale
-    // see also http://jira.qos.ch/browse/LBCLASSIC-316
-    C c = entry.component;
-    if (isComponentStale(c))
-      return true;
-
-    return ((entry.timestamp + timeout) < now);
-  }
-
-  private boolean isEntryDoneLingering(Entry entry, long now) {
-    return ((entry.timestamp + LINGERING_TIMEOUT) < now);
-  }
-
-  public Set<String> allKeys() {
-    HashSet<String> allKeys = new HashSet<String>(liveMap.keySet());
-    allKeys.addAll(lingerersMap.keySet());
-    return allKeys;
-  }
-
-  public Collection<C> allComponents() {
-    List<C> allComponents = new ArrayList<C>();
-    for (Entry<C> e : liveMap.values())
-      allComponents.add(e.component);
-    for (Entry<C> e : lingerersMap.values())
-      allComponents.add(e.component);
-
-    return allComponents;
-  }
-
-  public long getTimeout() {
-    return timeout;
-  }
-
-  public void setTimeout(long timeout) {
-    this.timeout = timeout;
-  }
-
-  public int getMaxComponents() {
-    return maxComponents;
-  }
-
-  public void setMaxComponents(int maxComponents) {
-    this.maxComponents = maxComponents;
-  }
-
-  // ================================================================
-  private interface RemovalPredicator<C> {
-    boolean isSlatedForRemoval(Entry<C> entry, long timestamp);
-  }
-  // ================================================================
-  private static class Entry<C> {
-    String key;
-    C component;
-    long timestamp;
-
-    Entry(String k, C c, long timestamp) {
-      this.key = k;
-      this.component = c;
-      this.timestamp = timestamp;
-    }
-
-    public void setTimestamp(long timestamp) {
-      this.timestamp = timestamp;
-    }
-
-    @Override
-    public int hashCode() {
-      return key.hashCode();
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-      if (this == obj)
-        return true;
-      if (obj == null)
-        return false;
-      if (getClass() != obj.getClass())
-        return false;
-      final Entry other = (Entry) obj;
-      if (key == null) {
-        if (other.key != null)
-          return false;
-      } else if (!key.equals(other.key))
-        return false;
-      if (component == null) {
-        if (other.component != null)
-          return false;
-      } else if (!component.equals(other.component))
-        return false;
-      return true;
-    }
-
-    @Override
-    public String toString() {
-      return "(" + key + ", " + component + ")";
-    }
-  }
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/spi/AppenderAttachable.java b/logback-core/src/main/java/ch/qos/logback/core/spi/AppenderAttachable.java
index e18271c..eb37502 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/spi/AppenderAttachable.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/spi/AppenderAttachable.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -45,7 +45,7 @@ public interface AppenderAttachable<E> {
   boolean isAttached(Appender<E> appender);
 
   /**
-   * Detach and processPriorToRemoval all previously added appenders.
+   * Detach and stop all previously added appenders.
    */
   void detachAndStopAllAppenders(); 
 
diff --git a/logback-core/src/main/java/ch/qos/logback/core/spi/AppenderAttachableImpl.java b/logback-core/src/main/java/ch/qos/logback/core/spi/AppenderAttachableImpl.java
index 4d3578c..0af6902 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/spi/AppenderAttachableImpl.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/spi/AppenderAttachableImpl.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -97,7 +97,7 @@ public class AppenderAttachableImpl<E> implements AppenderAttachable<E> {
   }
 
   /**
-   * Remove and processPriorToRemoval all previously attached appenders.
+   * Remove and stop all previously attached appenders.
    */
   public void detachAndStopAllAppenders() {
     for (Appender<E> a : appenderList) {
diff --git a/logback-core/src/main/java/ch/qos/logback/core/spi/ComponentTracker.java b/logback-core/src/main/java/ch/qos/logback/core/spi/ComponentTracker.java
deleted file mode 100644
index a6ba061..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/spi/ComponentTracker.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.spi;
-
-
-import ch.qos.logback.core.CoreConstants;
-
-import java.util.Collection;
-import java.util.Set;
-
-/**
- * Interface for tracking various components by key. Components which have not
- * been accessed for more than a user-specified duration are deemed stale and
- * removed. Components can also be explicitly marked as having reached their
- * {@link #endOfLife(String)} in which case they will linger for a few seconds
- * and then be removed.
- *
- * @author Tommy Becker
- * @author Ceki Gulcu
- * @author David Roussel
- *
- * @since 1.0.12
- */
-public interface ComponentTracker<C> {
-
-  /**
-   * The default timeout duration is 30 minutes
-   */
-  public final int DEFAULT_TIMEOUT = 30 * 60 * CoreConstants.MILLIS_IN_ONE_SECOND; // 30 minutes
-
-  /**
-   * By default an unlimited number of elements can be tracked.
-   */
-  int DEFAULT_MAX_COMPONENTS = Integer.MAX_VALUE;
-
-  /**
-   * Returns the number of components tracked.
-   * @return number of components
-   */
-  int getComponentCount();
-
-
-  /**
-   * Find the component identified by 'key', without updating the timestamp. Returns null if no
-   * corresponding component could be found.
-   *
-   * @param key
-   * @return corresponding component, may be null
-   */
-  C find(String key);
-
-  /**
-   * Get the component identified by 'key', updating its timestamp in the
-   * process. If the corresponding component could not be found, it is created.
-   *
-   * @param key
-   * @param timestamp
-   * @return
-   */
-  C getOrCreate(String key, long timestamp);
-
-
-  /**
-   * Remove components which are deemed stale. Components which have not
-   * been accessed for more than a user-specified duration are deemed stale.
-   *
-   * <p>If the number of components exceeds, {@link #getComponentCount()},
-   * components in excess will be removed.</p>
-   *
-   * <p>Depending on the component type, components will be cleared or stopped
-   * (as appropriate) right before removal.</p>
-   *
-   * @param now  current time in milliseconds
-   */
-  void removeStaleComponents(long now);
-
-
-  /**
-   * Mark component identified by 'key' as having reached its end-of-life. End-of-lifed
-   * components will linger for a few more seconds before being removed.
-   *
-   * @param key
-   */
-  void endOfLife(String key);
-
-  /**
-   * Returns the collection of all components tracked by this instance.
-   * @return  collection of components
-   */
-  Collection<C> allComponents();
-
-
-  /**
-   * Set of all keys in this tracker in no particular order.
-   *
-   * @return
-   */
-  Set<String> allKeys();
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/spi/ContextAware.java b/logback-core/src/main/java/ch/qos/logback/core/spi/ContextAware.java
index 3096ac8..c2d11e3 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/spi/ContextAware.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/spi/ContextAware.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/spi/ContextAwareBase.java b/logback-core/src/main/java/ch/qos/logback/core/spi/ContextAwareBase.java
index 8b8e4d2..b21e4d8 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/spi/ContextAwareBase.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/spi/ContextAwareBase.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -34,7 +34,7 @@ public class ContextAwareBase implements ContextAware {
   public ContextAwareBase() {
     declaredOrigin = this;
   }
-  public ContextAwareBase(ContextAware declaredOrigin) {
+  public ContextAwareBase(Object declaredOrigin) {
     this.declaredOrigin = declaredOrigin;
   }
 
diff --git a/logback-core/src/main/java/ch/qos/logback/core/spi/ContextAwareImpl.java b/logback-core/src/main/java/ch/qos/logback/core/spi/ContextAwareImpl.java
index a859acd..0830fd4 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/spi/ContextAwareImpl.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/spi/ContextAwareImpl.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -33,10 +33,8 @@ public class ContextAwareImpl implements ContextAware {
   protected Context context;
   final Object origin;
   
-  public ContextAwareImpl(Context context, Object origin) {
-    this.context = context;
+  public ContextAwareImpl(Object origin) {
     this.origin = origin;
-
   }
   
   protected Object getOrigin() {
diff --git a/logback-core/src/main/java/ch/qos/logback/core/spi/CyclicBufferTracker.java b/logback-core/src/main/java/ch/qos/logback/core/spi/CyclicBufferTracker.java
index 2c5cab4..d00d0cb 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/spi/CyclicBufferTracker.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/spi/CyclicBufferTracker.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,59 +13,62 @@
  */
 package ch.qos.logback.core.spi;
 
+import ch.qos.logback.core.CoreConstants;
 import ch.qos.logback.core.helpers.CyclicBuffer;
 
-import java.util.*;
-
 /**
- * CyclicBufferTracker tracks  {@link CyclicBuffer} instances.
+ * An interface for tracking cyclic buffers by key.
  *
  * @author Ceki Gücü
  */
-public class CyclicBufferTracker<E> extends AbstractComponentTracker<CyclicBuffer<E>> {
-
-  static final int DEFAULT_NUMBER_OF_BUFFERS = 64;
-
-  static final int DEFAULT_BUFFER_SIZE = 256;
-  int bufferSize = DEFAULT_BUFFER_SIZE;
-
-
-  public CyclicBufferTracker() {
-    super();
-    setMaxComponents(DEFAULT_NUMBER_OF_BUFFERS);
-  }
-
-  public int getBufferSize() {
-    return bufferSize;
-  }
-
-  public void setBufferSize(int bufferSize) {
-    this.bufferSize = bufferSize;
-  }
-
-  @Override
-  protected void processPriorToRemoval(CyclicBuffer<E> component) {
-    component.clear();
-  }
-
-  @Override
-  protected CyclicBuffer<E> buildComponent(String key) {
-    return  new CyclicBuffer<E>(bufferSize);
-  }
-
-  @Override
-  protected boolean isComponentStale(CyclicBuffer<E> eCyclicBuffer) {
-    return false;
-  }
-
-  // for testing purposes
-  List<String> liveKeysAsOrderedList() {
-    return new ArrayList<String>(liveMap.keySet());
-  }
-
-  List<String> lingererKeysAsOrderedList() {
-    return new ArrayList<String>(lingerersMap.keySet());
-
-  }
-
+public interface CyclicBufferTracker<E> {
+
+  int DEFAULT_BUFFER_SIZE = 256;
+  int DEFAULT_NUMBER_OF_BUFFERS = 64;
+
+  int THRESHOLD = 30 * 60 * CoreConstants.MILLIS_IN_ONE_SECOND; // 30 minutes
+
+  int getBufferSize();
+
+  void setBufferSize(int size);
+  int getMaxNumberOfBuffers();
+
+  /**
+   * Set the maximum number of tracked buffers. After reaching the maximum number of
+   * buffers, the creation of a new buffer implies the removal of the least recently
+   * used buffer.
+   *
+   * @param maxNumBuffers
+   */
+  void setMaxNumberOfBuffers(int maxNumBuffers);
+
+
+  /**
+   * Get the cyclic buffer identified by 'key', updating its timestamp in the process.
+   * If there is no such buffer, create it. If the current number of buffers is
+   * above or equal to 'maxNumBuffers' then the least recently accessed buffer is removed.
+   *
+   * @param key
+   * @param timestamp
+   * @return
+   */
+  CyclicBuffer<E> getOrCreate(String key, long timestamp);
+
+  /**
+   * Remove a cyclic buffer identified by its key.
+   */
+  void removeBuffer(String key);
+
+  /**
+   * Clear (and detach) buffers which are stale.
+   *
+   * @param now
+   */
+  void clearStaleBuffers(long now);
+
+  /**
+   * The size of the internal map/list/collection holding the cyclic buffers.
+   * @return  size of internal collection
+   */
+  int size();
 }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/spi/CyclicBufferTrackerImpl.java b/logback-core/src/main/java/ch/qos/logback/core/spi/CyclicBufferTrackerImpl.java
new file mode 100644
index 0000000..9a70712
--- /dev/null
+++ b/logback-core/src/main/java/ch/qos/logback/core/spi/CyclicBufferTrackerImpl.java
@@ -0,0 +1,229 @@
+/**
+ * Logback: the reliable, generic, fast and flexible logging framework.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
+ *
+ * This program and the accompanying materials are dual-licensed under
+ * either the terms of the Eclipse Public License v1.0 as published by
+ * the Eclipse Foundation
+ *
+ *   or (per the licensee's choosing)
+ *
+ * under the terms of the GNU Lesser General Public License version 2.1
+ * as published by the Free Software Foundation.
+ */
+package ch.qos.logback.core.spi;
+
+import ch.qos.logback.core.CoreConstants;
+import ch.qos.logback.core.helpers.CyclicBuffer;
+
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author Ceki Gücü
+ */
+public class CyclicBufferTrackerImpl<E> implements CyclicBufferTracker<E> {
+
+  int bufferSize = DEFAULT_BUFFER_SIZE;
+  int maxNumBuffers = DEFAULT_NUMBER_OF_BUFFERS;
+  int bufferCount = 0;
+
+  // 5 minutes
+  static final int DELAY_BETWEEN_CLEARING_STALE_BUFFERS = 300 * CoreConstants.MILLIS_IN_ONE_SECOND;
+
+
+  boolean isStarted = false;
+
+  private Map<String, Entry> map = new HashMap<String, Entry>();
+
+  private Entry head; // least recently used entries are towards the head
+  private Entry tail; // most recently used entries are towards the tail
+  long lastCheck = 0;
+
+
+  public CyclicBufferTrackerImpl() {
+    head = new Entry(null, null, 0);
+    tail = head;
+  }
+
+  public int getBufferSize() {
+    return bufferSize;
+  }
+
+  public void setBufferSize(int bufferSize) {
+    this.bufferSize = bufferSize;
+  }
+
+  public int getMaxNumberOfBuffers() {
+    return maxNumBuffers;
+  }
+
+  public void setMaxNumberOfBuffers(int maxNumBuffers) {
+    this.maxNumBuffers = maxNumBuffers;
+  }
+
+  public CyclicBuffer<E> getOrCreate(String key, long timestamp) {
+    Entry existing = map.get(key);
+    if (existing == null) {
+      return processNewEntry(key, timestamp);
+    } else {
+      existing.setTimestamp(timestamp);
+      moveToTail(existing);
+      return existing.value;
+    }
+  }
+
+  public void removeBuffer(String key) {
+    Entry existing = map.get(key);
+    if (existing != null) {
+      bufferCount--;
+      map.remove(key);
+      unlink(existing);
+      CyclicBuffer<E> cb = existing.value;
+      if(cb != null) {
+        cb.clear();
+      }
+    }
+  }
+
+  private CyclicBuffer<E> processNewEntry(String key, long timestamp) {
+    CyclicBuffer<E> cb = new CyclicBuffer<E>(bufferSize);
+    Entry entry = new Entry(key, cb, timestamp);
+    map.put(key, entry);
+    bufferCount++;
+    linkBeforeTail(entry);
+    if (bufferCount >= maxNumBuffers) {
+      removeHead();
+    }
+    return cb;
+  }
+
+  private void removeHead() {
+    CyclicBuffer cb = head.value;
+    if (cb != null) {
+      cb.clear();
+    }
+    map.remove(head.key);
+    bufferCount--;
+    head = head.next;
+    head.prev = null;
+  }
+
+  private void moveToTail(Entry e) {
+    unlink(e);
+    linkBeforeTail(e);
+  }
+
+  private void unlink(Entry e) {
+    if (e.prev != null) {
+      e.prev.next = e.next;
+    }
+    if (e.next != null) {
+      e.next.prev = e.prev;
+    }
+    if (head == e) {
+      head = e.next;
+    }
+  }
+
+
+  public synchronized void clearStaleBuffers(long now) {
+    if (lastCheck + DELAY_BETWEEN_CLEARING_STALE_BUFFERS > now) {
+      return;
+    }
+    lastCheck = now;
+
+    while (head.value != null && isEntryStale(head, now)) {
+      removeHead();
+    }
+  }
+
+  public int size() {
+    return map.size();
+  }
+
+  private boolean isEntryStale(Entry entry, long now) {
+    return ((entry.timestamp + THRESHOLD) < now);
+  }
+
+  List<String> keyList() {
+    List<String> result = new LinkedList<String>();
+    Entry e = head;
+    while (e != tail) {
+      result.add(e.key);
+      e = e.next;
+    }
+    return result;
+  }
+
+  private void linkBeforeTail(Entry e) {
+    if (head == tail) {
+      head = e;
+    }
+    Entry preTail = tail.prev;
+    if (preTail != null) {
+      preTail.next = e;
+    }
+    e.prev = preTail;
+    e.next = tail;
+    tail.prev = e;
+  }
+
+  // ================================================================
+
+  private class Entry {
+    Entry next;
+    Entry prev;
+
+    String key;
+    CyclicBuffer<E> value;
+    long timestamp;
+
+    Entry(String k, CyclicBuffer<E> v, long timestamp) {
+      this.key = k;
+      this.value = v;
+      this.timestamp = timestamp;
+    }
+
+    public void setTimestamp(long timestamp) {
+      this.timestamp = timestamp;
+    }
+
+    @Override
+    public int hashCode() {
+      final int prime = 31;
+      int result = 1;
+      result = prime * result + ((key == null) ? 0 : key.hashCode());
+      return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+      if (this == obj)
+        return true;
+      if (obj == null)
+        return false;
+      if (getClass() != obj.getClass())
+        return false;
+      final Entry other = (Entry) obj;
+      if (key == null) {
+        if (other.key != null)
+          return false;
+      } else if (!key.equals(other.key))
+        return false;
+      if (value == null) {
+        if (other.value != null)
+          return false;
+      } else if (!value.equals(other.value))
+        return false;
+      return true;
+    }
+
+    @Override
+    public String toString() {
+      return "(" + key + ", " + value + ")";
+    }
+  }
+}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/spi/DeferredProcessingAware.java b/logback-core/src/main/java/ch/qos/logback/core/spi/DeferredProcessingAware.java
index 76969b2..f7dc894 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/spi/DeferredProcessingAware.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/spi/DeferredProcessingAware.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/spi/FilterAttachable.java b/logback-core/src/main/java/ch/qos/logback/core/spi/FilterAttachable.java
index 2701ab9..1514470 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/spi/FilterAttachable.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/spi/FilterAttachable.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/spi/FilterAttachableImpl.java b/logback-core/src/main/java/ch/qos/logback/core/spi/FilterAttachableImpl.java
index d90813c..2f7bfe4 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/spi/FilterAttachableImpl.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/spi/FilterAttachableImpl.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/spi/FilterReply.java b/logback-core/src/main/java/ch/qos/logback/core/spi/FilterReply.java
index 128fb2f..cca1946 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/spi/FilterReply.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/spi/FilterReply.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/spi/LifeCycle.java b/logback-core/src/main/java/ch/qos/logback/core/spi/LifeCycle.java
index a6761f6..3d05dda 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/spi/LifeCycle.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/spi/LifeCycle.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/spi/LogbackLock.java b/logback-core/src/main/java/ch/qos/logback/core/spi/LogbackLock.java
index 03137f4..dff4d96 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/spi/LogbackLock.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/spi/LogbackLock.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/spi/PreSerializationTransformer.java b/logback-core/src/main/java/ch/qos/logback/core/spi/PreSerializationTransformer.java
index 203f5c8..e8211a8 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/spi/PreSerializationTransformer.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/spi/PreSerializationTransformer.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/spi/PropertyContainer.java b/logback-core/src/main/java/ch/qos/logback/core/spi/PropertyContainer.java
index 448ef93..0b2e073 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/spi/PropertyContainer.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/spi/PropertyContainer.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,11 +13,7 @@
  */
 package ch.qos.logback.core.spi;
 
-import java.util.Map;
-
 public interface PropertyContainer {
 
   String getProperty(String key);
-  
-  Map<String, String> getCopyOfPropertyMap();
 }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/spi/PropertyDefiner.java b/logback-core/src/main/java/ch/qos/logback/core/spi/PropertyDefiner.java
index 7027690..f59e956 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/spi/PropertyDefiner.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/spi/PropertyDefiner.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/status/ErrorStatus.java b/logback-core/src/main/java/ch/qos/logback/core/status/ErrorStatus.java
index 8f5f470..5df0500 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/status/ErrorStatus.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/status/ErrorStatus.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/status/InfoStatus.java b/logback-core/src/main/java/ch/qos/logback/core/status/InfoStatus.java
index 08fb01d..9442636 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/status/InfoStatus.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/status/InfoStatus.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/status/NopStatusListener.java b/logback-core/src/main/java/ch/qos/logback/core/status/NopStatusListener.java
deleted file mode 100644
index 9a630ed..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/status/NopStatusListener.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.status;
-
-/**
- * A no-operation (nop) StatusListener
- *
- * @author Ceki Gücü
- * @since 1.0.8
- */
-public class NopStatusListener implements StatusListener {
-
-  public void addStatusEvent(Status status) {
-   // nothing to do
-  }
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/status/OnConsoleStatusListener.java b/logback-core/src/main/java/ch/qos/logback/core/status/OnConsoleStatusListener.java
index ca36171..5a4cf33 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/status/OnConsoleStatusListener.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/status/OnConsoleStatusListener.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -14,24 +14,76 @@
 package ch.qos.logback.core.status;
 
 import ch.qos.logback.core.Context;
+import ch.qos.logback.core.spi.ContextAwareBase;
+import ch.qos.logback.core.spi.LifeCycle;
+import ch.qos.logback.core.util.StatusPrinter;
 
-import java.io.PrintStream;
+import java.util.List;
 
 /**
- * Print all new incoming status messages on the console (System.out).
+ * Print all new incoming status messages on the console.
  *
  * @author Ceki Gülcü
  */
-public class OnConsoleStatusListener extends OnPrintStreamStatusListenerBase {
+public class OnConsoleStatusListener extends ContextAwareBase implements StatusListener, LifeCycle {
 
-  @Override
-  protected PrintStream getPrintStream() {
-    return System.out;
+
+  static final long DEFAULT_RESTROSPECTIVE = 300;
+  boolean isStarted = false;
+  long retrospective = DEFAULT_RESTROSPECTIVE;
+
+  private void print(Status status) {
+    StringBuilder sb = new StringBuilder();
+    StatusPrinter.buildStr(sb, "", status);
+    System.out.print(sb);
+  }
+
+  public void addStatusEvent(Status status) {
+    if (!isStarted)
+      return;
+    print(status);
+  }
+
+  /**
+   * Print status messages retrospectively
+   */
+  private void retrospectivePrint() {
+    long now = System.currentTimeMillis();
+    StatusManager sm = context.getStatusManager();
+    List<Status> statusList = sm.getCopyOfStatusList();
+    for (Status status : statusList) {
+      long timestamp = status.getDate();
+      if (now - timestamp < retrospective) {
+        print(status);
+      }
+    }
+  }
+
+  public void start() {
+    isStarted = true;
+    if (retrospective > 0) {
+      retrospectivePrint();
+    }
+  }
+
+  public void setRetrospective(long retrospective) {
+    this.retrospective = retrospective;
+  }
+
+  public long getRetrospective() {
+    return retrospective;
+  }
+
+  public void stop() {
+    isStarted = false;
+  }
+
+  public boolean isStarted() {
+    return isStarted;
   }
 
   /**
-   * This utility method adds a new OnConsoleStatusListener to the context
-   * passed as parameter.
+   * This utility method adds a new OnConsoleStatusListener to the context passed as parameter.
    *
    * @param context
    * @since 1.0.1
@@ -42,6 +94,4 @@ public class OnConsoleStatusListener extends OnPrintStreamStatusListenerBase {
     onConsoleStatusListener.start();
     context.getStatusManager().add(onConsoleStatusListener);
   }
-
-
 }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/status/OnErrorConsoleStatusListener.java b/logback-core/src/main/java/ch/qos/logback/core/status/OnErrorConsoleStatusListener.java
deleted file mode 100644
index 7558bf9..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/status/OnErrorConsoleStatusListener.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.status;
-
-import java.io.PrintStream;
-
-/**
- * Print all new incoming status messages on the error console (System.err).
- *
- * @author Ceki Gücü
- * @since 1.0.8
- */
-public class OnErrorConsoleStatusListener extends OnPrintStreamStatusListenerBase {
-
-  @Override
-  protected PrintStream getPrintStream() {
-    return System.err;
-  }
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/status/OnPrintStreamStatusListenerBase.java b/logback-core/src/main/java/ch/qos/logback/core/status/OnPrintStreamStatusListenerBase.java
deleted file mode 100644
index 397d2ad..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/status/OnPrintStreamStatusListenerBase.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.status;
-
-import ch.qos.logback.core.spi.ContextAwareBase;
-import ch.qos.logback.core.spi.LifeCycle;
-import ch.qos.logback.core.util.StatusPrinter;
-
-import java.io.PrintStream;
-import java.util.List;
-
-/**
- *  Print all new incoming status messages on the on the designated PrintStream.
- * @author Ceki Gücü
- */
-abstract class OnPrintStreamStatusListenerBase extends ContextAwareBase implements StatusListener, LifeCycle {
-
-  boolean isStarted = false;
-
-  static final long DEFAULT_RETROSPECTIVE = 300;
-  long retrospective = DEFAULT_RETROSPECTIVE;
-
-
-  /**
-   * The PrintStream used by derived classes
-   * @return
-   */
-  abstract protected PrintStream getPrintStream();
-
-  private void print(Status status) {
-    StringBuilder sb = new StringBuilder();
-    StatusPrinter.buildStr(sb, "", status);
-    getPrintStream().print(sb);
-  }
-
-  public void addStatusEvent(Status status) {
-    if (!isStarted)
-      return;
-    print(status);
-  }
-
-  /**
-   * Print status messages retrospectively
-   */
-  private void retrospectivePrint() {
-    if(context == null)
-      return;
-    long now = System.currentTimeMillis();
-    StatusManager sm = context.getStatusManager();
-    List<Status> statusList = sm.getCopyOfStatusList();
-    for (Status status : statusList) {
-      long timestamp = status.getDate();
-      if (now - timestamp < retrospective) {
-        print(status);
-      }
-    }
-  }
-
-  public void start() {
-    isStarted = true;
-    if (retrospective > 0) {
-      retrospectivePrint();
-    }
-  }
-
-  public void setRetrospective(long retrospective) {
-    this.retrospective = retrospective;
-  }
-
-  public long getRetrospective() {
-    return retrospective;
-  }
-
-  public void stop() {
-    isStarted = false;
-  }
-
-  public boolean isStarted() {
-    return isStarted;
-  }
-
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/status/Status.java b/logback-core/src/main/java/ch/qos/logback/core/status/Status.java
index d571d8d..5412564 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/status/Status.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/status/Status.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/status/StatusBase.java b/logback-core/src/main/java/ch/qos/logback/core/status/StatusBase.java
index 67d0da1..4b58263 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/status/StatusBase.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/status/StatusBase.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -114,7 +114,7 @@ abstract public class StatusBase implements Status {
    * @Override
    */
   public String toString() {
-    StringBuilder buf = new StringBuilder();
+    StringBuffer buf = new StringBuffer();
     switch (getEffectiveLevel()) {
     case INFO:
       buf.append("INFO");
diff --git a/logback-core/src/main/java/ch/qos/logback/core/status/StatusUtil.java b/logback-core/src/main/java/ch/qos/logback/core/status/StatusChecker.java
similarity index 60%
copy from logback-core/src/main/java/ch/qos/logback/core/status/StatusUtil.java
copy to logback-core/src/main/java/ch/qos/logback/core/status/StatusChecker.java
index f8c803f..cb7e797 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/status/StatusUtil.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/status/StatusChecker.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,75 +13,28 @@
  */
 package ch.qos.logback.core.status;
 
-import ch.qos.logback.core.Context;
-import ch.qos.logback.core.CoreConstants;
-
-import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-public class StatusUtil {
+import ch.qos.logback.core.Context;
+import ch.qos.logback.core.CoreConstants;
+
+import static ch.qos.logback.core.status.StatusUtil.filterStatusListByTimeThreshold;
+
+public class StatusChecker {
 
   StatusManager sm;
 
-  public StatusUtil(StatusManager sm) {
+  public StatusChecker(StatusManager sm) {
     this.sm = sm;
   }
 
-  public StatusUtil(Context context) {
+  public StatusChecker(Context context) {
     this.sm = context.getStatusManager();
   }
 
-  /**
-   * Returns true if the StatusManager associated with the context passed
-   * as parameter has one or more StatusListener instances registered. Returns
-   * false otherwise.
-   *
-   * @param context
-   * @return true if one or more StatusListeners registered, false otherwise
-   * @since 1.0.8
-   */
-  static public boolean contextHasStatusListener(Context context) {
-    StatusManager sm = context.getStatusManager();
-    if(sm == null)
-      return false;
-    List<StatusListener> listeners = sm.getCopyOfStatusListenerList();
-    if(listeners == null || listeners.size() == 0)
-      return false;
-    else
-      return true;
-  }
-
-  static public List<Status> filterStatusListByTimeThreshold(List<Status> rawList, long threshold) {
-    List<Status> filteredList = new ArrayList<Status>();
-    for (Status s : rawList) {
-      if (s.getDate() >= threshold)
-        filteredList.add(s);
-    }
-    return filteredList;
-  }
-
-  public void addStatus(Status status) {
-    if (sm != null) {
-      sm.add(status);
-    }
-  }
-
-  public void addInfo(Object caller, String msg) {
-    addStatus(new InfoStatus(msg, caller));
-  }
-
-  public void addWarn(Object caller, String msg) {
-    addStatus(new WarnStatus(msg, caller));
-  }
-
-  public void addError(Object caller, String msg,
-      Throwable t) {
-    addStatus(new ErrorStatus(msg, caller, t));
-  }
-
   public boolean hasXMLParsingErrors(long threshold) {
     return containsMatch(threshold, Status.ERROR, CoreConstants.XML_PARSING);
   }
@@ -119,6 +72,7 @@ public class StatusUtil {
       }
     }
     return false;
+
   }
 
   public boolean containsMatch(int level, String regex) {
@@ -150,10 +104,10 @@ public class StatusUtil {
     return count;
   }
 
-  public boolean containsException(Class<?> exceptionType) {
-    Iterator<Status> stati = sm.getCopyOfStatusList().iterator();
+  public boolean containsException(Class exceptionType) {
+    Iterator stati = sm.getCopyOfStatusList().iterator();
     while (stati.hasNext()) {
-      Status status = stati.next();
+      Status status = (Status) stati.next();
       Throwable t = status.getThrowable();
       if (t != null && t.getClass().getName().equals(exceptionType.getName())) {
         return true;
@@ -164,22 +118,20 @@ public class StatusUtil {
 
   /**
    * Return the time of last reset. -1 if last reset time could not be found
-   *
-   * @return time of last reset or -1
+   * @return  time of last reset or -1
    */
   public long timeOfLastReset() {
     List<Status> statusList = sm.getCopyOfStatusList();
-    if (statusList == null)
+    if(statusList == null)
       return -1;
 
     int len = statusList.size();
-    for (int i = len - 1; i >= 0; i--) {
+    for(int i = len-1; i >= 0; i--) {
       Status s = statusList.get(i);
-      if (CoreConstants.RESET_MSG_PREFIX.equals(s.getMessage())) {
+      if(CoreConstants.RESET_MSG_PREFIX.equals(s.getMessage())) {
         return s.getDate();
       }
     }
     return -1;
   }
-
 }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/status/StatusListener.java b/logback-core/src/main/java/ch/qos/logback/core/status/StatusListener.java
index 5d209ce..35e1229 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/status/StatusListener.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/status/StatusListener.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/status/StatusListenerAsList.java b/logback-core/src/main/java/ch/qos/logback/core/status/StatusListenerAsList.java
index f1618b9..95c36fe 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/status/StatusListenerAsList.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/status/StatusListenerAsList.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/status/StatusManager.java b/logback-core/src/main/java/ch/qos/logback/core/status/StatusManager.java
index 75c50bc..5f2d813 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/status/StatusManager.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/status/StatusManager.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/status/StatusUtil.java b/logback-core/src/main/java/ch/qos/logback/core/status/StatusUtil.java
index f8c803f..c48e3ed 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/status/StatusUtil.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/status/StatusUtil.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -14,46 +14,12 @@
 package ch.qos.logback.core.status;
 
 import ch.qos.logback.core.Context;
-import ch.qos.logback.core.CoreConstants;
 
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
 
 public class StatusUtil {
 
-  StatusManager sm;
-
-  public StatusUtil(StatusManager sm) {
-    this.sm = sm;
-  }
-
-  public StatusUtil(Context context) {
-    this.sm = context.getStatusManager();
-  }
-
-  /**
-   * Returns true if the StatusManager associated with the context passed
-   * as parameter has one or more StatusListener instances registered. Returns
-   * false otherwise.
-   *
-   * @param context
-   * @return true if one or more StatusListeners registered, false otherwise
-   * @since 1.0.8
-   */
-  static public boolean contextHasStatusListener(Context context) {
-    StatusManager sm = context.getStatusManager();
-    if(sm == null)
-      return false;
-    List<StatusListener> listeners = sm.getCopyOfStatusListenerList();
-    if(listeners == null || listeners.size() == 0)
-      return false;
-    else
-      return true;
-  }
-
   static public List<Status> filterStatusListByTimeThreshold(List<Status> rawList, long threshold) {
     List<Status> filteredList = new ArrayList<Status>();
     for (Status s : rawList) {
@@ -63,123 +29,26 @@ public class StatusUtil {
     return filteredList;
   }
 
-  public void addStatus(Status status) {
+  static public void addStatus(Context context, Status status) {
+    if (context == null) {
+      return;
+    }
+    StatusManager sm = context.getStatusManager();
     if (sm != null) {
       sm.add(status);
     }
   }
-
-  public void addInfo(Object caller, String msg) {
-    addStatus(new InfoStatus(msg, caller));
+ 
+  static public void addInfo(Context context, Object caller, String msg) {
+    addStatus(context, new InfoStatus(msg, caller));
   }
 
-  public void addWarn(Object caller, String msg) {
-    addStatus(new WarnStatus(msg, caller));
+  static public void addWarn(Context context, Object caller, String msg) {
+    addStatus(context, new WarnStatus(msg, caller));
   }
-
-  public void addError(Object caller, String msg,
+  
+  static public void addError(Context context, Object caller, String msg,
       Throwable t) {
-    addStatus(new ErrorStatus(msg, caller, t));
-  }
-
-  public boolean hasXMLParsingErrors(long threshold) {
-    return containsMatch(threshold, Status.ERROR, CoreConstants.XML_PARSING);
-  }
-
-  public boolean noXMLParsingErrorsOccurred(long threshold) {
-    return !hasXMLParsingErrors(threshold);
-  }
-
-  public int getHighestLevel(long threshold) {
-    List<Status> filteredList = filterStatusListByTimeThreshold(sm.getCopyOfStatusList(), threshold);
-    int maxLevel = Status.INFO;
-    for (Status s : filteredList) {
-      if (s.getLevel() > maxLevel)
-        maxLevel = s.getLevel();
-    }
-    return maxLevel;
-  }
-
-  public boolean isErrorFree(long threshold) {
-    return Status.ERROR > getHighestLevel(threshold);
+    addStatus(context, new ErrorStatus(msg, caller, t));
   }
-
-  public boolean containsMatch(long threshold, int level, String regex) {
-    List<Status> filteredList = filterStatusListByTimeThreshold(sm.getCopyOfStatusList(), threshold);
-    Pattern p = Pattern.compile(regex);
-
-    for (Status status : filteredList) {
-      if (level != status.getLevel()) {
-        continue;
-      }
-      String msg = status.getMessage();
-      Matcher matcher = p.matcher(msg);
-      if (matcher.lookingAt()) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  public boolean containsMatch(int level, String regex) {
-    return containsMatch(0, level, regex);
-  }
-
-  public boolean containsMatch(String regex) {
-    Pattern p = Pattern.compile(regex);
-    for (Status status : sm.getCopyOfStatusList()) {
-      String msg = status.getMessage();
-      Matcher matcher = p.matcher(msg);
-      if (matcher.lookingAt()) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  public int matchCount(String regex) {
-    int count = 0;
-    Pattern p = Pattern.compile(regex);
-    for (Status status : sm.getCopyOfStatusList()) {
-      String msg = status.getMessage();
-      Matcher matcher = p.matcher(msg);
-      if (matcher.lookingAt()) {
-        count++;
-      }
-    }
-    return count;
-  }
-
-  public boolean containsException(Class<?> exceptionType) {
-    Iterator<Status> stati = sm.getCopyOfStatusList().iterator();
-    while (stati.hasNext()) {
-      Status status = stati.next();
-      Throwable t = status.getThrowable();
-      if (t != null && t.getClass().getName().equals(exceptionType.getName())) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  /**
-   * Return the time of last reset. -1 if last reset time could not be found
-   *
-   * @return time of last reset or -1
-   */
-  public long timeOfLastReset() {
-    List<Status> statusList = sm.getCopyOfStatusList();
-    if (statusList == null)
-      return -1;
-
-    int len = statusList.size();
-    for (int i = len - 1; i >= 0; i--) {
-      Status s = statusList.get(i);
-      if (CoreConstants.RESET_MSG_PREFIX.equals(s.getMessage())) {
-        return s.getDate();
-      }
-    }
-    return -1;
-  }
-
 }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/status/ViewStatusMessagesServletBase.java b/logback-core/src/main/java/ch/qos/logback/core/status/ViewStatusMessagesServletBase.java
index 59f2581..dd0f400 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/status/ViewStatusMessagesServletBase.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/status/ViewStatusMessagesServletBase.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/status/WarnStatus.java b/logback-core/src/main/java/ch/qos/logback/core/status/WarnStatus.java
index 6280dd5..8685dfd 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/status/WarnStatus.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/status/WarnStatus.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/subst/Node.java b/logback-core/src/main/java/ch/qos/logback/core/subst/Node.java
deleted file mode 100644
index e98758a..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/subst/Node.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.subst;
-
-public class Node {
-
-  enum Type {LITERAL, VARIABLE}
-
-  Type type;
-  Object payload;
-  Object defaultPart;
-  Node next;
-
-
-  public Node(Type type, Object payload) {
-    this.type = type;
-    this.payload = payload;
-  }
-
-
-  public Node(Type type, Object payload, Object defaultPart) {
-    this.type = type;
-    this.payload = payload;
-    this.defaultPart = defaultPart;
-  }
-
-  void append(Node newNode) {
-    if(newNode == null)
-      return;
-    Node n = this;
-    while(true) {
-      if(n.next == null) {
-        n.next = newNode;
-        return;
-      }
-      n = n.next;
-    }
-  }
-
-  @Override
-  public String toString() {
-    switch (type) {
-      case LITERAL:
-        return "Node{" +
-                "type=" + type +
-                ", payload='" + payload +
-                "'}";
-      case VARIABLE:
-        StringBuilder payloadBuf = new StringBuilder();
-        StringBuilder defaultPartBuf2 = new StringBuilder();
-        if (defaultPart != null)
-          recursive((Node) defaultPart, defaultPartBuf2);
-
-        recursive((Node) payload, payloadBuf);
-        String r = "Node{" +
-                "type=" + type +
-                ", payload='" + payloadBuf.toString()+"'";
-        if (defaultPart != null)
-          r += ", defaultPart=" + defaultPartBuf2.toString();
-        r += '}';
-        return r;
-    }
-    return null;
-  }
-
-  public void dump() {
-    System.out.print(this.toString());
-    System.out.print(" -> ");
-    if(next != null) {
-      next.dump();
-    }  else {
-      System.out.print(" null");
-    }
-  }
-
-  void recursive(Node n, StringBuilder sb) {
-    Node c = n;
-    while (c != null) {
-      sb.append(c.toString()).append(" --> ");
-      c = c.next;
-    }
-    sb.append("null ");
-  }
-
-  public void setNext(Node n) {
-    this.next = n;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) return true;
-    if (o == null || getClass() != o.getClass()) return false;
-
-    Node node = (Node) o;
-
-    if (type != node.type) return false;
-    if (payload != null ? !payload.equals(node.payload) : node.payload != null) return false;
-    if (defaultPart != null ? !defaultPart.equals(node.defaultPart) : node.defaultPart != null) return false;
-    if (next != null ? !next.equals(node.next) : node.next != null) return false;
-
-
-    return true;
-  }
-
-  @Override
-  public int hashCode() {
-    int result = type != null ? type.hashCode() : 0;
-    result = 31 * result + (payload != null ? payload.hashCode() : 0);
-    result = 31 * result + (defaultPart != null ? defaultPart.hashCode() : 0);
-    result = 31 * result + (next != null ? next.hashCode() : 0);
-    return result;
-  }
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/subst/NodeToStringTransformer.java b/logback-core/src/main/java/ch/qos/logback/core/subst/NodeToStringTransformer.java
deleted file mode 100644
index 2847bc2..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/subst/NodeToStringTransformer.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.subst;
-
-import ch.qos.logback.core.CoreConstants;
-import ch.qos.logback.core.spi.PropertyContainer;
-import ch.qos.logback.core.spi.ScanException;
-import ch.qos.logback.core.util.OptionHelper;
-
-import java.util.List;
-import java.util.Stack;
-
-/**
- * Compiles a previously parsed Node chain into a String.
- *
- * @author Ceki Gücü
- */
-public class NodeToStringTransformer {
-
-  final Node node;
-  final PropertyContainer propertyContainer0;
-  final PropertyContainer propertyContainer1;
-
-  public NodeToStringTransformer(Node node, PropertyContainer propertyContainer0, PropertyContainer propertyContainer1) {
-    this.node = node;
-    this.propertyContainer0 = propertyContainer0;
-    this.propertyContainer1 = propertyContainer1;
-  }
-
-  public NodeToStringTransformer(Node node, PropertyContainer propertyContainer0) {
-    this(node, propertyContainer0, null);
-  }
-
-  public static String substituteVariable(String input, PropertyContainer pc0, PropertyContainer pc1) throws ScanException {
-    Node node = tokenizeAndParseString(input);
-    NodeToStringTransformer nodeToStringTransformer = new NodeToStringTransformer(node, pc0, pc1);
-    return nodeToStringTransformer.transform();
-  }
-
-  private static Node tokenizeAndParseString(String value) throws ScanException {
-    Tokenizer tokenizer = new Tokenizer(value);
-    List<Token> tokens = tokenizer.tokenize();
-    Parser parser = new Parser(tokens);
-    return parser.parse();
-  }
-
-  public String transform() throws ScanException {
-    StringBuilder stringBuilder = new StringBuilder();
-    compileNode(node, stringBuilder, new Stack<Node>());
-    return stringBuilder.toString();
-  }
-
-  private void compileNode(Node inputNode, StringBuilder stringBuilder, Stack<Node> cycleCheckStack) throws ScanException {
-    Node n = inputNode;
-    while (n != null) {
-      switch (n.type) {
-        case LITERAL:
-          handleLiteral(n, stringBuilder);
-          break;
-        case VARIABLE:
-          handleVariable(n, stringBuilder, cycleCheckStack);
-          break;
-      }
-      n = n.next;
-    }
-  }
-
-  private void handleVariable(Node n, StringBuilder stringBuilder, Stack<Node> cycleCheckStack) throws ScanException {
-
-    // Check for recursion
-    if (haveVisitedNodeAlready(n, cycleCheckStack)) {
-      cycleCheckStack.push(n);
-      String error = constructRecursionErrorMessage(cycleCheckStack);
-      throw new IllegalArgumentException(error);
-    }
-    cycleCheckStack.push(n);
-
-    StringBuilder keyBuffer = new StringBuilder();
-    Node payload = (Node) n.payload;
-    compileNode(payload, keyBuffer, cycleCheckStack);
-    String key = keyBuffer.toString();
-    String value = lookupKey(key);
-
-    if (value != null) {
-      Node innerNode = tokenizeAndParseString(value);
-      compileNode(innerNode, stringBuilder, cycleCheckStack);
-      cycleCheckStack.pop();
-      return;
-    }
-
-    if (n.defaultPart == null) {
-      stringBuilder.append(key + CoreConstants.UNDEFINED_PROPERTY_SUFFIX);
-      cycleCheckStack.pop();
-      return;
-    }
-
-    Node defaultPart = (Node) n.defaultPart;
-    StringBuilder defaultPartBuffer = new StringBuilder();
-    compileNode(defaultPart, defaultPartBuffer, cycleCheckStack);
-    cycleCheckStack.pop();
-    String defaultVal = defaultPartBuffer.toString();
-    stringBuilder.append(defaultVal);
-  }
-
-  private String lookupKey(String key) {
-    String value = propertyContainer0.getProperty(key);
-    if (value != null)
-      return value;
-
-    if (propertyContainer1 != null) {
-      value = propertyContainer1.getProperty(key);
-      if (value != null)
-        return value;
-    }
-
-    value = OptionHelper.getSystemProperty(key, null);
-    if (value != null)
-      return value;
-
-    value = OptionHelper.getEnv(key);
-    if (value != null) {
-      return value;
-    }
-
-    return null;
-  }
-
-
-  private void handleLiteral(Node n, StringBuilder stringBuilder) {
-    stringBuilder.append((String) n.payload);
-  }
-
-  private String variableNodeValue(Node variableNode) {
-    Node literalPayload = (Node) variableNode.payload;
-    return (String) literalPayload.payload;
-  }
-
-  private String constructRecursionErrorMessage(Stack<Node> recursionNodes) {
-    StringBuilder errorBuilder = new StringBuilder("Circular variable reference detected while parsing input [");
-
-    for (Node stackNode : recursionNodes) {
-      errorBuilder.append("${").append(variableNodeValue(stackNode)).append("}");
-      if (recursionNodes.lastElement() != stackNode) {
-        errorBuilder.append(" --> ");
-      }
-    }
-    errorBuilder.append("]");
-    return errorBuilder.toString();
-  }
-
-  /**
-   * Determine if a node has already been visited already by checking the cycleDetectionStack
-   * for it's existence. This method is used -- rather than Stack.contains() -- because
-   * we want to ignore the Node's 'next' attribute when comparing for equality.
-   */
-  private boolean haveVisitedNodeAlready(Node node, Stack<Node> cycleDetectionStack) {
-    for (Node cycleNode : cycleDetectionStack) {
-      if (equalNodes(node, cycleNode)) {
-        return true;
-      }
-    }
-    return false;
-  }
-  private boolean equalNodes(Node node1, Node node2) {
-    if (node1.type != null && !node1.type.equals(node2.type)) return false;
-    if (node1.payload != null && !node1.payload.equals(node2.payload)) return false;
-    if (node1.defaultPart != null && !node1.defaultPart.equals(node2.defaultPart)) return false;
-
-    return true;
-  }
-
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/subst/Parser.java b/logback-core/src/main/java/ch/qos/logback/core/subst/Parser.java
deleted file mode 100644
index 5cff9d9..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/subst/Parser.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.subst;
-
-
-import ch.qos.logback.core.CoreConstants;
-import ch.qos.logback.core.spi.ScanException;
-
-import java.util.List;
-
-// E = TE|T
-//   = T(E|~)
-// E = TEopt where Eopt = E|~
-// T = LITERAL | { C } |'${' V '}'
-// C = E|E :- E
-//   = E(':-'E|~)
-// V = E|E :- E
-//   = E(':-'E|~)
-
-/**
- * Parse a token list returning a node chain.
- *
- * @author Ceki Gulcu
- */
-public class Parser {
-
-  final List<Token> tokenList;
-  int pointer = 0;
-
-  public Parser(List<Token> tokenList) {
-    this.tokenList = tokenList;
-  }
-
-  public Node parse() throws ScanException {
-    if(tokenList == null || tokenList.isEmpty())
-      return null;
-    return E();
-  }
-
-  private Node E() throws ScanException {
-    Node t = T();
-    if (t == null) {
-      return null;
-    }
-    Node eOpt = Eopt();
-    if (eOpt != null) {
-      t.append(eOpt);
-    }
-    return t;
-  }
-
-  // Eopt = E|~
-  private Node Eopt() throws ScanException {
-    Token next = peekAtCurentToken();
-    if (next == null) {
-      return null;
-    } else {
-      return E();
-    }
-  }
-
-  // T = LITERAL | '${' V '}'
-  private Node T() throws ScanException {
-    Token t = peekAtCurentToken();
-
-    switch (t.type) {
-      case LITERAL:
-        advanceTokenPointer();
-        return makeNewLiteralNode(t.payload);
-      case CURLY_LEFT:
-        advanceTokenPointer();
-        Node innerNode = C();
-        Token right = peekAtCurentToken();
-        expectCurlyRight(right);
-        advanceTokenPointer();
-        Node curlyLeft = makeNewLiteralNode(CoreConstants.LEFT_ACCOLADE);
-        curlyLeft.append(innerNode);
-        curlyLeft.append(makeNewLiteralNode(CoreConstants.RIGHT_ACCOLADE));
-        return curlyLeft;
-      case START:
-        advanceTokenPointer();
-        Node v = V();
-        Token w = peekAtCurentToken();
-        expectCurlyRight(w);
-        advanceTokenPointer();
-        return v;
-      default:
-        return null;
-    }
-  }
-
-  private Node makeNewLiteralNode(String s) {
-    return new Node(Node.Type.LITERAL, s);
-  }
-
-  // V = E(':='E|~)
-  private Node V() throws ScanException {
-    Node e = E();
-    Node variable = new Node(Node.Type.VARIABLE, e);
-    Token t = peekAtCurentToken();
-    if (isDefaultToken(t)) {
-      advanceTokenPointer();
-      Node def = E();
-      variable.defaultPart = def;
-    }
-    return variable;
-  }
-
-  // C = E(':='E|~)
-  private Node C() throws ScanException {
-    Node e0 = E();
-    Token t = peekAtCurentToken();
-    if (isDefaultToken(t)) {
-      advanceTokenPointer();
-      Node literal = makeNewLiteralNode(CoreConstants.DEFAULT_VALUE_SEPARATOR);
-      e0.append(literal);
-      Node e1 = E();
-      e0.append(e1);
-    }
-    return e0;
-  }
-
-  private boolean isDefaultToken(Token t) {
-    return t != null && t.type == Token.Type.DEFAULT;
-  }
-
-  void advanceTokenPointer() {
-    pointer++;
-  }
-
-  void expectNotNull(Token t, String expected) {
-    if (t == null) {
-      throw new IllegalArgumentException("All tokens consumed but was expecting \""
-              + expected + "\"");
-    }
-  }
-
-  void expectCurlyRight(Token t) throws ScanException {
-    expectNotNull(t, "}");
-    if (t.type != Token.Type.CURLY_RIGHT) {
-      throw new ScanException("Expecting }");
-    }
-  }
-
-  Token peekAtCurentToken() {
-    if (pointer < tokenList.size()) {
-      return tokenList.get(pointer);
-    }
-    return null;
-  }
-
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/subst/Token.java b/logback-core/src/main/java/ch/qos/logback/core/subst/Token.java
deleted file mode 100644
index 16964b5..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/subst/Token.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.subst;
-
-public class Token {
-
-  static public final Token START_TOKEN = new Token(Type.START, null);
-  static public final Token CURLY_LEFT_TOKEN = new Token(Type.CURLY_LEFT, null);
-  static public final Token CURLY_RIGHT_TOKEN = new Token(Type.CURLY_RIGHT, null);
-  static public final Token DEFAULT_SEP_TOKEN = new Token(Type.DEFAULT, null);
-
-  public enum Type {LITERAL, START, CURLY_LEFT, CURLY_RIGHT, DEFAULT}
-
-  Type type;
-  String payload;
-
-  public Token(Type type, String payload) {
-    this.type = type;
-    this.payload = payload;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) return true;
-    if (o == null || getClass() != o.getClass()) return false;
-
-    Token token = (Token) o;
-
-    if (type != token.type) return false;
-    if (payload != null ? !payload.equals(token.payload) : token.payload != null) return false;
-
-    return true;
-  }
-
-  @Override
-  public int hashCode() {
-    int result = type != null ? type.hashCode() : 0;
-    result = 31 * result + (payload != null ? payload.hashCode() : 0);
-    return result;
-  }
-
-  @Override
-  public String toString() {
-    String result = "Token{" +
-            "type=" + type;
-    if (payload != null)
-      result += ", payload='" + payload + '\'';
-
-    result += '}';
-    return result;
-  }
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/subst/Tokenizer.java b/logback-core/src/main/java/ch/qos/logback/core/subst/Tokenizer.java
deleted file mode 100644
index 31a00c2..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/subst/Tokenizer.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.subst;
-
-import ch.qos.logback.core.CoreConstants;
-import ch.qos.logback.core.spi.ScanException;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class Tokenizer {
-
-  enum TokenizerState {LITERAL_STATE, START_STATE, DEFAULT_VAL_STATE}
-
-  final String pattern;
-  final int patternLength;
-
-  public Tokenizer(String pattern) {
-    this.pattern = pattern;
-    patternLength = pattern.length();
-  }
-
-  TokenizerState state = TokenizerState.LITERAL_STATE;
-  int pointer = 0;
-
-  List<Token> tokenize() throws ScanException {
-    List<Token> tokenList = new ArrayList<Token>();
-    StringBuilder buf = new StringBuilder();
-
-    while (pointer < patternLength) {
-      char c = pattern.charAt(pointer);
-      pointer++;
-
-      switch (state) {
-        case LITERAL_STATE:
-          handleLiteralState(c, tokenList, buf);
-          break;
-        case START_STATE:
-          handleStartState(c, tokenList, buf);
-          break;
-        case DEFAULT_VAL_STATE:
-          handleDefaultValueState(c, tokenList, buf);
-        default:
-      }
-    }
-    // EOS
-    switch (state) {
-      case LITERAL_STATE:
-        addLiteralToken(tokenList, buf);
-        break;
-      case START_STATE:
-        throw new ScanException("Unexpected end of pattern string");
-    }
-    return tokenList;
-  }
-
-  private void handleDefaultValueState(char c, List<Token> tokenList, StringBuilder stringBuilder) {
-    switch(c) {
-      case  CoreConstants.DASH_CHAR:
-        tokenList.add(Token.DEFAULT_SEP_TOKEN);
-        state = TokenizerState.LITERAL_STATE;
-        break;
-      case CoreConstants.DOLLAR:
-        stringBuilder.append(CoreConstants.COLON_CHAR);
-        addLiteralToken(tokenList, stringBuilder);
-        stringBuilder.setLength(0);
-        state = TokenizerState.START_STATE;
-        break;
-      default:
-        stringBuilder.append(CoreConstants.COLON_CHAR).append(c);
-        state = TokenizerState.LITERAL_STATE;
-        break;
-    }
-  }
-
-  private void handleStartState(char c, List<Token> tokenList, StringBuilder stringBuilder) {
-    if (c == CoreConstants.CURLY_LEFT) {
-      tokenList.add(Token.START_TOKEN);
-    } else {
-      stringBuilder.append(CoreConstants.DOLLAR).append(c);
-    }
-    state = TokenizerState.LITERAL_STATE;
-  }
-
-  private void handleLiteralState(char c, List<Token> tokenList, StringBuilder stringBuilder) {
-    if (c == CoreConstants.DOLLAR) {
-      addLiteralToken(tokenList, stringBuilder);
-      stringBuilder.setLength(0);
-      state = TokenizerState.START_STATE;
-    } else if (c == CoreConstants.COLON_CHAR) {
-      addLiteralToken(tokenList, stringBuilder);
-      stringBuilder.setLength(0);
-      state = TokenizerState.DEFAULT_VAL_STATE;
-    } else if (c == CoreConstants.CURLY_LEFT) {
-      addLiteralToken(tokenList, stringBuilder);
-      tokenList.add(Token.CURLY_LEFT_TOKEN);
-      stringBuilder.setLength(0);
-    } else  if (c == CoreConstants.CURLY_RIGHT) {
-      addLiteralToken(tokenList, stringBuilder);
-      tokenList.add(Token.CURLY_RIGHT_TOKEN);
-      stringBuilder.setLength(0);
-    } else {
-      stringBuilder.append(c);
-    }
-
-  }
-
-  private void addLiteralToken(List<Token> tokenList, StringBuilder stringBuilder) {
-    if (stringBuilder.length() == 0)
-      return;
-    tokenList.add(new Token(Token.Type.LITERAL, stringBuilder.toString()));
-  }
-
-
-}
-
-
diff --git a/logback-core/src/main/java/ch/qos/logback/core/util/AggregationType.java b/logback-core/src/main/java/ch/qos/logback/core/util/AggregationType.java
index c287684..1ca7b09 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/util/AggregationType.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/util/AggregationType.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/util/CachingDateFormatter.java b/logback-core/src/main/java/ch/qos/logback/core/util/CachingDateFormatter.java
index 549234b..9be9dff 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/util/CachingDateFormatter.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/util/CachingDateFormatter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/util/CharSequenceState.java b/logback-core/src/main/java/ch/qos/logback/core/util/CharSequenceState.java
index b7903df..2ff5ea8 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/util/CharSequenceState.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/util/CharSequenceState.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2012, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/util/CharSequenceToRegexMapper.java b/logback-core/src/main/java/ch/qos/logback/core/util/CharSequenceToRegexMapper.java
index 068f572..2c95e20 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/util/CharSequenceToRegexMapper.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/util/CharSequenceToRegexMapper.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/util/CloseUtil.java b/logback-core/src/main/java/ch/qos/logback/core/util/CloseUtil.java
deleted file mode 100644
index d0a5918..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/util/CloseUtil.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.util;
-
-import java.io.Closeable;
-import java.io.IOException;
-import java.net.ServerSocket;
-import java.net.Socket;
-
-/**
- * Static utility method for {@link Closeable} objects.
- *
- * @author Carl Harris
- */
-public class CloseUtil {
-
-  /**
-   * Closes a closeable while suppressing any {@code IOException} that occurs.
-   * @param closeable the socket to close
-   */
-  public static void closeQuietly(Closeable closeable) {
-    if (closeable == null) return;
-    try {
-      closeable.close();
-    }
-    catch (IOException ex) {
-      assert true;  // avoid an empty catch
-    }
-  }
-
-  /**
-   * Closes a socket while suppressing any {@code IOException} that occurs.
-   * @param socket the socket to close
-   */
-  public static void closeQuietly(Socket socket) {
-    if (socket == null) return;
-    try {
-      socket.close();
-    }
-    catch (IOException ex) {
-      assert true;  // avoid an empty catch
-    }
-  }
-
-  /**
-   * Closes a server socket while suppressing any {@code IOException} that 
-   * occurs.
-   * @param serverSocket the socket to close
-   */
-  public static void closeQuietly(ServerSocket serverSocket) {
-    if (serverSocket == null) return;
-    try {
-      serverSocket.close();
-    }
-    catch (IOException ex) {
-      assert true;  // avoid an empty catch
-    }
-  }
-
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/util/ContentTypeUtil.java b/logback-core/src/main/java/ch/qos/logback/core/util/ContentTypeUtil.java
index cffd070..b8bfdd7 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/util/ContentTypeUtil.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/util/ContentTypeUtil.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/util/ContextUtil.java b/logback-core/src/main/java/ch/qos/logback/core/util/ContextUtil.java
index 2032ed2..95bad59 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/util/ContextUtil.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/util/ContextUtil.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,57 +13,24 @@
  */
 package ch.qos.logback.core.util;
 
-import ch.qos.logback.core.Context;
-import ch.qos.logback.core.CoreConstants;
-import ch.qos.logback.core.spi.ContextAwareBase;
-
 import java.net.InetAddress;
-import java.net.NetworkInterface;
-import java.net.SocketException;
 import java.net.UnknownHostException;
-import java.util.Enumeration;
 import java.util.Iterator;
-import java.util.List;
 import java.util.Properties;
 
+import ch.qos.logback.core.Context;
+import ch.qos.logback.core.CoreConstants;
+import ch.qos.logback.core.spi.ContextAwareBase;
+
 public class ContextUtil extends ContextAwareBase {
 
   public ContextUtil(Context context) {
     setContext(context);
   }
 
-  public static String getLocalHostName() throws UnknownHostException,
-          SocketException {
-    try {
-      InetAddress localhost = InetAddress.getLocalHost();
-      return localhost.getHostName();
-    } catch (UnknownHostException e) {
-      return getLocalAddressAsString();
-    }
-  }
-
-  private static String getLocalAddressAsString() throws UnknownHostException,
-          SocketException {
-    Enumeration<NetworkInterface> interfaces =
-            NetworkInterface.getNetworkInterfaces();
-    while (interfaces != null && interfaces.hasMoreElements()) {
-      Enumeration<InetAddress> addresses =
-              interfaces.nextElement().getInetAddresses();
-      while (addresses != null && addresses.hasMoreElements()) {
-        InetAddress address = addresses.nextElement();
-        if (acceptableAddress(address)) {
-          return address.getHostAddress();
-        }
-      }
-    }
-    throw new UnknownHostException();
-  }
-
-  private static boolean acceptableAddress(InetAddress address) {
-    return address != null
-            && !address.isLoopbackAddress()
-            && !address.isAnyLocalAddress()
-            && !address.isLinkLocalAddress();
+  static String getLocalHostName() throws UnknownHostException {
+    InetAddress localhost = InetAddress.getLocalHost();
+    return localhost.getHostName();
   }
 
   /**
@@ -71,18 +38,16 @@ public class ContextUtil extends ContextAwareBase {
    */
   public void addHostNameAsProperty() {
     try {
-      String localhostName = getLocalHostName();
+      String localhostName =  getLocalHostName();
       context.putProperty(CoreConstants.HOSTNAME_KEY, localhostName);
     } catch (UnknownHostException e) {
       addError("Failed to get local hostname", e);
-    } catch (SocketException e) {
-      addError("Failed to get local hostname", e);
     } catch (SecurityException e) {
       addError("Failed to get local hostname", e);
     }
   }
 
-  public void addProperties(Properties props) {
+   public void addProperties(Properties props) {
     if (props == null) {
       return;
     }
@@ -92,18 +57,4 @@ public class ContextUtil extends ContextAwareBase {
       context.putProperty(key, props.getProperty(key));
     }
   }
-
-
-  public void addGroovyPackages(List<String> frameworkPackages) {
-    //addFrameworkPackage(frameworkPackages, "groovy.lang");
-    addFrameworkPackage(frameworkPackages, "org.codehaus.groovy.runtime");
-  }
-
-  public void addFrameworkPackage(List<String> frameworkPackages, String packageName) {
-    if (!frameworkPackages.contains(packageName)) {
-      frameworkPackages.add(packageName);
-    }
-  }
-
-
 }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/util/DatePatternToRegexUtil.java b/logback-core/src/main/java/ch/qos/logback/core/util/DatePatternToRegexUtil.java
index 414aa53..bd72ebd 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/util/DatePatternToRegexUtil.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/util/DatePatternToRegexUtil.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/util/DelayStrategy.java b/logback-core/src/main/java/ch/qos/logback/core/util/DelayStrategy.java
deleted file mode 100644
index 66313ea..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/util/DelayStrategy.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.util;
-
-/**
- * A strategy for computing a delay.
- *
- * @author Carl Harris
- * @since 1.1.0
- */
-public interface DelayStrategy {
-  /**
-   * The value computed by this {@code DelayStrategy} for the next delay.
-   * @return a delay value
-   */
-  long nextDelay();
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/util/Duration.java b/logback-core/src/main/java/ch/qos/logback/core/util/Duration.java
index 8a86bff..750d192 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/util/Duration.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/util/Duration.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -18,17 +18,16 @@ import java.util.regex.Pattern;
 
 /**
  * Duration instances represent a lapse of time. Internally, the duration is
- * stored in milliseconds. However, whenever a parameter of type Duration is expected, Joran
- * (logback's configuration system) will automatically convert strings such as "20 seconds"
- * "3.5 minutes" or "5 hours" into Duration instances.
- *
- * <p>The recognized units of time are the "millisecond", "second", "minute" "hour" and "day".
- * The unit name may be followed by an "s". Thus, "2 day" and "2 days" are equivalent. In the
- * absence of a time unit specification, milliseconds are assumed.
+ * stored in milliseconds.
+ * <p>
+ * 
+ * The {@link #valueOf} method can convert strings such as "3.5 minutes", "5
+ * hours", into Duration instances. The recognized units of time are the
+ * "millisecond", "second", "minute" "hour" and "day". The unit name may be
+ * followed by an "s". Thus, "2 day" and "2 days" are equivalent. In the absence
+ * of a time unit specification, milliseconds are assumed.
+ * 
  * 
- * <p>Note: the conversion magic is entirely due to the fact that this class follows the
- * {@link #valueOf} convention.
- *
  * @author Ceki Gulcu
  */
 public class Duration {
diff --git a/logback-core/src/main/java/ch/qos/logback/core/util/DynamicClassLoadingException.java b/logback-core/src/main/java/ch/qos/logback/core/util/DynamicClassLoadingException.java
index 1c3bfb4..ea00010 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/util/DynamicClassLoadingException.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/util/DynamicClassLoadingException.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/util/EnvUtil.java b/logback-core/src/main/java/ch/qos/logback/core/util/EnvUtil.java
index ea7916b..935e0a6 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/util/EnvUtil.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/util/EnvUtil.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,59 +13,31 @@
  */
 package ch.qos.logback.core.util;
 
-import java.util.ArrayList;
-import java.util.List;
-
 /**
  * @author Ceki Gücü
  */
 public class EnvUtil {
 
 
-  static private boolean isJDK_N_OrHigher(int n) {
-     List<String> versionList = new ArrayList<String>();
-     // this code should work at least until JDK 10 (assuming n parameter is
-     // always 6 or more)
-     for (int i = 0; i < 5; i++) {
-       versionList.add("1." + (n + i));
-     }
-
-     String javaVersion = System.getProperty("java.version");
-     if (javaVersion == null) {
-       return false;
-     }
-     for (String v : versionList) {
-       if (javaVersion.startsWith(v))
-         return true;
-     }
-     return false;
-   }
-
   static public boolean isJDK5() {
-    return isJDK_N_OrHigher(5);
+    String javaVersion = System.getProperty("java.version");
+    if (javaVersion == null) {
+      return false;
+    }
+    if (javaVersion.startsWith("1.5")) {
+      return true;
+    } else {
+      return false;
+    }
   }
 
-   static public boolean isJDK6OrHigher() {
-     return isJDK_N_OrHigher(6);
-   }
-
-   static public boolean isJDK7OrHigher() {
-     return isJDK_N_OrHigher(7);
-   }
-
   static public boolean isJaninoAvailable() {
     ClassLoader classLoader = EnvUtil.class.getClassLoader();
     try {
-      Class<?> bindingClass = classLoader.loadClass("org.codehaus.janino.ScriptEvaluator");
+      Class bindingClass = classLoader.loadClass("org.codehaus.janino.ScriptEvaluator");
       return (bindingClass != null);
     } catch (ClassNotFoundException e) {
       return false;
     }
   }
-
-  public static boolean isWindows() {
-    String os = System.getProperty("os.name");
-    return os.startsWith("Windows");
-  }
-
 }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/util/ExecutorServiceUtil.java b/logback-core/src/main/java/ch/qos/logback/core/util/ExecutorServiceUtil.java
deleted file mode 100644
index 771545a..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/util/ExecutorServiceUtil.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-
-package ch.qos.logback.core.util;
-
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.SynchronousQueue;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-import ch.qos.logback.core.CoreConstants;
-
-/**
- * Static utility methods for manipulating an {@link ExecutorService}.
- * 
- * @author Carl Harris
- */
-public class ExecutorServiceUtil {
-
-  /**
-   * Creates an executor service suitable for use by logback components.
-   * @return executor service
-   */
-  static public ExecutorService newExecutorService() {
-    return new ThreadPoolExecutor(CoreConstants.CORE_POOL_SIZE, 
-        CoreConstants.MAX_POOL_SIZE,
-        0L, TimeUnit.MILLISECONDS,
-        new SynchronousQueue<Runnable>());
-  }
-  
-  /**
-   * Shuts down an executor service.
-   * <p>
-   * @param executorService the executor service to shut down
-   */
-  static public void shutdown(ExecutorService executorService) {
-    executorService.shutdownNow();
-  }
-
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/util/FileSize.java b/logback-core/src/main/java/ch/qos/logback/core/util/FileSize.java
index d1e8435..003a263 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/util/FileSize.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/util/FileSize.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/util/FileUtil.java b/logback-core/src/main/java/ch/qos/logback/core/util/FileUtil.java
index e308767..d52a7b8 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/util/FileUtil.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/util/FileUtil.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,26 +13,24 @@
  */
 package ch.qos.logback.core.util;
 
-import ch.qos.logback.core.Context;
-import ch.qos.logback.core.rolling.RolloverFailure;
-import ch.qos.logback.core.spi.ContextAwareBase;
+import ch.qos.logback.core.spi.ContextAware;
 
-import java.io.*;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLConnection;
 
-public class FileUtil extends ContextAwareBase {
+public class FileUtil {
 
-  public FileUtil(Context context) {
-    setContext(context);
-  }
 
   public static URL fileToURL(File file) {
     try {
       return file.toURI().toURL();
     } catch (MalformedURLException e) {
-      throw new RuntimeException("Unexpected exception on file [" + file + "]", e);
+      throw new RuntimeException("Unexpected exception on file ["+file+"]", e);
     }
   }
 
@@ -57,10 +55,10 @@ public class FileUtil extends ContextAwareBase {
   }
 
 
-  public String resourceAsString(ClassLoader classLoader, String resourceName) {
+  static public String resourceAsString(ContextAware ca, ClassLoader classLoader, String resourceName) {
     URL url = classLoader.getResource(resourceName);
     if (url == null) {
-      addError("Failed to find resource [" + resourceName + "]");
+      ca.addError("Failed to find resource [" + resourceName + "]");
       return null;
     }
 
@@ -77,9 +75,9 @@ public class FileUtil extends ContextAwareBase {
       }
       return builder.toString();
     } catch (IOException e) {
-      addError("Failed to open " + resourceName, e);
+      ca.addError("Failled to open " + resourceName, e);
     } finally {
-      if (isr != null) {
+      if(isr != null) {
         try {
           isr.close();
         } catch (IOException e) {
@@ -89,45 +87,4 @@ public class FileUtil extends ContextAwareBase {
     }
     return null;
   }
-
-  static final int BUF_SIZE = 32 * 1024;
-
-  public void copy(String src, String destination) throws RolloverFailure {
-    BufferedInputStream bis = null;
-    BufferedOutputStream bos = null;
-    try {
-      bis = new BufferedInputStream(new FileInputStream(src));
-      bos = new BufferedOutputStream(new FileOutputStream(destination));
-      byte[] inbuf = new byte[BUF_SIZE];
-      int n;
-
-      while ((n = bis.read(inbuf)) != -1) {
-        bos.write(inbuf, 0, n);
-      }
-
-      bis.close();
-      bis = null;
-      bos.close();
-      bos = null;
-    } catch (IOException ioe) {
-      String msg = "Failed to copy [" + src + "] to [" + destination + "]";
-      addError(msg, ioe);
-      throw new RolloverFailure(msg);
-    } finally {
-      if (bis != null) {
-        try {
-          bis.close();
-        } catch (IOException e) {
-          // ignore
-        }
-      }
-      if (bos != null) {
-        try {
-          bos.close();
-        } catch (IOException e) {
-          // ignore
-        }
-      }
-    }
-  }
 }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/util/FixedDelay.java b/logback-core/src/main/java/ch/qos/logback/core/util/FixedDelay.java
deleted file mode 100644
index e53b108..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/util/FixedDelay.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.util;
-
-/**
- * A default {@link DelayStrategy} that implements a simple fixed delay.
- *
- * @author Carl Harris
- * @since 1.1.0
- */
-public class FixedDelay implements DelayStrategy {
-
-  private final long subsequentDelay;
-  private long nextDelay;
-
-  /**
-   * Initialize a new {@code FixedDelay} with a given {@code initialDelay} and
-   * {@code subsequentDelay}.
-   *
-   * @param initialDelay    value for the initial delay
-   * @param subsequentDelay value for all other delays
-   */
-  public FixedDelay(long initialDelay, long subsequentDelay) {
-    String s = new String();
-    this.nextDelay = initialDelay;
-    this.subsequentDelay = subsequentDelay;
-  }
-
-  /**
-   * Initialize a new {@code FixedDelay} with fixed delay value given by {@code delay}
-   * parameter.
-   *
-   * @param delay value for all delays
-   */
-  public FixedDelay(int delay) {
-    this(delay, delay);
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public long nextDelay() {
-    long delay = nextDelay;
-    nextDelay = subsequentDelay;
-    return delay;
-  }
-
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/util/IncompatibleClassException.java b/logback-core/src/main/java/ch/qos/logback/core/util/IncompatibleClassException.java
index 5449ce1..04c19d2 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/util/IncompatibleClassException.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/util/IncompatibleClassException.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -17,12 +17,12 @@ public class IncompatibleClassException extends Exception {
 
   private static final long serialVersionUID = -5823372159561159549L;
 
-  Class<?> requestedClass;
-  Class<?> obtainedClass;
+  Class requestedClass;
+  Class obtainedClass;
   
-  IncompatibleClassException(Class<?> requestedClass, Class<?> obtainedClass) {
+  IncompatibleClassException(Class requestedClass, Class obtainedClass) {
     super();
-    this.requestedClass = requestedClass;
+    this.requestedClass =requestedClass;
     this.obtainedClass = obtainedClass;
   }
 }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/util/InvocationGate.java b/logback-core/src/main/java/ch/qos/logback/core/util/InvocationGate.java
index a474997..b9d61de 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/util/InvocationGate.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/util/InvocationGate.java
@@ -1,16 +1,3 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
 package ch.qos.logback.core.util;
 
 /**
diff --git a/logback-core/src/main/java/ch/qos/logback/core/util/Loader.java b/logback-core/src/main/java/ch/qos/logback/core/util/Loader.java
index db14afa..6c45a6e 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/util/Loader.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/util/Loader.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -15,6 +15,7 @@ package ch.qos.logback.core.util;
 
 import java.io.IOException;
 import java.net.URL;
+import java.security.AccessControlException;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
 import java.util.Enumeration;
@@ -50,9 +51,7 @@ public class Loader {
                   AccessController.checkPermission(
                           new RuntimePermission("getClassLoader"));
                   return true;
-                } catch (SecurityException e) {
-                  // Using SecurityException instead of AccessControlException.
-                  // See bug LOGBACK-760.
+                } catch (AccessControlException e) {
                   return false;
                 }
               }
@@ -69,8 +68,8 @@ public class Loader {
    * @throws IOException
    */
 
-  public static Set<URL> getResourceOccurrenceCount(String resource,
-                                                    ClassLoader classLoader) throws IOException {
+  public static Set<URL> getResourceOccurenceCount(String resource,
+                                                   ClassLoader classLoader) throws IOException {
     // See LBCLASSIC-159
     Set<URL> urlSet = new HashSet<URL>();
     Enumeration<URL> urlEnum = classLoader.getResources(resource);
@@ -119,7 +118,7 @@ public class Loader {
     return Thread.currentThread().getContextClassLoader();
   }
 
-  public static Class<?> loadClass(String clazz, Context context)
+  public static Class loadClass(String clazz, Context context)
           throws ClassNotFoundException {
     ClassLoader cl = getClassLoaderOfObject(context);
     return cl.loadClass(clazz);
@@ -145,7 +144,7 @@ public class Loader {
    * @param clazz
    * @return
    */
-  public static ClassLoader getClassLoaderAsPrivileged(final Class<?> clazz) {
+  public static ClassLoader getClassLoaderAsPrivileged(final Class clazz) {
     if (!HAS_GET_CLASS_LOADER_PERMISSION)
       return null;
     else
@@ -164,7 +163,7 @@ public class Loader {
    * @param clazz
    * @return
    */
-  public static ClassLoader getClassLoaderOfClass(final Class<?> clazz) {
+  public static ClassLoader getClassLoaderOfClass(final Class clazz) {
     ClassLoader cl = clazz.getClassLoader();
     if (cl == null) {
       return ClassLoader.getSystemClassLoader();
@@ -178,7 +177,7 @@ public class Loader {
    * <code>Thread</code> <code>contextClassLoader</code> if that fails try
    * Class.forname. Under JDK 1.1 only Class.forName is used.
    */
-  public static Class<?> loadClass(String clazz) throws ClassNotFoundException {
+  public static Class loadClass(String clazz) throws ClassNotFoundException {
     // Just call Class.forName(clazz) if we are running under JDK 1.1
     // or if we are instructed to ignore the TCL.
     if (ignoreTCL) {
diff --git a/logback-core/src/main/java/ch/qos/logback/core/util/LocationUtil.java b/logback-core/src/main/java/ch/qos/logback/core/util/LocationUtil.java
deleted file mode 100644
index 65c0aa4..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/util/LocationUtil.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.util;
-
-import java.io.FileNotFoundException;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-
-/**
- * A static utility method that converts a string that describes the
- * location of a resource into a {@link URL} object.
- *
- * @author Carl Harris
- */
-public class LocationUtil {
-
-  
-  /** Regex pattern for a URL scheme (reference RFC 2396 section 3) */
-  public static final String SCHEME_PATTERN =
-      "^\\p{Alpha}[\\p{Alnum}+.-]*:.*$";
-
-  /** Scheme name for a classpath resource */
-  public static final String CLASSPATH_SCHEME = "classpath:";
-  
-  /**
-   * Converts a string describing the location of a resource into a URL object.
-   * @param location String describing the location
-   * @return URL object that refers to {@code location}
-   * @throws MalformedURLException if {@code location} is not a syntatically
-   *    valid URL
-   * @throws FileNotFoundException if {@code location} specifies a non-existent
-   *    classpath resource
-   * @throws NullPointerException if {@code location} is {@code null}
-   */
-  public static URL urlForResource(String location) 
-      throws MalformedURLException, FileNotFoundException {
-    if (location == null) {
-      throw new NullPointerException("location is required");
-    }
-    URL url = null;
-    if (!location.matches(SCHEME_PATTERN)) { 
-      url = Loader.getResourceBySelfClassLoader(location);
-    }
-    else if (location.startsWith(CLASSPATH_SCHEME)) {
-      String path = location.substring(CLASSPATH_SCHEME.length());
-      if (path.startsWith("/")) {
-        path = path.substring(1);
-      }
-      if (path.length() == 0) {
-        throw new MalformedURLException("path is required");
-      }
-      url = Loader.getResourceBySelfClassLoader(path);
-    }
-    else {
-      url = new URL(location); 
-    }
-    if (url == null) {
-      throw new FileNotFoundException(location);
-    }
-    return url;
-  }
-  
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/util/OptionHelper.java b/logback-core/src/main/java/ch/qos/logback/core/util/OptionHelper.java
index 0bc01d8..29c2127 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/util/OptionHelper.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/util/OptionHelper.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,15 +13,12 @@
  */
 package ch.qos.logback.core.util;
 
-import java.lang.reflect.Constructor;
 import java.util.Properties;
 
 import ch.qos.logback.core.Context;
 import ch.qos.logback.core.CoreConstants;
 import ch.qos.logback.core.spi.ContextAware;
 import ch.qos.logback.core.spi.PropertyContainer;
-import ch.qos.logback.core.spi.ScanException;
-import ch.qos.logback.core.subst.NodeToStringTransformer;
 
 /**
  * @author Ceki Gulcu
@@ -29,55 +26,40 @@ import ch.qos.logback.core.subst.NodeToStringTransformer;
 public class OptionHelper {
 
   public static Object instantiateByClassName(String className,
-                                              Class<?> superClass, Context context) throws IncompatibleClassException,
-          DynamicClassLoadingException {
+      Class superClass, Context context) throws IncompatibleClassException,
+      DynamicClassLoadingException {
     ClassLoader classLoader = Loader.getClassLoaderOfObject(context);
     return instantiateByClassName(className, superClass, classLoader);
   }
 
-  public static Object instantiateByClassNameAndParameter(String className,
-                                                          Class<?> superClass, Context context, Class<?> type, Object param) throws IncompatibleClassException,
-          DynamicClassLoadingException {
-    ClassLoader classLoader = Loader.getClassLoaderOfObject(context);
-    return instantiateByClassNameAndParameter(className, superClass, classLoader, type, param);
-  }
-
+  @SuppressWarnings("unchecked")
   public static Object instantiateByClassName(String className,
-                                              Class<?> superClass, ClassLoader classLoader)
-          throws IncompatibleClassException, DynamicClassLoadingException {
-    return instantiateByClassNameAndParameter(className, superClass, classLoader, null, null);
-  }
-
-  public static Object instantiateByClassNameAndParameter(String className,
-                                                          Class<?> superClass, ClassLoader classLoader, Class<?> type, Object parameter)
-          throws IncompatibleClassException, DynamicClassLoadingException {
+      Class superClass, ClassLoader classLoader)
+      throws IncompatibleClassException, DynamicClassLoadingException {
 
     if (className == null) {
       throw new NullPointerException();
     }
+
     try {
-      Class<?> classObj = null;
+      Class classObj = null;
       classObj = classLoader.loadClass(className);
       if (!superClass.isAssignableFrom(classObj)) {
         throw new IncompatibleClassException(superClass, classObj);
       }
-      if (type == null) {
-        return classObj.newInstance();
-      } else {
-        Constructor<?> constructor = classObj.getConstructor(type);
-        return constructor.newInstance(parameter);
-      }
+      return classObj.newInstance();
     } catch (IncompatibleClassException ice) {
       throw ice;
     } catch (Throwable t) {
       throw new DynamicClassLoadingException("Failed to instantiate type "
-              + className, t);
+          + className, t);
     }
   }
 
   /**
    * Find the value corresponding to <code>key</code> in <code>props</code>.
    * Then perform variable substitution on the found value.
+   * 
    */
   // public static String findAndSubst(String key, Properties props) {
   // String value = props.getProperty(key);
@@ -94,34 +76,88 @@ public class OptionHelper {
   // }
   final static String DELIM_START = "${";
   final static char DELIM_STOP = '}';
-  final static String DELIM_DEFAULT = ":-";
-
   final static int DELIM_START_LEN = 2;
   final static int DELIM_STOP_LEN = 1;
-  final static int DELIM_DEFAULT_LEN = 2;
-
   final static String _IS_UNDEFINED = "_IS_UNDEFINED";
 
   /**
-   * @see #substVars(String, PropertyContainer, PropertyContainer)
+   * @see  #substVars(String, PropertyContainer, PropertyContainer)
    */
-  public static String substVars(String val, PropertyContainer pc1) {
-    return substVars(val, pc1, null);
-  }
+   public static String substVars(String val, PropertyContainer pc1) {
+     return substVars(val, pc1, null);
+   }
 
   /**
    * See  http://logback.qos.ch/manual/configuration.html#variableSubstitution
    */
-  public static String substVars(String input, PropertyContainer pc0, PropertyContainer pc1) {
-    try {
-      return NodeToStringTransformer.substituteVariable(input, pc0, pc1);
-    } catch (ScanException e) {
-      throw new IllegalArgumentException("Failed to parse input [" + input + "]", e);
+  public static String substVars(String val, PropertyContainer pc1, PropertyContainer pc2) {
+
+    StringBuffer sbuf = new StringBuffer();
+
+    int i = 0;
+    int j;
+    int k;
+
+    while (true) {
+      j = val.indexOf(DELIM_START, i);
+
+      if (j == -1) {
+        // no more variables
+        if (i == 0) { // this is a simple string
+
+          return val;
+        } else { // add the tail string which contains no variables and return
+          // the result.
+          sbuf.append(val.substring(i, val.length()));
+
+          return sbuf.toString();
+        }
+      } else {
+        sbuf.append(val.substring(i, j));
+        k = val.indexOf(DELIM_STOP, j);
+
+        if (k == -1) {
+          throw new IllegalArgumentException('"' + val
+              + "\" has no closing brace. Opening brace at position " + j + '.');
+        } else {
+          j += DELIM_START_LEN;
+
+          String rawKey = val.substring(j, k);
+
+          // Massage the key to extract a default replacement if there is one
+          String[] extracted = extractDefaultReplacement(rawKey);
+          String key = extracted[0];
+          String defaultReplacement = extracted[1]; // can be null
+
+          String replacement = propertyLookup(key, pc1, pc2);
+
+          // if replacement is still null, use the defaultReplacement which
+          // can be null as well
+          if (replacement == null) {
+            replacement = defaultReplacement;
+          }
+
+          if (replacement != null) {
+            // Do variable substitution on the replacement string
+            // such that we can solve "Hello ${x2}" as "Hello p1"
+            // where the properties are
+            // x1=p1
+            // x2=${x1}
+            String recursiveReplacement = substVars(replacement, pc1, pc2);
+            sbuf.append(recursiveReplacement);
+          } else {
+            // if we could not find a replacement, then signal the error
+            sbuf.append(key + "_IS_UNDEFINED");
+          }
+
+          i = k + DELIM_STOP_LEN;
+        }
+      }
     }
   }
 
   public static String propertyLookup(String key, PropertyContainer pc1,
-                                      PropertyContainer pc2) {
+                               PropertyContainer pc2) {
     String value = null;
     // first try the props passed as parameter
     value = pc1.getProperty(key);
@@ -143,9 +179,11 @@ public class OptionHelper {
   /**
    * Very similar to <code>System.getProperty</code> except that the
    * {@link SecurityException} is absorbed.
-   *
-   * @param key The key to search for.
-   * @param def The default value to return.
+   * 
+   * @param key
+   *                The key to search for.
+   * @param def
+   *                The default value to return.
    * @return the string value of the system property, or the default value if
    *         there is no property with that key.
    */
@@ -159,7 +197,6 @@ public class OptionHelper {
 
   /**
    * Lookup a key from the environment.
-   *
    * @param key
    * @return value corresponding to key from the OS environment
    */
@@ -175,8 +212,10 @@ public class OptionHelper {
   /**
    * Very similar to <code>System.getProperty</code> except that the
    * {@link SecurityException} is absorbed.
-   *
-   * @param key The key to search for.
+   * 
+   * @param key
+   *                The key to search for.
+   * 
    * @return the string value of the system property.
    */
   public static String getSystemProperty(String key) {
@@ -188,7 +227,7 @@ public class OptionHelper {
   }
 
   public static void setSystemProperties(ContextAware contextAware, Properties props) {
-    for (Object o : props.keySet()) {
+    for(Object o: props.keySet()) {
       String key = (String) o;
       String value = props.getProperty(key);
       setSystemProperty(contextAware, key, value);
@@ -199,14 +238,14 @@ public class OptionHelper {
     try {
       System.setProperty(key, value);
     } catch (SecurityException e) {
-      contextAware.addError("Failed to set system property [" + key + "]", e);
+      contextAware.addError("Failed to set system property ["+key+"]", e);
     }
   }
 
   /**
    * Very similar to {@link System#getProperties()} except that the
    * {@link SecurityException} is absorbed.
-   *
+   * 
    * @return the system properties
    */
   public static Properties getSystemProperties() {
@@ -217,24 +256,13 @@ public class OptionHelper {
     }
   }
 
-  /**
-   * Return a String[] of size two. The first item containing the key part and the second item
-   * containing a default value specified by the user. The second item will be null if no default value
-   * is specified.
-   *
-   * @param key
-   * @return
-   */
   static public String[] extractDefaultReplacement(String key) {
     String[] result = new String[2];
-    if(key == null)
-      return result;
-
     result[0] = key;
-    int d = key.indexOf(DELIM_DEFAULT);
+    int d = key.indexOf(":-");
     if (d != -1) {
       result[0] = key.substring(0, d);
-      result[1] = key.substring(d + DELIM_DEFAULT_LEN);
+      result[1] = key.substring(d + 2);
     }
     return result;
   }
@@ -243,7 +271,7 @@ public class OptionHelper {
    * If <code>value</code> is "true", then <code>true</code> is returned. If
    * <code>value</code> is "false", then <code>true</code> is returned.
    * Otherwise, <code>default</code> is returned.
-   * <p/>
+   * 
    * <p> Case of value is unimportant.
    */
   public static boolean toBoolean(String value, boolean dEfault) {
diff --git a/logback-core/src/main/java/ch/qos/logback/core/util/PropertySetterException.java b/logback-core/src/main/java/ch/qos/logback/core/util/PropertySetterException.java
index ddc57ae..bbaf89e 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/util/PropertySetterException.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/util/PropertySetterException.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/util/StatusPrinter.java b/logback-core/src/main/java/ch/qos/logback/core/util/StatusPrinter.java
index 6fdce15..5f9da43 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/util/StatusPrinter.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/util/StatusPrinter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -20,7 +20,10 @@ import java.util.List;
 import ch.qos.logback.core.Context;
 import ch.qos.logback.core.CoreConstants;
 import ch.qos.logback.core.helpers.ThrowableToStringArray;
-import ch.qos.logback.core.status.*;
+import ch.qos.logback.core.status.ErrorStatus;
+import ch.qos.logback.core.status.Status;
+import ch.qos.logback.core.status.StatusChecker;
+import ch.qos.logback.core.status.StatusManager;
 
 import static ch.qos.logback.core.status.StatusUtil.filterStatusListByTimeThreshold;
 
@@ -61,8 +64,8 @@ public class StatusPrinter {
       ps.println("WARN: Context named \"" + context.getName()
           + "\" has no status manager");
     } else {
-      StatusUtil statusUtil = new StatusUtil(context);
-      if (statusUtil.getHighestLevel(threshold) >= ErrorStatus.WARN) {
+      StatusChecker sc = new StatusChecker(context);
+      if (sc.getHighestLevel(threshold) >= ErrorStatus.WARN) {
         print(sm, threshold);
       }
     }
@@ -84,8 +87,8 @@ public class StatusPrinter {
       ps.println("WARN: Context named \"" + context.getName()
           + "\" has no status manager");
     } else {
-      StatusUtil statusUtil = new StatusUtil(context);
-      if (statusUtil.getHighestLevel(0) == ErrorStatus.ERROR) {
+      StatusChecker sc = new StatusChecker(context);
+      if (sc.getHighestLevel(0) == ErrorStatus.ERROR) {
         print(sm);
       }
     }
diff --git a/logback-core/src/main/java/ch/qos/logback/core/util/StringCollectionUtil.java b/logback-core/src/main/java/ch/qos/logback/core/util/StringCollectionUtil.java
deleted file mode 100644
index 524de77..0000000
--- a/logback-core/src/main/java/ch/qos/logback/core/util/StringCollectionUtil.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.util;
-
-import java.util.Arrays;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.regex.Pattern;
-
-/**
- * Static utility methods for working with collections of strings.
- *
- * @author Carl Harris
- */
-public class StringCollectionUtil {
-
-  /**
-   * Retains all values in the subject collection that are matched by
-   * at least one of a collection of regular expressions.
-   * <p>
-   * This method is a convenience overload for
-   * {@link #retainMatching(Collection, Collection)}.
-   *   
-   * @param values subject value collection 
-   * @param patterns patterns to match
-   */
-  @SuppressWarnings("unchecked")
-  public static void retainMatching(Collection<String> values, 
-      String... patterns) {
-    retainMatching(values, Arrays.asList(patterns));
-  }
-
-  /**
-   * Retains all values in the subject collection that are matched by
-   * at least one of a collection of regular expressions.
-   * <p>
-   * The semantics of this method are conceptually similar to
-   * {@link Collection#retainAll(Collection)}, but uses pattern matching
-   * instead of exact matching.
-   * 
-   * @param values subject value collection 
-   * @param patterns patterns to match
-   */
-  public static void retainMatching(Collection<String> values,
-      Collection<String> patterns) {
-    if (patterns.isEmpty()) return;
-    List<String> matches = new ArrayList<String>(values.size());
-    for (String p : patterns) {
-      Pattern pattern = Pattern.compile(p);
-      for (String value : values) {
-        if (pattern.matcher(value).matches()) {
-          matches.add(value);
-        }
-      }
-    }
-    values.retainAll(matches);
-  }
-  
-  /**
-   * Removes all values in the subject collection that are matched by
-   * at least one of a collection of regular expressions.
-   * <p>
-   * This method is a convenience overload for
-   * {@link #removeMatching(Collection, Collection)}.
-   * 
-   * @param values subject value collection 
-   * @param patterns patterns to match
-   */
-  @SuppressWarnings("unchecked")
-  public static void removeMatching(Collection<String> values, 
-      String... patterns) {
-    removeMatching(values, Arrays.asList(patterns));
-  }
-
-  /**
-   * Removes all values in the subject collection that are matched by
-   * at least one of a collection of regular expressions.
-   * <p>
-   * The semantics of this method are conceptually similar to
-   * {@link Collection#removeAll(Collection)}, but uses pattern matching
-   * instead of exact matching.
-   * 
-   * @param values subject value collection 
-   * @param patterns patterns to match
-   */
-  public static void removeMatching(Collection<String> values, 
-      Collection<String> patterns) {
-    List<String> matches = new ArrayList<String>(values.size());
-    for (String p : patterns) {
-      Pattern pattern = Pattern.compile(p);
-      for (String value : values) {
-        if (pattern.matcher(value).matches()) {
-          matches.add(value);
-        }
-      }
-    }
-    values.removeAll(matches);
-  }
-
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/util/SystemInfo.java b/logback-core/src/main/java/ch/qos/logback/core/util/SystemInfo.java
index a53a0b8..7d8063e 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/util/SystemInfo.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/util/SystemInfo.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/main/java/ch/qos/logback/core/util/TimeUtil.java b/logback-core/src/main/java/ch/qos/logback/core/util/TimeUtil.java
index f9890ff..ae94734 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/util/TimeUtil.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/util/TimeUtil.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/input/joran/inclusion/topOptional.xml b/logback-core/src/test/input/joran/inclusion/topOptional.xml
deleted file mode 100644
index c011ed7..0000000
--- a/logback-core/src/test/input/joran/inclusion/topOptional.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE x>
-
-<x>
-  <include optional="true" file="nonExistentFile.xml" />
-
-  <stack name="IA"/>
-  <stack name="IB"/>
-</x>
diff --git a/logback-core/src/test/input/joran/inclusion/topOptionalResource.xml b/logback-core/src/test/input/joran/inclusion/topOptionalResource.xml
deleted file mode 100644
index 6b53a63..0000000
--- a/logback-core/src/test/input/joran/inclusion/topOptionalResource.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE x>
-
-<x>
-  <include optional="true" resource="nonExistentResource.xml" />
-
-  <stack name="IA"/>
-  <stack name="IB"/>
-</x>
diff --git a/logback-core/src/test/java/ch/qos/logback/core/AllCoreTest.java b/logback-core/src/test/java/ch/qos/logback/core/AllCoreTest.java
index fef936a..8646fd0 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/AllCoreTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/AllCoreTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -19,19 +19,16 @@ import org.junit.runners.Suite.SuiteClasses;
 
 @RunWith(Suite.class)
 @SuiteClasses({BasicStatusManagerTest.class,
-        ch.qos.logback.core.status.PackageTest.class,
-        ch.qos.logback.core.util.PackageTest.class,
-        ch.qos.logback.core.helpers.PackageTest.class,
-        ch.qos.logback.core.subst.PackageTest.class,
-        ch.qos.logback.core.pattern.PackageTest.class,
-        ch.qos.logback.core.PackageTest.class,
-        ch.qos.logback.core.joran.PackageTest.class,
-        ch.qos.logback.core.appender.PackageTest.class,
-        ch.qos.logback.core.spi.PackageTest.class,
-        ch.qos.logback.core.rolling.PackageTest.class,
-        ch.qos.logback.core.net.PackageTest.class,
-        ch.qos.logback.core.sift.PackageTest.class,
-        ch.qos.logback.core.encoder.PackageTest.class,
-        ch.qos.logback.core.recovery.PackageTest.class})
+  ch.qos.logback.core.util.PackageTest.class,
+  ch.qos.logback.core.helpers.PackageTest.class,
+  ch.qos.logback.core.pattern.PackageTest.class,
+  ch.qos.logback.core.PackageTest.class,
+  ch.qos.logback.core.joran.PackageTest.class,
+  ch.qos.logback.core.appender.PackageTest.class,
+  ch.qos.logback.core.spi.PackageTest.class,
+  ch.qos.logback.core.rolling.PackageTest.class,
+  ch.qos.logback.core.sift.PackageTest.class, 
+  ch.qos.logback.core.encoder.PackageTest.class,
+  ch.qos.logback.core.recovery.PackageTest.class})
 public class AllCoreTest {
 }
diff --git a/logback-core/src/test/java/ch/qos/logback/core/AsyncAppenderBaseTest.java b/logback-core/src/test/java/ch/qos/logback/core/AsyncAppenderBaseTest.java
index ca757cb..7fcf2ff 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/AsyncAppenderBaseTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/AsyncAppenderBaseTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2012, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -156,14 +156,14 @@ public class AsyncAppenderBaseTest {
     assertEquals(0, asyncAppenderBase.getQueueSize());
     asyncAppenderBase.start();
     assertFalse(asyncAppenderBase.isStarted());
-    statusChecker.assertContainsMatch("Invalid queue size");
+    assertTrue(statusChecker.containsMatch("Invalid queue size"));
   }
 
   private void verify(ListAppender la, int expectedSize) {
     assertFalse(la.isStarted());
     assertEquals(expectedSize, la.list.size());
-    statusChecker.assertIsErrorFree();
-    statusChecker.assertContainsMatch("Worker thread will flush remaining events before exiting.");
+    assertTrue(statusChecker.isErrorFree(0));
+    assertTrue(statusChecker.containsMatch("Worker thread will flush remaining events before exiting."));
   }
 
   static class LossyAsyncAppender extends AsyncAppenderBase<Integer> {
diff --git a/logback-core/src/test/java/ch/qos/logback/core/BasicStatusManagerTest.java b/logback-core/src/test/java/ch/qos/logback/core/BasicStatusManagerTest.java
index 98bd4be..3036acc 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/BasicStatusManagerTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/BasicStatusManagerTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/ContextBaseTest.java b/logback-core/src/test/java/ch/qos/logback/core/ContextBaseTest.java
index b6b94f1..508a95a 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/ContextBaseTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/ContextBaseTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -15,21 +15,13 @@ package ch.qos.logback.core;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import org.junit.Test;
 
-import ch.qos.logback.core.spi.LifeCycle;
-
 public class ContextBaseTest {
 
-  private InstrumentedLifeCycleManager lifeCycleManager =
-      new InstrumentedLifeCycleManager();
-  
-  private InstrumentedContextBase context = 
-      new InstrumentedContextBase(lifeCycleManager);
+  ContextBase context = new ContextBase();
 
   @Test
   public void renameDefault() {
@@ -61,13 +53,9 @@ public class ContextBaseTest {
     context.putObject("keyA", "valA");
     assertEquals("valA", context.getProperty("keyA"));
     assertEquals("valA", context.getObject("keyA"));
-    MockLifeCycleComponent component = new MockLifeCycleComponent();
-    context.register(component);
-    assertSame(component, lifeCycleManager.getLastComponent());
     context.reset();
     assertNull(context.getProperty("keyA"));
     assertNull(context.getObject("keyA"));
-    assertTrue(lifeCycleManager.isReset());
   }
 
   @Test
@@ -80,47 +68,4 @@ public class ContextBaseTest {
     // not go through CoreConstants
     assertEquals(HELLO, context.getProperty("CONTEXT_NAME"));
   }
-
-  private static class InstrumentedContextBase extends ContextBase {
-  
-    private final LifeCycleManager lifeCycleManager;
-    
-    public InstrumentedContextBase(LifeCycleManager lifeCycleManager) {
-      this.lifeCycleManager = lifeCycleManager;
-    }
-  
-    @Override
-    protected LifeCycleManager getLifeCycleManager() {
-      return lifeCycleManager;
-    }
-    
-  }
-
-  private static class InstrumentedLifeCycleManager extends LifeCycleManager {
-    
-    private LifeCycle lastComponent;
-    private boolean reset;
-    
-    @Override
-    public void register(LifeCycle component) {
-      lastComponent = component;
-      super.register(component);
-    }
-    
-    @Override
-    public void reset() {
-      reset = true;
-      super.reset();
-    }
-
-    public LifeCycle getLastComponent() {
-      return lastComponent;
-    }
-
-    public boolean isReset() {
-      return reset;
-    }
-    
-  }
-
 }
diff --git a/logback-core/src/test/java/ch/qos/logback/core/FileAppenderResilienceTest.java b/logback-core/src/test/java/ch/qos/logback/core/FileAppenderResilienceTest.java
index b64126b..3892679 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/FileAppenderResilienceTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/FileAppenderResilienceTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -56,6 +56,7 @@ public class FileAppenderResilienceTest {
     fa.setEncoder(new EchoEncoder<Object>());
     fa.setFile(logfileStr);
     fa.start();
+
   }
 
   @Test
@@ -85,12 +86,10 @@ public class FileAppenderResilienceTest {
     t.join();
 
     double bestCaseSuccessRatio = 1/delayCoefficient;
-    // expect to loose at most 35% of the events
-    double lossinessFactor = 0.35;
-    double resilianceFactor = (1-lossinessFactor);
+    double lossinessFactor = 0.8;
 
     ResilienceUtil
-              .verify(logfileStr, "^hello (\\d{1,5})$", runner.getCounter(), bestCaseSuccessRatio * resilianceFactor);
+              .verify(logfileStr, "^hello (\\d{1,5})$", runner.getCounter(), bestCaseSuccessRatio * lossinessFactor);
   }
 
   private void closeLogFileOnPurpose() throws IOException {
diff --git a/logback-core/src/test/java/ch/qos/logback/core/FileAppenderResilience_AS_ROOT_Test.java b/logback-core/src/test/java/ch/qos/logback/core/FileAppenderResilience_AS_ROOT_Test.java
index 19ca57e..2379fd6 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/FileAppenderResilience_AS_ROOT_Test.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/FileAppenderResilience_AS_ROOT_Test.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -17,12 +17,12 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 
-import ch.qos.logback.core.testUtil.EnvUtilForTests;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
 import ch.qos.logback.core.encoder.EchoEncoder;
+import ch.qos.logback.core.testUtil.Env;
 import ch.qos.logback.core.testUtil.RandomUtil;
 import ch.qos.logback.core.util.ResilienceUtil;
 import ch.qos.logback.core.util.StatusPrinter;
@@ -47,7 +47,7 @@ public class FileAppenderResilience_AS_ROOT_Test {
   FileAppender<Object> fa = new FileAppender<Object>();
 
   static boolean isConformingHost() {
-    return EnvUtilForTests.isLocalHostNameInList(new String[]{"haro"});
+    return Env.isLocalHostNameInList(new String[] { "haro" });
   }
 
   @Before
diff --git a/logback-core/src/test/java/ch/qos/logback/core/LifeCycleManagerTest.java b/logback-core/src/test/java/ch/qos/logback/core/LifeCycleManagerTest.java
deleted file mode 100644
index 08a0371..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/LifeCycleManagerTest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-
-package ch.qos.logback.core;
-
-import static org.junit.Assert.assertFalse;
-
-import org.junit.Test;
-
-
-/**
- * Unit tests for {@link LifeCycleManager}.
- *
- * @author Carl Harris
- */
-public class LifeCycleManagerTest {
-
-  private LifeCycleManager manager = new LifeCycleManager();
-  
-  @Test
-  public void testRegisterAndReset() {
-    MockLifeCycleComponent component = new MockLifeCycleComponent();
-    manager.register(component);
-    component.start();
-    manager.reset();
-    assertFalse(component.isStarted());
-  }
-
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/MockLifeCycleComponent.java b/logback-core/src/test/java/ch/qos/logback/core/MockLifeCycleComponent.java
deleted file mode 100644
index 3f0ad8c..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/MockLifeCycleComponent.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package ch.qos.logback.core;
-
-import ch.qos.logback.core.spi.LifeCycle;
-
-public class MockLifeCycleComponent implements LifeCycle {
-
-  private boolean started;
-  
-  public void start() {
-    started = true;      
-  }
-
-  public void stop() {
-    started = false;
-  }
-
-  public boolean isStarted() {
-    return started;
-  }
-  
-}
\ No newline at end of file
diff --git a/logback-core/src/test/java/ch/qos/logback/core/OutputStreamAppenderTest.java b/logback-core/src/test/java/ch/qos/logback/core/OutputStreamAppenderTest.java
index c4d0ddd..e669e11 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/OutputStreamAppenderTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/OutputStreamAppenderTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/PackageTest.java b/logback-core/src/test/java/ch/qos/logback/core/PackageTest.java
index 36593a4..7606e83 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/PackageTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/appender/AbstractAppenderTest.java b/logback-core/src/test/java/ch/qos/logback/core/appender/AbstractAppenderTest.java
index d2cec92..8564b54 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/appender/AbstractAppenderTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/appender/AbstractAppenderTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -61,7 +61,7 @@ abstract public class AbstractAppenderTest<E>  {
     appender.doAppend(null);
     StatusChecker checker = new StatusChecker(context.getStatusManager());
     StatusPrinter.print(context);
-    checker.assertContainsMatch("Attempted to append to non started appender \\[doh\\].");
+    assertTrue(checker.containsMatch("Attempted to append to non started appender \\[doh\\]."));
   }
 }
 
diff --git a/logback-core/src/test/java/ch/qos/logback/core/appender/ConsoleAppenderTest.java b/logback-core/src/test/java/ch/qos/logback/core/appender/ConsoleAppenderTest.java
index 4e85e39..39b1e80 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/appender/ConsoleAppenderTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/appender/ConsoleAppenderTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,6 +13,16 @@
  */
 package ch.qos.logback.core.appender;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+
+import java.io.PrintStream;
+import java.io.UnsupportedEncodingException;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
 import ch.qos.logback.core.Appender;
 import ch.qos.logback.core.ConsoleAppender;
 import ch.qos.logback.core.CoreConstants;
@@ -22,19 +32,7 @@ import ch.qos.logback.core.encoder.NopEncoder;
 import ch.qos.logback.core.layout.DummyLayout;
 import ch.qos.logback.core.status.Status;
 import ch.qos.logback.core.status.StatusChecker;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.PrintStream;
-import java.io.UnsupportedEncodingException;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-
-/**
- * Redirecting System.out is quite messy. Disable this test in Maven bu not in Package.class
- */
 public class ConsoleAppenderTest extends AbstractAppenderTest<Object> {
 
   XTeeOutputStream tee;
@@ -141,8 +139,7 @@ public class ConsoleAppenderTest extends AbstractAppenderTest<Object> {
   public void wrongTarget() {
     ConsoleAppender<Object> ca = (ConsoleAppender<Object>) getAppender();
     EchoEncoder<Object> encoder = new EchoEncoder<Object>();
-    encoder.setContext(context);
-    ca.setContext(context);
+    System.out.println("xxx");
     ca.setTarget("foo");
     ca.setEncoder(encoder);
     ca.start();
@@ -150,9 +147,8 @@ public class ConsoleAppenderTest extends AbstractAppenderTest<Object> {
     StatusChecker checker = new StatusChecker(context);
     //21:28:01,246 + WARN in ch.qos.logback.core.ConsoleAppender[null] - [foo] should be one of [SystemOut, SystemErr]
     //21:28:01,246   |-WARN in ch.qos.logback.core.ConsoleAppender[null] - Using previously set target, System.out by default.
-//    StatusPrinter.print(context);
 
-    checker.assertContainsMatch(Status.WARN, "\\[foo\\] should be one of \\[SystemOut, SystemErr\\]");
+    checker.containsMatch(Status.ERROR, "\\[foo\\] should be one of \\[SystemOut, SystemErr\\]");
 
   }
 
diff --git a/logback-core/src/test/java/ch/qos/logback/core/appender/DummyAppenderTest.java b/logback-core/src/test/java/ch/qos/logback/core/appender/DummyAppenderTest.java
index 79ff995..bcd2b19 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/appender/DummyAppenderTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/appender/DummyAppenderTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/appender/DummyWriterAppender.java b/logback-core/src/test/java/ch/qos/logback/core/appender/DummyWriterAppender.java
index 671e9cc..63fe6bd 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/appender/DummyWriterAppender.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/appender/DummyWriterAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/appender/FileAppenderTest.java b/logback-core/src/test/java/ch/qos/logback/core/appender/FileAppenderTest.java
index 293dbbb..6dc7cf4 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/appender/FileAppenderTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/appender/FileAppenderTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -53,7 +53,7 @@ public class FileAppenderTest extends AbstractAppenderTest<Object> {
 
   @Test
   public void smoke() {
-    String filename = CoreTestConstants.OUTPUT_DIR_PREFIX + "/fat-smoke.log";
+    String filename = CoreTestConstants.OUTPUT_DIR_PREFIX + "temp.log";
 
     FileAppender<Object> appender = new FileAppender<Object>();
     appender.setEncoder(new DummyEncoder<Object>());
@@ -72,8 +72,8 @@ public class FileAppenderTest extends AbstractAppenderTest<Object> {
 
   @Test
   public void testCreateParentFolders() {
-    String filename = CoreTestConstants.OUTPUT_DIR_PREFIX + "/fat-testCreateParentFolders-" + diff
-        + "/testCreateParentFolders.txt";
+    String filename = CoreTestConstants.OUTPUT_DIR_PREFIX + "/fat" + diff
+        + "/testing.txt";
     File file = new File(filename);
     FileAppender<Object> appender = new FileAppender<Object>();
     appender.setEncoder(new DummyEncoder<Object>());
@@ -95,12 +95,12 @@ public class FileAppenderTest extends AbstractAppenderTest<Object> {
 
   @Test
   public void testPrudentModeLogicalImplications() {
-    String filename = CoreTestConstants.OUTPUT_DIR_PREFIX + diff + "fat-testPrudentModeLogicalImplications.txt";
+    String filename = CoreTestConstants.OUTPUT_DIR_PREFIX + diff + "testing.txt";
     File file = new File(filename);
     FileAppender<Object> appender = new FileAppender<Object>();
     appender.setEncoder(new DummyEncoder<Object>());
     appender.setFile(filename);
-    appender.setName("testPrudentModeLogicalImplications");
+    appender.setName("testPrudentMode");
     appender.setContext(context);
 
     appender.setAppend(false);
diff --git a/logback-core/src/test/java/ch/qos/logback/core/appender/PackageTest.java b/logback-core/src/test/java/ch/qos/logback/core/appender/PackageTest.java
index 316a587..4c82718 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/appender/PackageTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/appender/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -17,10 +17,10 @@ import org.junit.runner.RunWith;
 import org.junit.runners.Suite;
 
 
- at RunWith(Suite.class)
- at Suite.SuiteClasses({DummyAppenderTest.class,
-        ConsoleAppenderTest.class,
-        FileAppenderTest.class})
 
+ at RunWith(Suite.class)
+ at Suite.SuiteClasses( { DummyAppenderTest.class, ConsoleAppenderTest.class,
+  FileAppenderTest.class})
+    
 public class PackageTest {
 }
diff --git a/logback-core/src/test/java/ch/qos/logback/core/appender/XTeeOutputStream.java b/logback-core/src/test/java/ch/qos/logback/core/appender/XTeeOutputStream.java
index be99c56..88fcb9f 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/appender/XTeeOutputStream.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/appender/XTeeOutputStream.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/boolex/MatcherTest.java b/logback-core/src/test/java/ch/qos/logback/core/boolex/MatcherTest.java
index 938c72c..bc17398 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/boolex/MatcherTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/boolex/MatcherTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/contention/AbstractMultiThreadedHarness.java b/logback-core/src/test/java/ch/qos/logback/core/contention/AbstractMultiThreadedHarness.java
index a8526b3..858df4f 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/contention/AbstractMultiThreadedHarness.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/contention/AbstractMultiThreadedHarness.java
@@ -1,16 +1,3 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
 package ch.qos.logback.core.contention;
 
 abstract public class AbstractMultiThreadedHarness {
diff --git a/logback-core/src/test/java/ch/qos/logback/core/contention/MultiThreadedHarness.java b/logback-core/src/test/java/ch/qos/logback/core/contention/MultiThreadedHarness.java
index 792f62b..ab1340c 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/contention/MultiThreadedHarness.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/contention/MultiThreadedHarness.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -15,7 +15,7 @@ package ch.qos.logback.core.contention;
 
 
 /**
- * Useful scaffolding/harness to start and processPriorToRemoval multiple threads.
+ * Useful scaffolding/harness to start and stop multiple threads.
  * 
  * @author Joern Huxhorn
  * @author Ralph Goers
diff --git a/logback-core/src/test/java/ch/qos/logback/core/contention/RunnableWithCounterAndDone.java b/logback-core/src/test/java/ch/qos/logback/core/contention/RunnableWithCounterAndDone.java
index 1e1993c..b56cfc3 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/contention/RunnableWithCounterAndDone.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/contention/RunnableWithCounterAndDone.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/contention/ThreadedThroughputCalculator.java b/logback-core/src/test/java/ch/qos/logback/core/contention/ThreadedThroughputCalculator.java
index 3149a43..49989fd 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/contention/ThreadedThroughputCalculator.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/contention/ThreadedThroughputCalculator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/contention/WaitOnExecutionMultiThreadedHarness.java b/logback-core/src/test/java/ch/qos/logback/core/contention/WaitOnExecutionMultiThreadedHarness.java
index e9b87e4..e14a9fd 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/contention/WaitOnExecutionMultiThreadedHarness.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/contention/WaitOnExecutionMultiThreadedHarness.java
@@ -1,16 +1,3 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
 package ch.qos.logback.core.contention;
 
 import java.util.concurrent.ThreadPoolExecutor;
@@ -21,13 +8,13 @@ public class WaitOnExecutionMultiThreadedHarness extends AbstractMultiThreadedHa
 
     public WaitOnExecutionMultiThreadedHarness(ThreadPoolExecutor threadPoolExecutor, int count) {
         this.threadPoolExecutor = threadPoolExecutor;
-        this.count = count;
+        this.count =count;
 
     }
     @Override
     void waitUntilEndCondition() throws InterruptedException {
       while(threadPoolExecutor.getCompletedTaskCount() < count) {
-        Thread.yield();
+        Thread.sleep(20);
       }
     }
 }
diff --git a/logback-core/src/test/java/ch/qos/logback/core/encoder/ByteArrayUtilTest.java b/logback-core/src/test/java/ch/qos/logback/core/encoder/ByteArrayUtilTest.java
index 56f28cf..a7f2159 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/encoder/ByteArrayUtilTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/encoder/ByteArrayUtilTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/encoder/DummyEncoder.java b/logback-core/src/test/java/ch/qos/logback/core/encoder/DummyEncoder.java
index 58669ee..2454400 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/encoder/DummyEncoder.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/encoder/DummyEncoder.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/encoder/NopEncoder.java b/logback-core/src/test/java/ch/qos/logback/core/encoder/NopEncoder.java
index e36da99..fb38794 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/encoder/NopEncoder.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/encoder/NopEncoder.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/encoder/ObjectEncodeDecodeTest.java b/logback-core/src/test/java/ch/qos/logback/core/encoder/ObjectEncodeDecodeTest.java
index 586e0ee..adb6f41 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/encoder/ObjectEncodeDecodeTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/encoder/ObjectEncodeDecodeTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/encoder/PackageTest.java b/logback-core/src/test/java/ch/qos/logback/core/encoder/PackageTest.java
index 1c32e3e..6a58ec2 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/encoder/PackageTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/encoder/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/helpers/CyclicBufferTest.java b/logback-core/src/test/java/ch/qos/logback/core/helpers/CyclicBufferTest.java
index 103059c..4fd4c92 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/helpers/CyclicBufferTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/helpers/CyclicBufferTest.java
@@ -1,16 +1,3 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
 package ch.qos.logback.core.helpers;
 
 import org.junit.Test;
diff --git a/logback-core/src/test/java/ch/qos/logback/core/helpers/FileFilterUtilTest.java b/logback-core/src/test/java/ch/qos/logback/core/helpers/FileFilterUtilTest.java
index 6ab8f26..5ce3b27 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/helpers/FileFilterUtilTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/helpers/FileFilterUtilTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -48,7 +48,7 @@ public class FileFilterUtilTest {
     FileNamePattern fnp = new FileNamePattern("c:/log/debug-old-%d{yyyy-MM-dd}.%i.log", context);
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
     String rexexp = null;
-    rexexp = fnp.toRegexForFixedDate(sdf.parse("2010-08-10"));
+    rexexp = fnp.toRegex(sdf.parse("2010-08-10"));
     String stemRegex = FileFilterUtil.afterLastSlash(rexexp);
     int result = FileFilterUtil.findHighestCounter(matchingFileArray, stemRegex);
     assertEquals(12, result);
diff --git a/logback-core/src/test/java/ch/qos/logback/core/helpers/PackageTest.java b/logback-core/src/test/java/ch/qos/logback/core/helpers/PackageTest.java
index 029c8b4..a231fe1 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/helpers/PackageTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/helpers/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/helpers/ThrowableToStringArrayTest.java b/logback-core/src/test/java/ch/qos/logback/core/helpers/ThrowableToStringArrayTest.java
index 20cddc9..2fefe36 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/helpers/ThrowableToStringArrayTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/helpers/ThrowableToStringArrayTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/issue/LBCORE97.java b/logback-core/src/test/java/ch/qos/logback/core/issue/LBCORE97.java
index 36de894..fd6f25b 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/issue/LBCORE97.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/issue/LBCORE97.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/issue/LOGBACK_849/Basic.java b/logback-core/src/test/java/ch/qos/logback/core/issue/LOGBACK_849/Basic.java
deleted file mode 100644
index a07f525..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/issue/LOGBACK_849/Basic.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package ch.qos.logback.core.issue.LOGBACK_849;
-
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.TimeUnit;
-
-import org.junit.Ignore;
-import org.junit.Test;
-
-import ch.qos.logback.core.Context;
-import ch.qos.logback.core.ContextBase;
-import ch.qos.logback.core.util.ExecutorServiceUtil;
-
-
-public class Basic {
-
-  ExecutorService executor = ExecutorServiceUtil.newExecutorService();
-  Context context = new ContextBase();
-
-  @Test(timeout = 100)
-  public void withNoSubmittedTasksShutdownNowShouldReturnImmediately() throws InterruptedException {
-    executor.shutdownNow();
-    executor.awaitTermination(5000, TimeUnit.MILLISECONDS);
-  }
-
-  @Ignore
-  @Test
-  public void withOneSlowTask() throws InterruptedException {
-    executor.execute(new InterruptIgnoring(1000));
-    Thread.sleep(100);
-    ExecutorServiceUtil.shutdown(executor);
-  }
-
-  //  InterruptIgnoring ===========================================
-  static class InterruptIgnoring implements Runnable {
-
-    int delay;
-
-    InterruptIgnoring(int delay) {
-      this.delay = delay;
-    }
-
-    public void run() {
-      long runUntil = System.currentTimeMillis() + delay;
-
-      while (true) {
-        try {
-          long sleep = runUntil - System.currentTimeMillis();
-          System.out.println("will sleep " + sleep);
-          if (sleep > 0) {
-            Thread.currentThread().sleep(delay);
-          } else {
-            return;
-          }
-        } catch (InterruptedException e) {
-          // ignore the exception
-        }
-      }
-    }
-  }
-
-
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/issue/LockThroughput.java b/logback-core/src/test/java/ch/qos/logback/core/issue/LockThroughput.java
index b78b605..5221f20 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/issue/LockThroughput.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/issue/LockThroughput.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/issue/LockingInJava.java b/logback-core/src/test/java/ch/qos/logback/core/issue/LockingInJava.java
index 53e0273..d44bec0 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/issue/LockingInJava.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/issue/LockingInJava.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/issue/NoLockThroughput.java b/logback-core/src/test/java/ch/qos/logback/core/issue/NoLockThroughput.java
index 2c2f4fc..71d2a5b 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/issue/NoLockThroughput.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/issue/NoLockThroughput.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/issue/NoLockingInJava.java b/logback-core/src/test/java/ch/qos/logback/core/issue/NoLockingInJava.java
index ea350a1..1c3432c 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/issue/NoLockingInJava.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/issue/NoLockingInJava.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/issue/SelectiveLockRunnable.java b/logback-core/src/test/java/ch/qos/logback/core/issue/SelectiveLockRunnable.java
index 66c6992..988d94f 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/issue/SelectiveLockRunnable.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/issue/SelectiveLockRunnable.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/issue/lbcore258/FileLockSimulator.java b/logback-core/src/test/java/ch/qos/logback/core/issue/lbcore258/FileLockSimulator.java
index d6eb0a3..11b8651 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/issue/lbcore258/FileLockSimulator.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/issue/lbcore258/FileLockSimulator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/PackageTest.java b/logback-core/src/test/java/ch/qos/logback/core/joran/PackageTest.java
index bd183e6..dde7cc6 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/PackageTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/SimpleConfigurator.java b/logback-core/src/test/java/ch/qos/logback/core/joran/SimpleConfigurator.java
index 677222a..a4d7c14 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/SimpleConfigurator.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/SimpleConfigurator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -15,18 +15,19 @@ package ch.qos.logback.core.joran;
 
 import java.util.HashMap;
 
+import ch.qos.logback.core.joran.GenericConfigurator;
 import ch.qos.logback.core.joran.action.Action;
 import ch.qos.logback.core.joran.action.NestedComplexPropertyIA;
 import ch.qos.logback.core.joran.action.NestedBasicPropertyIA;
 import ch.qos.logback.core.joran.spi.Interpreter;
-import ch.qos.logback.core.joran.spi.ElementSelector;
+import ch.qos.logback.core.joran.spi.Pattern;
 import ch.qos.logback.core.joran.spi.RuleStore;
 
 public class SimpleConfigurator extends GenericConfigurator {
 
-  HashMap<ElementSelector, Action> rulesMap;
+  HashMap<Pattern, Action> rulesMap;
   
-  public SimpleConfigurator(HashMap<ElementSelector, Action> rules) {
+  public SimpleConfigurator(HashMap<Pattern, Action> rules) {
     this.rulesMap = rules;
   }
   
@@ -41,15 +42,11 @@ public class SimpleConfigurator extends GenericConfigurator {
     interpreter.addImplicitAction(nestedSimpleIA);
   }
 
-  public Interpreter getInterpreter() {
-    return interpreter;
-  }
-
   @Override
   protected void addInstanceRules(RuleStore rs) {
-    for(ElementSelector elementSelector : rulesMap.keySet()) {
-      Action action = rulesMap.get(elementSelector);
-      rs.addRule(elementSelector, action);
+    for(Pattern pattern : rulesMap.keySet()) {
+      Action action = rulesMap.get(pattern);
+      rs.addRule(pattern, action);
     }
   }
 
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/SkippingInInterpreterTest.java b/logback-core/src/test/java/ch/qos/logback/core/joran/SkippingInInterpreterTest.java
index 68f8484..5459afa 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/SkippingInInterpreterTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/SkippingInInterpreterTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -23,7 +23,6 @@ import java.util.List;
 import javax.xml.parsers.SAXParser;
 import javax.xml.parsers.SAXParserFactory;
 
-import ch.qos.logback.core.joran.spi.ElementSelector;
 import org.junit.Test;
 
 import ch.qos.logback.core.Context;
@@ -35,6 +34,7 @@ import ch.qos.logback.core.joran.action.ext.BadEndAction;
 import ch.qos.logback.core.joran.action.ext.HelloAction;
 import ch.qos.logback.core.joran.action.ext.TouchAction;
 import ch.qos.logback.core.joran.spi.ActionException;
+import ch.qos.logback.core.joran.spi.Pattern;
 import ch.qos.logback.core.status.Status;
 import ch.qos.logback.core.status.StatusManager;
 import ch.qos.logback.core.util.CoreTestConstants;
@@ -47,7 +47,7 @@ import ch.qos.logback.core.util.CoreTestConstants;
  */
 public class SkippingInInterpreterTest {
 
-  HashMap<ElementSelector, Action> rulesMap = new HashMap<ElementSelector, Action>();
+  HashMap<Pattern, Action> rulesMap = new HashMap<Pattern, Action>();
   Context context = new ContextBase();
   StatusManager sm = context.getStatusManager();
 
@@ -56,25 +56,25 @@ public class SkippingInInterpreterTest {
     return spf.newSAXParser();
   }
 
-  void doTest(String filename, Integer expectedInt, Class<?> exceptionClass)
+  void doTest(String filename, Integer expectedInt, Class exceptionClass)
       throws Exception {
 
-    rulesMap.put(new ElementSelector("test"), new NOPAction());
-    rulesMap.put(new ElementSelector("test/badBegin"), new BadBeginAction());
-    rulesMap.put(new ElementSelector("test/badBegin/touch"), new TouchAction());
-    rulesMap.put(new ElementSelector("test/badEnd"), new BadEndAction());
-    rulesMap.put(new ElementSelector("test/badEnd/touch"), new TouchAction());
-    rulesMap.put(new ElementSelector("test/hello"), new HelloAction());
+    rulesMap.put(new Pattern("test"), new NOPAction());
+    rulesMap.put(new Pattern("test/badBegin"), new BadBeginAction());
+    rulesMap.put(new Pattern("test/badBegin/touch"), new TouchAction());
+    rulesMap.put(new Pattern("test/badEnd"), new BadEndAction());
+    rulesMap.put(new Pattern("test/badEnd/touch"), new TouchAction());
+    rulesMap.put(new Pattern("test/hello"), new HelloAction());
 
-    rulesMap.put(new ElementSelector("test/isolate"), new NOPAction());
-    rulesMap.put(new ElementSelector("test/isolate/badEnd"), new BadEndAction());
-    rulesMap.put(new ElementSelector("test/isolate/badEnd/touch"), new TouchAction());
-    rulesMap.put(new ElementSelector("test/isolate/touch"), new TouchAction());
-    rulesMap.put(new ElementSelector("test/hello"), new HelloAction());
+    rulesMap.put(new Pattern("test/isolate"), new NOPAction());
+    rulesMap.put(new Pattern("test/isolate/badEnd"), new BadEndAction());
+    rulesMap.put(new Pattern("test/isolate/badEnd/touch"), new TouchAction());
+    rulesMap.put(new Pattern("test/isolate/touch"), new TouchAction());
+    rulesMap.put(new Pattern("test/hello"), new HelloAction());
 
     TrivialConfigurator tc = new TrivialConfigurator(rulesMap);
     tc.setContext(context);
-    tc.doConfigure(CoreTestConstants.TEST_SRC_PREFIX + "input/joran/skip/" + filename);
+    tc.doConfigure(CoreTestConstants.TEST_DIR_PREFIX + "input/joran/skip/" + filename);
 
     String str = context.getProperty(HelloAction.PROPERTY_KEY);
     assertEquals("Hello John Doe.", str);
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/TrivialConfigurator.java b/logback-core/src/test/java/ch/qos/logback/core/joran/TrivialConfigurator.java
index df947d5..6c06450 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/TrivialConfigurator.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/TrivialConfigurator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -16,15 +16,15 @@ package ch.qos.logback.core.joran;
 import java.util.HashMap;
 
 import ch.qos.logback.core.joran.action.Action;
-import ch.qos.logback.core.joran.spi.ElementSelector;
 import ch.qos.logback.core.joran.spi.Interpreter;
+import ch.qos.logback.core.joran.spi.Pattern;
 import ch.qos.logback.core.joran.spi.RuleStore;
 
 public class TrivialConfigurator extends GenericConfigurator {
 
-  HashMap<ElementSelector, Action> rulesMap;
+  HashMap<Pattern, Action> rulesMap;
   
-  public TrivialConfigurator(HashMap<ElementSelector, Action> rules) {
+  public TrivialConfigurator(HashMap<Pattern, Action> rules) {
     this.rulesMap = rules;
   }
   
@@ -34,9 +34,9 @@ public class TrivialConfigurator extends GenericConfigurator {
 
   @Override
   protected void addInstanceRules(RuleStore rs) {
-    for(ElementSelector elementSelector : rulesMap.keySet()) {
-      Action action = rulesMap.get(elementSelector);
-      rs.addRule(elementSelector, action);
+    for(Pattern pattern : rulesMap.keySet()) {
+      Action action = rulesMap.get(pattern);
+      rs.addRule(pattern, action);
     }
   }
 
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/TrivialConfiguratorTest.java b/logback-core/src/test/java/ch/qos/logback/core/joran/TrivialConfiguratorTest.java
index 21fa65f..cc1c8af 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/TrivialConfiguratorTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/TrivialConfiguratorTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -35,7 +35,7 @@ import ch.qos.logback.core.ContextBase;
 import ch.qos.logback.core.joran.action.Action;
 import ch.qos.logback.core.joran.action.ext.IncAction;
 import ch.qos.logback.core.joran.spi.JoranException;
-import ch.qos.logback.core.joran.spi.ElementSelector;
+import ch.qos.logback.core.joran.spi.Pattern;
 import ch.qos.logback.core.status.Status;
 import ch.qos.logback.core.status.TrivialStatusListener;
 import ch.qos.logback.core.testUtil.RandomUtil;
@@ -44,12 +44,12 @@ import ch.qos.logback.core.util.CoreTestConstants;
 public class TrivialConfiguratorTest {
 
   Context context = new ContextBase();
-  HashMap<ElementSelector, Action> rulesMap = new HashMap<ElementSelector, Action>();
+  HashMap<Pattern, Action> rulesMap = new HashMap<Pattern, Action>();
 
   public void doTest(String filename) throws Exception {
 
     // rule store is case insensitve
-    rulesMap.put(new ElementSelector("x/inc"), new IncAction());
+    rulesMap.put(new Pattern("x/inc"), new IncAction());
 
     TrivialConfigurator trivialConfigurator = new TrivialConfigurator(rulesMap);
 
@@ -62,7 +62,7 @@ public class TrivialConfiguratorTest {
     int oldBeginCount = IncAction.beginCount;
     int oldEndCount = IncAction.endCount;
     int oldErrorCount = IncAction.errorCount;
-    doTest(CoreTestConstants.TEST_SRC_PREFIX + "input/joran/" + "inc.xml");
+    doTest(CoreTestConstants.TEST_DIR_PREFIX + "input/joran/" + "inc.xml");
     assertEquals(oldErrorCount, IncAction.errorCount);
     assertEquals(oldBeginCount + 1, IncAction.beginCount);
     assertEquals(oldEndCount + 1, IncAction.endCount);
@@ -71,8 +71,7 @@ public class TrivialConfiguratorTest {
   @Test
   public void inexistentFile() {
     TrivialStatusListener tsl = new TrivialStatusListener();
-    tsl.start();
-    String filename = CoreTestConstants.TEST_SRC_PREFIX + "input/joran/"
+    String filename = CoreTestConstants.TEST_DIR_PREFIX + "input/joran/"
             + "nothereBLAH.xml";
     context.getStatusManager().add(tsl);
     try {
@@ -89,8 +88,7 @@ public class TrivialConfiguratorTest {
   @Test
   public void illFormedXML() {
     TrivialStatusListener tsl = new TrivialStatusListener();
-    tsl.start();
-    String filename = CoreTestConstants.TEST_SRC_PREFIX + "input/joran/" + "illformed.xml";
+    String filename = CoreTestConstants.TEST_DIR_PREFIX + "input/joran/" + "illformed.xml";
     context.getStatusManager().add(tsl);
     try {
       doTest(filename);
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/action/AsLowerCasePropertyDefiner.java b/logback-core/src/test/java/ch/qos/logback/core/joran/action/AsLowerCasePropertyDefiner.java
index e162cab..8f3795d 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/action/AsLowerCasePropertyDefiner.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/action/AsLowerCasePropertyDefiner.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/action/DefinePropertyActionTest.java b/logback-core/src/test/java/ch/qos/logback/core/joran/action/DefinePropertyActionTest.java
index 01d2685..9cd811b 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/action/DefinePropertyActionTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/action/DefinePropertyActionTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -19,7 +19,6 @@ import static org.junit.Assert.assertTrue;
 
 import java.util.HashMap;
 
-import ch.qos.logback.core.joran.spi.ElementSelector;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -29,6 +28,7 @@ import ch.qos.logback.core.ContextBase;
 import ch.qos.logback.core.joran.SimpleConfigurator;
 import ch.qos.logback.core.joran.spi.InterpretationContext;
 import ch.qos.logback.core.joran.spi.JoranException;
+import ch.qos.logback.core.joran.spi.Pattern;
 import ch.qos.logback.core.status.Status;
 import ch.qos.logback.core.status.StatusChecker;
 import ch.qos.logback.core.util.CoreTestConstants;
@@ -47,7 +47,7 @@ public class DefinePropertyActionTest {
   private static final String NOCLASS_XML = "noclass.xml";
   private static final String BADCLASS_XML = "badclass.xml";
 
-  SimpleConfigurator simpleConfigurator;
+  SimpleConfigurator sc;
   Context context = new ContextBase();
   DefinePropertyAction definerAction;
   InterpretationContext ic;
@@ -56,10 +56,10 @@ public class DefinePropertyActionTest {
   @Before
   public void setUp() throws Exception {
 
-    HashMap<ElementSelector, Action> rulesMap = new HashMap<ElementSelector, Action>();
-    rulesMap.put(new ElementSelector("define"), new DefinePropertyAction());
-    simpleConfigurator = new SimpleConfigurator(rulesMap);
-    simpleConfigurator.setContext(context);
+    HashMap<Pattern, Action> rulesMap = new HashMap<Pattern, Action>();
+    rulesMap.put(new Pattern("define"), new DefinePropertyAction());
+    sc = new SimpleConfigurator(rulesMap);
+    sc.setContext(context);
   }
 
   @After
@@ -69,40 +69,40 @@ public class DefinePropertyActionTest {
 
   @Test
   public void good() throws JoranException {
-    simpleConfigurator.doConfigure(DEFINE_INPUT_DIR + GOOD_XML);
-    InterpretationContext ic = simpleConfigurator.getInterpreter().getInterpretationContext();
-    String inContextFoo = ic.getProperty("foo");
+    sc.doConfigure(DEFINE_INPUT_DIR + GOOD_XML);
+    // get from context
+    String inContextFoo = context.getProperty("foo");
     assertEquals("monster", inContextFoo);
   }
 
   @Test
   public void noName() throws JoranException {
-    simpleConfigurator.doConfigure(DEFINE_INPUT_DIR + NONAME_XML);
+    sc.doConfigure(DEFINE_INPUT_DIR + NONAME_XML);
     // get from context
     String inContextFoo = context.getProperty("foo");
     assertNull(inContextFoo);
     // check context errors
-    checker.assertContainsMatch(Status.ERROR,
-        "Missing property name for property definer. Near \\[define\\] line 1");
+    assertTrue(checker.containsMatch(Status.ERROR,
+        "Missing property name for property definer. Near \\[define\\] line 1"));
   }
 
   @Test
   public void noClass() throws JoranException {
-    simpleConfigurator.doConfigure(DEFINE_INPUT_DIR + NOCLASS_XML);
+    sc.doConfigure(DEFINE_INPUT_DIR + NOCLASS_XML);
     String inContextFoo = context.getProperty("foo");
     assertNull(inContextFoo);
-    checker.assertContainsMatch(Status.ERROR,
-        "Missing class name for property definer. Near \\[define\\] line 1");
+    assertTrue(checker.containsMatch(Status.ERROR,
+        "Missing class name for property definer. Near \\[define\\] line 1"));
   }
 
   @Test
   public void testBadClass() throws JoranException {
-    simpleConfigurator.doConfigure(DEFINE_INPUT_DIR + BADCLASS_XML);
+    sc.doConfigure(DEFINE_INPUT_DIR + BADCLASS_XML);
     // get from context
     String inContextFoo = context.getProperty("foo");
     assertNull(inContextFoo);
     // check context errors
-    checker.assertContainsMatch(Status.ERROR, "Could not create an PropertyDefiner of type");
+    checker.containsMatch(Status.ERROR, "Could not create an PropertyDefiner of type");
   }
 
 }
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/action/DummyAttributes.java b/logback-core/src/test/java/ch/qos/logback/core/joran/action/DummyAttributes.java
index 6b37ff3..83eef6c 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/action/DummyAttributes.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/action/DummyAttributes.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/action/IncludeActionTest.java b/logback-core/src/test/java/ch/qos/logback/core/joran/action/IncludeActionTest.java
index ef56bac..bd36b86 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/action/IncludeActionTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/action/IncludeActionTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -38,7 +38,7 @@ import ch.qos.logback.core.ContextBase;
 import ch.qos.logback.core.joran.TrivialConfigurator;
 import ch.qos.logback.core.joran.action.ext.StackAction;
 import ch.qos.logback.core.joran.spi.JoranException;
-import ch.qos.logback.core.joran.spi.ElementSelector;
+import ch.qos.logback.core.joran.spi.Pattern;
 import ch.qos.logback.core.status.Status;
 import ch.qos.logback.core.status.StatusChecker;
 import ch.qos.logback.core.testUtil.RandomUtil;
@@ -60,10 +60,6 @@ public class IncludeActionTest {
 
   static final String TOP_BY_FILE = INCLUSION_DIR_PREFIX + "topByFile.xml";
 
-  static final String TOP_OPTIONAL = INCLUSION_DIR_PREFIX + "topOptional.xml";
-
-  static final String TOP_OPTIONAL_RESOURCE = INCLUSION_DIR_PREFIX + "topOptionalResource.xml";
-
   static final String INTERMEDIARY_FILE = INCLUSION_DIR_PREFIX
       + "intermediaryByFile.xml";
 
@@ -93,10 +89,10 @@ public class IncludeActionTest {
   @Before
   public void setUp() throws Exception {
     FileTestUtil.makeTestOutputDir();
-    HashMap<ElementSelector, Action> rulesMap = new HashMap<ElementSelector, Action>();
-    rulesMap.put(new ElementSelector("x"), new NOPAction());
-    rulesMap.put(new ElementSelector("x/include"), new IncludeAction());
-    rulesMap.put(new ElementSelector("x/stack"), stackAction);
+    HashMap<Pattern, Action> rulesMap = new HashMap<Pattern, Action>();
+    rulesMap.put(new Pattern("x"), new NOPAction());
+    rulesMap.put(new Pattern("x/include"), new IncludeAction());
+    rulesMap.put(new Pattern("x/stack"), stackAction);
 
     tc = new TrivialConfigurator(rulesMap);
     tc.setContext(context);
@@ -120,21 +116,6 @@ public class IncludeActionTest {
   }
 
   @Test
-  public void optionalFile() throws JoranException {
-    tc.doConfigure(TOP_OPTIONAL);
-    verifyConfig(new String[] { "IA", "IB" });
-    StatusPrinter.print(context);
-  }
-
-  @Test
-  public void optionalResource() throws JoranException {
-    tc.doConfigure(TOP_OPTIONAL_RESOURCE);
-    verifyConfig(new String[] { "IA", "IB" });
-    StatusPrinter.print(context);
-    assertEquals(Status.INFO, statusChecker.getHighestLevel(0));
-  }
-
-  @Test
   public void basicResource() throws JoranException {
     System.setProperty(INCLUDE_KEY, INCLUDED_AS_RESOURCE);
     tc.doConfigure(INCLUDE_BY_RESOURCE);
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/action/PackageTest.java b/logback-core/src/test/java/ch/qos/logback/core/joran/action/PackageTest.java
index 255e7fa..17bae6c 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/action/PackageTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/action/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/action/PropertyActionTest.java b/logback-core/src/test/java/ch/qos/logback/core/joran/action/PropertyActionTest.java
index 169f17d..31ee85b 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/action/PropertyActionTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/action/PropertyActionTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -107,7 +107,7 @@ public class PropertyActionTest  {
   
   @Test
   public void testLoadFileWithPrerequisiteSubsitution() {
-    context.putProperty("STEM", CoreTestConstants.TEST_SRC_PREFIX + "input/joran");
+    context.putProperty("STEM", CoreTestConstants.TEST_DIR_PREFIX + "input/joran");
     atts.setValue("file", "${STEM}/propertyActionTest.properties");
     propertyAction.begin(ec, null, atts);
     assertEquals("tata", ec.getProperty("v1"));
@@ -116,7 +116,7 @@ public class PropertyActionTest  {
 
   @Test
   public void testLoadFile() {
-    atts.setValue("file", CoreTestConstants.TEST_SRC_PREFIX + "input/joran/propertyActionTest.properties");
+    atts.setValue("file", CoreTestConstants.TEST_DIR_PREFIX + "input/joran/propertyActionTest.properties");
     propertyAction.begin(ec, null, atts);
     assertEquals("tata", ec.getProperty("v1"));
     assertEquals("toto", ec.getProperty("v2"));
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/action/ext/BadBeginAction.java b/logback-core/src/test/java/ch/qos/logback/core/joran/action/ext/BadBeginAction.java
index 449a269..a6e6795 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/action/ext/BadBeginAction.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/action/ext/BadBeginAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/action/ext/BadEndAction.java b/logback-core/src/test/java/ch/qos/logback/core/joran/action/ext/BadEndAction.java
index 4574a5b..cd1e05d 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/action/ext/BadEndAction.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/action/ext/BadEndAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/action/ext/HelloAction.java b/logback-core/src/test/java/ch/qos/logback/core/joran/action/ext/HelloAction.java
index 48e14d9..33284cd 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/action/ext/HelloAction.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/action/ext/HelloAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/action/ext/IncAction.java b/logback-core/src/test/java/ch/qos/logback/core/joran/action/ext/IncAction.java
index 9815388..baddb0f 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/action/ext/IncAction.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/action/ext/IncAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/action/ext/StackAction.java b/logback-core/src/test/java/ch/qos/logback/core/joran/action/ext/StackAction.java
index a691aed..f1bc9a2 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/action/ext/StackAction.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/action/ext/StackAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/action/ext/TouchAction.java b/logback-core/src/test/java/ch/qos/logback/core/joran/action/ext/TouchAction.java
index 6dfb4e7..57ce9c1 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/action/ext/TouchAction.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/action/ext/TouchAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/conditional/IfThenElseAndIncludeCompositionTest.java b/logback-core/src/test/java/ch/qos/logback/core/joran/conditional/IfThenElseAndIncludeCompositionTest.java
index a03d936..4f5dc14 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/conditional/IfThenElseAndIncludeCompositionTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/conditional/IfThenElseAndIncludeCompositionTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -19,7 +19,6 @@ import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Stack;
 
-import ch.qos.logback.core.joran.spi.ElementSelector;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -32,6 +31,7 @@ import ch.qos.logback.core.joran.action.IncludeAction;
 import ch.qos.logback.core.joran.action.NOPAction;
 import ch.qos.logback.core.joran.action.ext.StackAction;
 import ch.qos.logback.core.joran.spi.JoranException;
+import ch.qos.logback.core.joran.spi.Pattern;
 import ch.qos.logback.core.testUtil.RandomUtil;
 import ch.qos.logback.core.util.CoreTestConstants;
 import ch.qos.logback.core.util.StatusPrinter;
@@ -56,15 +56,15 @@ public class IfThenElseAndIncludeCompositionTest {
   
   @Before
   public void setUp() throws Exception {
-    HashMap<ElementSelector, Action> rulesMap = new HashMap<ElementSelector, Action>();
-    rulesMap.put(new ElementSelector("x"), new NOPAction());
-    rulesMap.put(new ElementSelector("x/stack"), stackAction);
-    rulesMap.put(new ElementSelector("*/if"), new IfAction());
-    rulesMap.put(new ElementSelector("*/if/then"), new ThenAction());
-    rulesMap.put(new ElementSelector("*/if/then/*"), new NOPAction());
-    rulesMap.put(new ElementSelector("*/if/else"), new ElseAction());
-    rulesMap.put(new ElementSelector("*/if/else/*"), new NOPAction());
-    rulesMap.put(new ElementSelector("x/include"), new IncludeAction());
+    HashMap<Pattern, Action> rulesMap = new HashMap<Pattern, Action>();
+    rulesMap.put(new Pattern("x"), new NOPAction());
+    rulesMap.put(new Pattern("x/stack"), stackAction);
+    rulesMap.put(new Pattern("*/if"), new IfAction());
+    rulesMap.put(new Pattern("*/if/then"), new ThenAction());
+    rulesMap.put(new Pattern("*/if/then/*"), new NOPAction());
+    rulesMap.put(new Pattern("*/if/else"), new ElseAction());
+    rulesMap.put(new Pattern("*/if/else/*"), new NOPAction());    
+    rulesMap.put(new Pattern("x/include"), new IncludeAction());
     
     tc = new TrivialConfigurator(rulesMap);
     tc.setContext(context);
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/conditional/IfThenElseTest.java b/logback-core/src/test/java/ch/qos/logback/core/joran/conditional/IfThenElseTest.java
index 51af795..3028782 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/conditional/IfThenElseTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/conditional/IfThenElseTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -19,7 +19,6 @@ import java.util.HashMap;
 import java.util.Stack;
 
 import ch.qos.logback.core.joran.action.PropertyAction;
-import ch.qos.logback.core.joran.spi.ElementSelector;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -31,6 +30,7 @@ import ch.qos.logback.core.joran.action.Action;
 import ch.qos.logback.core.joran.action.NOPAction;
 import ch.qos.logback.core.joran.action.ext.StackAction;
 import ch.qos.logback.core.joran.spi.JoranException;
+import ch.qos.logback.core.joran.spi.Pattern;
 import ch.qos.logback.core.status.StatusChecker;
 import ch.qos.logback.core.testUtil.RandomUtil;
 import ch.qos.logback.core.util.CoreTestConstants;
@@ -56,15 +56,15 @@ public class IfThenElseTest {
 
   @Before
   public void setUp() throws Exception {
-    HashMap<ElementSelector, Action> rulesMap = new HashMap<ElementSelector, Action>();
-    rulesMap.put(new ElementSelector("x"), new NOPAction());
-    rulesMap.put(new ElementSelector("x/stack"), stackAction);
-    rulesMap.put(new ElementSelector("x/property"), new PropertyAction());
-    rulesMap.put(new ElementSelector("*/if"), new IfAction());
-    rulesMap.put(new ElementSelector("*/if/then"), new ThenAction());
-    rulesMap.put(new ElementSelector("*/if/then/*"), new NOPAction());
-    rulesMap.put(new ElementSelector("*/if/else"), new ElseAction());
-    rulesMap.put(new ElementSelector("*/if/else/*"), new NOPAction());
+    HashMap<Pattern, Action> rulesMap = new HashMap<Pattern, Action>();
+    rulesMap.put(new Pattern("x"), new NOPAction());
+    rulesMap.put(new Pattern("x/stack"), stackAction);
+    rulesMap.put(new Pattern("x/property"), new PropertyAction());
+    rulesMap.put(new Pattern("*/if"), new IfAction());
+    rulesMap.put(new Pattern("*/if/then"), new ThenAction());
+    rulesMap.put(new Pattern("*/if/then/*"), new NOPAction());
+    rulesMap.put(new Pattern("*/if/else"), new ElseAction());
+    rulesMap.put(new Pattern("*/if/else/*"), new NOPAction());
 
     tc = new TrivialConfigurator(rulesMap);
     tc.setContext(context);
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/conditional/PackageTest.java b/logback-core/src/test/java/ch/qos/logback/core/joran/conditional/PackageTest.java
index fcbac71..7fae84c 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/conditional/PackageTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/conditional/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/conditional/PropertyEvalScriptBuilderTest.java b/logback-core/src/test/java/ch/qos/logback/core/joran/conditional/PropertyEvalScriptBuilderTest.java
index 92e5eba..624e9c4 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/conditional/PropertyEvalScriptBuilderTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/conditional/PropertyEvalScriptBuilderTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/event/InPlayFireTest.java b/logback-core/src/test/java/ch/qos/logback/core/joran/event/InPlayFireTest.java
index 4558f68..e24d873 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/event/InPlayFireTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/event/InPlayFireTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -18,8 +18,6 @@ import static org.junit.Assert.assertTrue;
 
 import java.util.HashMap;
 
-import ch.qos.logback.core.joran.spi.ElementPath;
-import ch.qos.logback.core.joran.spi.ElementSelector;
 import org.junit.Test;
 
 import ch.qos.logback.core.Context;
@@ -27,22 +25,23 @@ import ch.qos.logback.core.ContextBase;
 import ch.qos.logback.core.joran.TrivialConfigurator;
 import ch.qos.logback.core.joran.action.Action;
 import ch.qos.logback.core.joran.spi.JoranException;
+import ch.qos.logback.core.joran.spi.Pattern;
 import ch.qos.logback.core.util.CoreTestConstants;
 
 public class InPlayFireTest  {
 
   Context context = new ContextBase();
-  HashMap<ElementSelector, Action> rulesMap = new HashMap<ElementSelector, Action>();
+  HashMap<Pattern, Action> rulesMap = new HashMap<Pattern, Action>();
 
   @Test
   public void testBasic() throws JoranException {
     ListenAction listenAction = new ListenAction();
     
-    rulesMap.put(new ElementSelector("fire"), listenAction);
+    rulesMap.put(new Pattern("fire"), listenAction);
     TrivialConfigurator gc = new TrivialConfigurator(rulesMap);
 
     gc.setContext(context);
-    gc.doConfigure(CoreTestConstants.TEST_SRC_PREFIX + "input/joran/fire1.xml");
+    gc.doConfigure(CoreTestConstants.TEST_DIR_PREFIX + "input/joran/fire1.xml");
     
     //for(SaxEvent se: listenAction.getSeList()) {
     //  System.out.println(se);
@@ -58,11 +57,11 @@ public class InPlayFireTest  {
   public void testReplay() throws JoranException {
     ListenAction listenAction = new ListenAction();
     
-    rulesMap.put(new ElementSelector("fire"), listenAction);
+    rulesMap.put(new Pattern("fire"), listenAction);
     TrivialConfigurator gc = new TrivialConfigurator(rulesMap);
 
     gc.setContext(context);
-    gc.doConfigure(CoreTestConstants.TEST_SRC_PREFIX + "input/joran/fire1.xml");
+    gc.doConfigure(CoreTestConstants.TEST_DIR_PREFIX + "input/joran/fire1.xml");
     
 //    for(SaxEvent se: listenAction.getSeList()) {
 //      System.out.println(se);
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/event/ListenAction.java b/logback-core/src/test/java/ch/qos/logback/core/joran/event/ListenAction.java
index c448a7c..56d9a57 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/event/ListenAction.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/event/ListenAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/event/PackageTest.java b/logback-core/src/test/java/ch/qos/logback/core/joran/event/PackageTest.java
index b32bca2..b6d31a6 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/event/PackageTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/event/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/event/SaxEventRecorderTest.java b/logback-core/src/test/java/ch/qos/logback/core/joran/event/SaxEventRecorderTest.java
index b5493b6..12995a2 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/event/SaxEventRecorderTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/event/SaxEventRecorderTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -47,8 +47,9 @@ public class SaxEventRecorderTest {
   }
 
   public List<SaxEvent> doTest(String filename) throws Exception {
-    SaxEventRecorder recorder = new SaxEventRecorder(context);
-    FileInputStream fis = new FileInputStream(CoreTestConstants.TEST_SRC_PREFIX
+    SaxEventRecorder recorder = new SaxEventRecorder();
+    recorder.setContext(context);
+    FileInputStream fis = new FileInputStream(CoreTestConstants.TEST_DIR_PREFIX
         + "input/joran/"+ filename);
     recorder.recordEvents(fis);
     return  recorder.getSaxEventList();
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/event/stax/StaxEventRecorderTest.java b/logback-core/src/test/java/ch/qos/logback/core/joran/event/stax/StaxEventRecorderTest.java
deleted file mode 100644
index 266e933..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/event/stax/StaxEventRecorderTest.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package ch.qos.logback.core.joran.event.stax;
-
-import ch.qos.logback.core.Context;
-import ch.qos.logback.core.ContextBase;
-import ch.qos.logback.core.status.Status;
-import ch.qos.logback.core.status.StatusChecker;
-import ch.qos.logback.core.status.StatusManager;
-import ch.qos.logback.core.util.CoreTestConstants;
-import org.junit.Test;
-
-import javax.xml.stream.events.Attribute;
-import java.io.FileInputStream;
-import java.util.List;
-
-import static org.junit.Assert.*;
-
-public class StaxEventRecorderTest {
-
-
-  Context context = new ContextBase();
-  StatusChecker statusChecker = new StatusChecker(context);
-
-
-  public List<StaxEvent> doTest(String filename) throws Exception {
-    StaxEventRecorder recorder = new StaxEventRecorder(context);
-    FileInputStream fis = new FileInputStream(CoreTestConstants.TEST_SRC_PREFIX
-            + "input/joran/" + filename);
-    recorder.recordEvents(fis);
-    return recorder.getEventList();
-  }
-
-  public void dump(List<StaxEvent> seList) {
-    for (StaxEvent se : seList) {
-      System.out.println(se);
-    }
-  }
-
-  @Test
-  public void testParsingOfXMLWithAttributesAndBodyText() throws Exception {
-    List<StaxEvent> seList = doTest("event1.xml");
-    assertTrue(statusChecker.getHighestLevel(0) == Status.INFO);
-    //dump(seList);
-    assertEquals(11, seList.size());
-    assertEquals("test", seList.get(0).getName());
-    assertEquals("badBegin", seList.get(1).getName());
-    StartEvent startEvent = (StartEvent) seList.get(7);
-    assertEquals("John Doe", startEvent.getAttributeByName("name").getValue());
-    assertEquals("XXX&", ((BodyEvent) seList.get(8)).getText());
-  }
-
-  @Test
-  public void testProcessingOfTextWithEntityCharacters() throws Exception {
-    List<StaxEvent> seList = doTest("ampEvent.xml");
-    StatusManager sm = context.getStatusManager();
-    assertTrue(statusChecker.getHighestLevel(0) == Status.INFO);
-    //dump(seList);
-    assertEquals(3, seList.size());
-
-    BodyEvent be = (BodyEvent) seList.get(1);
-    assertEquals("xxx & yyy", be.getText());
-  }
-
-  @Test
-  public void testAttributeProcessing() throws Exception {
-    List<StaxEvent> seList = doTest("inc.xml");
-    StatusManager sm = context.getStatusManager();
-    assertTrue(statusChecker.getHighestLevel(0) == Status.INFO);
-    assertEquals(4, seList.size());
-    StartEvent se = (StartEvent) seList.get(1);
-    Attribute attr = se.getAttributeByName("increment");
-    assertNotNull(attr);
-    assertEquals("1", attr.getValue());
-  }
-
-  @Test
-  public void bodyWithSpacesAndQuotes() throws Exception {
-    List<StaxEvent> seList = doTest("spacesAndQuotes.xml");
-    assertEquals(3, seList.size());
-    BodyEvent be = (BodyEvent) seList.get(1);
-    assertEquals("[x][x] \"xyz\"%n", be.getText());
-  }
-}
-
-
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/implicitAction/Cake.java b/logback-core/src/test/java/ch/qos/logback/core/joran/implicitAction/Cake.java
index e08434a..40b6ebb 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/implicitAction/Cake.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/implicitAction/Cake.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/implicitAction/Fruit.java b/logback-core/src/test/java/ch/qos/logback/core/joran/implicitAction/Fruit.java
index 0348c14..413bea4 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/implicitAction/Fruit.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/implicitAction/Fruit.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/implicitAction/FruitContext.java b/logback-core/src/test/java/ch/qos/logback/core/joran/implicitAction/FruitContext.java
index 6b37993..6d85086 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/implicitAction/FruitContext.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/implicitAction/FruitContext.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/implicitAction/FruitContextAction.java b/logback-core/src/test/java/ch/qos/logback/core/joran/implicitAction/FruitContextAction.java
index b2e4083..db3403b 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/implicitAction/FruitContextAction.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/implicitAction/FruitContextAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/implicitAction/ImplicitActionTest.java b/logback-core/src/test/java/ch/qos/logback/core/joran/implicitAction/ImplicitActionTest.java
index e31d7c6..9d033af 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/implicitAction/ImplicitActionTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/implicitAction/ImplicitActionTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -24,13 +24,13 @@ import org.junit.Test;
 
 import ch.qos.logback.core.joran.SimpleConfigurator;
 import ch.qos.logback.core.joran.action.Action;
-import ch.qos.logback.core.joran.spi.ElementSelector;
+import ch.qos.logback.core.joran.spi.Pattern;
 import ch.qos.logback.core.util.CoreTestConstants;
 import ch.qos.logback.core.util.StatusPrinter;
 
 public class ImplicitActionTest {
 
-  static final String IMPLCIT_DIR = CoreTestConstants.TEST_SRC_PREFIX
+  static final String IMPLCIT_DIR = CoreTestConstants.TEST_DIR_PREFIX
       + "input/joran/implicitAction/";
 
   FruitContext fruitContext = new FruitContext();
@@ -39,8 +39,8 @@ public class ImplicitActionTest {
   @Before
   public void setUp() throws Exception {
     fruitContext.setName("fruits");
-    HashMap<ElementSelector, Action> rulesMap = new HashMap<ElementSelector, Action>();
-    rulesMap.put(new ElementSelector("/context/"), new FruitContextAction());
+    HashMap<Pattern, Action> rulesMap = new HashMap<Pattern, Action>();
+    rulesMap.put(new Pattern("/context/"), new FruitContextAction());
     simpleConfigurator = new SimpleConfigurator(rulesMap);
     simpleConfigurator.setContext(fruitContext);
   }
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/implicitAction/PackageTest.java b/logback-core/src/test/java/ch/qos/logback/core/joran/implicitAction/PackageTest.java
index 20500f4..bc46fef 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/implicitAction/PackageTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/implicitAction/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/replay/Fruit.java b/logback-core/src/test/java/ch/qos/logback/core/joran/replay/Fruit.java
index 58e1fd8..f4a948c 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/replay/Fruit.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/replay/Fruit.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/replay/FruitConfigurationTest.java b/logback-core/src/test/java/ch/qos/logback/core/joran/replay/FruitConfigurationTest.java
index 704b164..6c23e64 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/replay/FruitConfigurationTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/replay/FruitConfigurationTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -20,12 +20,12 @@ import static org.junit.Assert.assertTrue;
 import java.util.HashMap;
 import java.util.List;
 
-import ch.qos.logback.core.joran.spi.ElementSelector;
 import org.junit.Test;
 
 import ch.qos.logback.core.joran.SimpleConfigurator;
 import ch.qos.logback.core.joran.action.Action;
 import ch.qos.logback.core.joran.action.NOPAction;
+import ch.qos.logback.core.joran.spi.Pattern;
 import ch.qos.logback.core.util.CoreTestConstants;
 import ch.qos.logback.core.util.StatusPrinter;
 
@@ -39,16 +39,16 @@ public class FruitConfigurationTest  {
   public List<FruitShell> doFirstPart(String filename) throws Exception {
 
     try {
-      HashMap<ElementSelector, Action> rulesMap = new HashMap<ElementSelector, Action>();
-      rulesMap.put(new ElementSelector("group/fruitShell"), new FruitShellAction());
-      rulesMap.put(new ElementSelector("group/fruitShell/fruit"),
+      HashMap<Pattern, Action> rulesMap = new HashMap<Pattern, Action>();
+      rulesMap.put(new Pattern("group/fruitShell"), new FruitShellAction());
+      rulesMap.put(new Pattern("group/fruitShell/fruit"),
           new FruitFactoryAction());
-      rulesMap.put(new ElementSelector("group/fruitShell/fruit/*"), new NOPAction());
+      rulesMap.put(new Pattern("group/fruitShell/fruit/*"), new NOPAction());
       SimpleConfigurator simpleConfigurator = new SimpleConfigurator(rulesMap);
 
       simpleConfigurator.setContext(fruitContext);
 
-      simpleConfigurator.doConfigure(CoreTestConstants.TEST_SRC_PREFIX + "input/joran/replay/"
+      simpleConfigurator.doConfigure(CoreTestConstants.TEST_DIR_PREFIX + "input/joran/replay/"
           + filename);
 
       return fruitContext.getFruitShellList();
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/replay/FruitConfigurator.java b/logback-core/src/test/java/ch/qos/logback/core/joran/replay/FruitConfigurator.java
index 4cb7de5..80dcabf 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/replay/FruitConfigurator.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/replay/FruitConfigurator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -23,7 +23,7 @@ import ch.qos.logback.core.joran.event.SaxEvent;
 import ch.qos.logback.core.joran.spi.EventPlayer;
 import ch.qos.logback.core.joran.spi.Interpreter;
 import ch.qos.logback.core.joran.spi.JoranException;
-import ch.qos.logback.core.joran.spi.ElementSelector;
+import ch.qos.logback.core.joran.spi.Pattern;
 import ch.qos.logback.core.joran.spi.RuleStore;
 
 public class FruitConfigurator extends GenericConfigurator {
@@ -56,7 +56,7 @@ public class FruitConfigurator extends GenericConfigurator {
   
   @Override
   protected void addInstanceRules(RuleStore rs) {
-    rs.addRule(new ElementSelector("fruitShell"), new NOPAction());
+    rs.addRule(new Pattern("fruitShell"), new NOPAction());
   }
 
 }
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/replay/FruitContext.java b/logback-core/src/test/java/ch/qos/logback/core/joran/replay/FruitContext.java
index 2ae6d0d..49ec6de 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/replay/FruitContext.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/replay/FruitContext.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/replay/FruitFactory.java b/logback-core/src/test/java/ch/qos/logback/core/joran/replay/FruitFactory.java
index 5d6bacd..444583f 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/replay/FruitFactory.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/replay/FruitFactory.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/replay/FruitFactoryAction.java b/logback-core/src/test/java/ch/qos/logback/core/joran/replay/FruitFactoryAction.java
index 54a8edd..d1379c9 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/replay/FruitFactoryAction.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/replay/FruitFactoryAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/replay/FruitShell.java b/logback-core/src/test/java/ch/qos/logback/core/joran/replay/FruitShell.java
index bbd5539..9c4df85 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/replay/FruitShell.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/replay/FruitShell.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/replay/FruitShellAction.java b/logback-core/src/test/java/ch/qos/logback/core/joran/replay/FruitShellAction.java
index 6d4e023..043f070 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/replay/FruitShellAction.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/replay/FruitShellAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/replay/PackageTest.java b/logback-core/src/test/java/ch/qos/logback/core/joran/replay/PackageTest.java
index 606b097..151cb72 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/replay/PackageTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/replay/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/replay/WeightytFruit.java b/logback-core/src/test/java/ch/qos/logback/core/joran/replay/WeightytFruit.java
index bc3bfbd..d9d026d 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/replay/WeightytFruit.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/replay/WeightytFruit.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/spi/CaseCombinator.java b/logback-core/src/test/java/ch/qos/logback/core/joran/spi/CaseCombinator.java
index 8011357..206a4e8 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/spi/CaseCombinator.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/spi/CaseCombinator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/spi/CaseCombinatorTest.java b/logback-core/src/test/java/ch/qos/logback/core/joran/spi/CaseCombinatorTest.java
index ca87412..f7109c6 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/spi/CaseCombinatorTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/spi/CaseCombinatorTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/spi/ConfigurationWatchListTest.java b/logback-core/src/test/java/ch/qos/logback/core/joran/spi/ConfigurationWatchListTest.java
index e3be755..25e7aa4 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/spi/ConfigurationWatchListTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/spi/ConfigurationWatchListTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/spi/DefaultNestedComponentRegistryTest.java b/logback-core/src/test/java/ch/qos/logback/core/joran/spi/DefaultNestedComponentRegistryTest.java
index f3b3faf..1dcfd59 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/spi/DefaultNestedComponentRegistryTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/spi/DefaultNestedComponentRegistryTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -41,14 +41,14 @@ public class DefaultNestedComponentRegistryTest {
   public void smoke() {
     String propertyName = "window";
     registry.add(House.class, propertyName, Window.class);
-    Class<?> result = registry.findDefaultComponentType(House.class, propertyName);
+    Class result = registry.findDefaultComponentType(House.class, propertyName);
     assertEquals(Window.class, result);
   }
 
   @Test
   public void absent() {
     registry.add(House.class, "a", Window.class);
-    Class<?> result = registry.findDefaultComponentType(House.class, "other");
+    Class result = registry.findDefaultComponentType(House.class, "other");
     assertNull(result);
   }
 }
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/spi/DoNotAutoStart.java b/logback-core/src/test/java/ch/qos/logback/core/joran/spi/DoNotAutoStart.java
index fc03c56..7a3d9bb 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/spi/DoNotAutoStart.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/spi/DoNotAutoStart.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/spi/ElementSelectorTest.java b/logback-core/src/test/java/ch/qos/logback/core/joran/spi/ElementSelectorTest.java
deleted file mode 100644
index cb8c67d..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/spi/ElementSelectorTest.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.joran.spi;
-
-import static org.junit.Assert.assertEquals;
-
-import org.junit.Test;
-
-/**
- * Test pattern manipulation code.
- * 
- * @author Ceki Gulcu
- */
-public class ElementSelectorTest {
-
-  @Test
-  public void test1() {
-    ElementSelector p = new ElementSelector("a");
-    assertEquals(1, p.size());
-    assertEquals("a", p.peekLast());
-    assertEquals("a", p.get(0));
-  }
-
-  @Test
-  public void testSuffix() {
-    ElementSelector p = new ElementSelector("a/");
-    assertEquals(1, p.size());
-    assertEquals("a", p.peekLast());
-    assertEquals("a", p.get(0));
-  }
-  
-  @Test
-  public void test2() {
-    ElementSelector p = new ElementSelector("a/b");
-    assertEquals(2, p.size());
-    assertEquals("b", p.peekLast());
-    assertEquals("a", p.get(0));
-    assertEquals("b", p.get(1));
-  }
-
-  @Test
-  public void test3() {
-    ElementSelector p = new ElementSelector("a123/b1234/cvvsdf");
-    assertEquals(3, p.size());
-    assertEquals("a123", p.get(0));
-    assertEquals("b1234", p.get(1));
-    assertEquals("cvvsdf", p.get(2));
-  }
-
-  @Test
-  public void test4() {
-    ElementSelector p = new ElementSelector("/a123/b1234/cvvsdf");
-    assertEquals(3, p.size());
-    assertEquals("a123", p.get(0));
-    assertEquals("b1234", p.get(1));
-    assertEquals("cvvsdf", p.get(2));
-  }
-
-  @Test
-  public void test5() {
-    ElementSelector p = new ElementSelector("//a");
-    assertEquals(1, p.size());
-    assertEquals("a", p.get(0));
-  }
-
-  @Test
-  public void test6() {
-    ElementSelector p = new ElementSelector("//a//b");
-    assertEquals(2, p.size());
-    assertEquals("a", p.get(0));
-    assertEquals("b", p.get(1));
-  }
-
-  
-  // test tail matching
-  @Test
-  public void testTailMatch() {
-    {
-      ElementPath p = new ElementPath("/a/b");
-      ElementSelector ruleElementSelector = new ElementSelector("*");
-      assertEquals(0, ruleElementSelector.getTailMatchLength(p));
-    }
-
-    {
-      ElementPath p = new ElementPath("/a");
-      ElementSelector ruleElementSelector = new ElementSelector("*/a");
-      assertEquals(1, ruleElementSelector.getTailMatchLength(p));
-    }
-
-    {
-      ElementPath p = new ElementPath("/A");
-      ElementSelector ruleElementSelector = new ElementSelector("*/a");
-      assertEquals(1, ruleElementSelector.getTailMatchLength(p));
-    }
-    
-    {
-      ElementPath p = new ElementPath("/a");
-      ElementSelector ruleElementSelector = new ElementSelector("*/A");
-      assertEquals(1, ruleElementSelector.getTailMatchLength(p));
-    }
-    
-    
-    {
-      ElementPath p = new ElementPath("/a/b");
-      ElementSelector ruleElementSelector = new ElementSelector("*/b");
-      assertEquals(1, ruleElementSelector.getTailMatchLength(p));
-    }
-    
-    {
-      ElementPath p = new ElementPath("/a/B");
-      ElementSelector ruleElementSelector = new ElementSelector("*/b");
-      assertEquals(1, ruleElementSelector.getTailMatchLength(p));
-    }
-    
-    {
-      ElementPath p = new ElementPath("/a/b/c");
-      ElementSelector ruleElementSelector = new ElementSelector("*/b/c");
-      assertEquals(2, ruleElementSelector.getTailMatchLength(p));
-    }
-  }
-  
-  // test prefix matching
-  @Test
-  public void testPrefixMatch() {
-    {
-      ElementPath p = new ElementPath("/a/b");
-      ElementSelector ruleElementSelector = new ElementSelector("/x/*");
-      assertEquals(0, ruleElementSelector.getPrefixMatchLength(p));
-    }
-
-    {
-      ElementPath p = new ElementPath("/a");
-      ElementSelector ruleElementSelector = new ElementSelector("/x/*");
-      assertEquals(0, ruleElementSelector.getPrefixMatchLength(p));
-    }
-
-    {
-      ElementPath p = new ElementPath("/a/b");
-      ElementSelector ruleElementSelector = new ElementSelector("/a/*");
-      assertEquals(1, ruleElementSelector.getPrefixMatchLength(p));
-    }
-
-    {
-      ElementPath p = new ElementPath("/a/b");
-      ElementSelector ruleElementSelector = new ElementSelector("/A/*");
-      assertEquals(1, ruleElementSelector.getPrefixMatchLength(p));
-    }
-    
-    {
-      ElementPath p = new ElementPath("/A/b");
-      ElementSelector ruleElementSelector = new ElementSelector("/a/*");
-      assertEquals(1, ruleElementSelector.getPrefixMatchLength(p));
-    }
-    
-    {
-      ElementPath p = new ElementPath("/a/b");
-      ElementSelector ruleElementSelector = new ElementSelector("/a/b/*");
-      assertEquals(2, ruleElementSelector.getPrefixMatchLength(p));
-    }
-    
-    {
-      ElementPath p = new ElementPath("/a/b");
-      ElementSelector ruleElementSelector = new ElementSelector("/*");
-      assertEquals(0, ruleElementSelector.getPrefixMatchLength(p));
-    }
-  }
-
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/spi/NoAutoStartUtilTest.java b/logback-core/src/test/java/ch/qos/logback/core/joran/spi/NoAutoStartUtilTest.java
index 8d88168..f0d6be9 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/spi/NoAutoStartUtilTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/spi/NoAutoStartUtilTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/spi/PackageTest.java b/logback-core/src/test/java/ch/qos/logback/core/joran/spi/PackageTest.java
index 2e9c8d0..a89d870 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/spi/PackageTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/spi/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -18,7 +18,7 @@ import org.junit.runners.Suite;
 import org.junit.runners.Suite.SuiteClasses;
 
 @RunWith(Suite.class)
- at SuiteClasses( { ElementSelectorTest.class, SimpleRuleStoreTest.class,
+ at SuiteClasses( { PatternTest.class, SimpleRuleStoreTest.class,
     NoAutoStartUtilTest.class,  ConfigurationWatchListTest.class,
     DefaultNestedComponentRegistryTest.class, CaseCombinatorTest.class })
 public class PackageTest {
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/spi/PatternTest.java b/logback-core/src/test/java/ch/qos/logback/core/joran/spi/PatternTest.java
new file mode 100644
index 0000000..f6b263e
--- /dev/null
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/spi/PatternTest.java
@@ -0,0 +1,179 @@
+/**
+ * Logback: the reliable, generic, fast and flexible logging framework.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
+ *
+ * This program and the accompanying materials are dual-licensed under
+ * either the terms of the Eclipse Public License v1.0 as published by
+ * the Eclipse Foundation
+ *
+ *   or (per the licensee's choosing)
+ *
+ * under the terms of the GNU Lesser General Public License version 2.1
+ * as published by the Free Software Foundation.
+ */
+package ch.qos.logback.core.joran.spi;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+/**
+ * Test pattern manipulation code.
+ * 
+ * @author Ceki Gulcu
+ */
+public class PatternTest {
+
+  @Test
+  public void test1() {
+    Pattern p = new Pattern("a");
+    assertEquals(1, p.size());
+    assertEquals("a", p.peekLast());
+    assertEquals("a", p.get(0));
+  }
+
+  @Test
+  public void testSuffix() {
+    Pattern p = new Pattern("a/");
+    assertEquals(1, p.size());
+    assertEquals("a", p.peekLast());
+    assertEquals("a", p.get(0));
+  }
+  
+  @Test
+  public void test2() {
+    Pattern p = new Pattern("a/b");
+    assertEquals(2, p.size());
+    assertEquals("b", p.peekLast());
+    assertEquals("a", p.get(0));
+    assertEquals("b", p.get(1));
+  }
+
+  @Test
+  public void test3() {
+    Pattern p = new Pattern("a123/b1234/cvvsdf");
+    assertEquals(3, p.size());
+    assertEquals("a123", p.get(0));
+    assertEquals("b1234", p.get(1));
+    assertEquals("cvvsdf", p.get(2));
+  }
+
+  @Test
+  public void test4() {
+    Pattern p = new Pattern("/a123/b1234/cvvsdf");
+    assertEquals(3, p.size());
+    assertEquals("a123", p.get(0));
+    assertEquals("b1234", p.get(1));
+    assertEquals("cvvsdf", p.get(2));
+  }
+
+  @Test
+  public void test5() {
+    Pattern p = new Pattern("//a");
+    assertEquals(1, p.size());
+    assertEquals("a", p.get(0));
+  }
+
+  @Test
+  public void test6() {
+    Pattern p = new Pattern("//a//b");
+    assertEquals(2, p.size());
+    assertEquals("a", p.get(0));
+    assertEquals("b", p.get(1));
+  }
+
+  
+  // test tail matching
+  @Test
+  public void testTailMatch() {
+    {
+      Pattern p = new Pattern("/a/b");
+      Pattern rulePattern = new Pattern("*");
+      assertEquals(0, p.getTailMatchLength(rulePattern));
+    }
+
+    {
+      Pattern p = new Pattern("/a");
+      Pattern rulePattern = new Pattern("*/a");
+      assertEquals(1, p.getTailMatchLength(rulePattern));
+    }
+
+    {
+      Pattern p = new Pattern("/A");
+      Pattern rulePattern = new Pattern("*/a");
+      assertEquals(1, p.getTailMatchLength(rulePattern));
+    }
+    
+    {
+      Pattern p = new Pattern("/a");
+      Pattern rulePattern = new Pattern("*/A");
+      assertEquals(1, p.getTailMatchLength(rulePattern));
+    }
+    
+    
+    {
+      Pattern p = new Pattern("/a/b");
+      Pattern rulePattern = new Pattern("*/b");
+      assertEquals(1, p.getTailMatchLength(rulePattern));
+    }
+    
+    {
+      Pattern p = new Pattern("/a/B");
+      Pattern rulePattern = new Pattern("*/b");
+      assertEquals(1, p.getTailMatchLength(rulePattern));
+    }
+    
+    {
+      Pattern p = new Pattern("/a/b/c");
+      Pattern rulePattern = new Pattern("*/b/c");
+      assertEquals(2, p.getTailMatchLength(rulePattern));
+    }
+  }
+  
+  // test prefix matching
+  @Test
+  public void testPrefixMatch() {
+    {
+      Pattern p = new Pattern("/a/b");
+      Pattern rulePattern = new Pattern("/x/*");
+      assertEquals(0, p.getPrefixMatchLength(rulePattern));
+    }
+
+    {
+      Pattern p = new Pattern("/a");
+      Pattern rulePattern = new Pattern("/x/*");
+      assertEquals(0, p.getPrefixMatchLength(rulePattern));
+    }
+
+    {
+      Pattern p = new Pattern("/a/b");
+      Pattern rulePattern = new Pattern("/a/*");
+      assertEquals(1, p.getPrefixMatchLength(rulePattern));
+    }
+
+    {
+      Pattern p = new Pattern("/a/b");
+      Pattern rulePattern = new Pattern("/A/*");
+      assertEquals(1, p.getPrefixMatchLength(rulePattern));
+    }
+    
+    {
+      Pattern p = new Pattern("/A/b");
+      Pattern rulePattern = new Pattern("/a/*");
+      assertEquals(1, p.getPrefixMatchLength(rulePattern));
+    }
+    
+    {
+      Pattern p = new Pattern("/a/b");
+      Pattern rulePattern = new Pattern("/a/b/*");
+      assertEquals(2, p.getPrefixMatchLength(rulePattern));
+    }
+    
+    {
+      Pattern p = new Pattern("/a/b");
+      Pattern rulePattern = new Pattern("/*");
+      assertEquals(0, p.getPrefixMatchLength(rulePattern));
+    }
+  }
+
+}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/spi/SimpleRuleStoreTest.java b/logback-core/src/test/java/ch/qos/logback/core/joran/spi/SimpleRuleStoreTest.java
index 0251343..a1299b7 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/spi/SimpleRuleStoreTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/spi/SimpleRuleStoreTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -41,12 +41,11 @@ public class SimpleRuleStoreTest {
   
   @Test
   public void smoke() throws Exception {
-    srs.addRule(new ElementSelector("a/b"), new XAction());
+    srs.addRule(new Pattern("a/b"), new XAction());
 
     // test for all possible case combinations of "a/b"
     for (String s : cc.combinations("a/b")) {
-      System.out.println("s="+s);
-      List<Action> r = srs.matchActions(new ElementPath(s));
+       List r = srs.matchActions(new Pattern(s));
       assertNotNull(r);
       assertEquals(1, r.size());
 
@@ -58,11 +57,11 @@ public class SimpleRuleStoreTest {
 
   @Test
   public void smokeII() throws Exception {
-    srs.addRule(new ElementSelector("a/b"), new XAction());
-    srs.addRule(new ElementSelector("a/b"), new YAction());
+    srs.addRule(new Pattern("a/b"), new XAction());
+    srs.addRule(new Pattern("a/b"), new YAction());
 
     for (String s : cc.combinations("a/b")) {
-      List<Action> r = srs.matchActions(new ElementPath(s));
+      List r = srs.matchActions(new Pattern(s));
       assertNotNull(r);
       assertEquals(2, r.size());
 
@@ -78,11 +77,11 @@ public class SimpleRuleStoreTest {
 
   @Test
   public void testSlashSuffix() throws Exception {
-    ElementSelector pa = new ElementSelector("a/");
+    Pattern pa = new Pattern("a/");
     srs.addRule(pa, new XAction());
 
     for (String s : cc.combinations("a")) {
-      List<Action> r = srs.matchActions(new ElementPath(s));
+      List r = srs.matchActions(new Pattern(s));
       assertNotNull(r);
       assertEquals(1, r.size());
 
@@ -95,10 +94,10 @@ public class SimpleRuleStoreTest {
 
   @Test
   public void testTail1() throws Exception {
-    srs.addRule(new ElementSelector("*/b"), new XAction());
+    srs.addRule(new Pattern("*/b"), new XAction());
 
     for (String s : cc.combinations("a/b")) {
-      List<Action> r = srs.matchActions(new ElementPath(s));
+      List r = srs.matchActions(new Pattern(s));
       assertNotNull(r);
 
       assertEquals(1, r.size());
@@ -112,10 +111,10 @@ public class SimpleRuleStoreTest {
   @Test
   public void testTail2() throws Exception {
     SimpleRuleStore srs = new SimpleRuleStore(new ContextBase());
-    srs.addRule(new ElementSelector("*/c"), new XAction());
+    srs.addRule(new Pattern("*/c"), new XAction());
 
     for (String s : cc.combinations("a/b/c")) {
-      List<Action> r = srs.matchActions(new ElementPath(s));
+      List r = srs.matchActions(new Pattern(s));
       assertNotNull(r);
 
       assertEquals(1, r.size());
@@ -128,11 +127,11 @@ public class SimpleRuleStoreTest {
 
   @Test
   public void testTail3() throws Exception {
-    srs.addRule(new ElementSelector("*/b"), new XAction());
-    srs.addRule(new ElementSelector("*/a/b"), new YAction());
+    srs.addRule(new Pattern("*/b"), new XAction());
+    srs.addRule(new Pattern("*/a/b"), new YAction());
 
     for (String s : cc.combinations("a/b")) {
-      List<Action> r = srs.matchActions(new ElementPath(s));
+      List r = srs.matchActions(new Pattern(s));
       assertNotNull(r);
       assertEquals(1, r.size());
 
@@ -144,12 +143,12 @@ public class SimpleRuleStoreTest {
 
   @Test
   public void testTail4() throws Exception {
-    srs.addRule(new ElementSelector("*/b"), new XAction());
-    srs.addRule(new ElementSelector("*/a/b"), new YAction());
-    srs.addRule(new ElementSelector("a/b"), new ZAction());
+    srs.addRule(new Pattern("*/b"), new XAction());
+    srs.addRule(new Pattern("*/a/b"), new YAction());
+    srs.addRule(new Pattern("a/b"), new ZAction());
 
     for (String s : cc.combinations("a/b")) {
-      List<Action> r = srs.matchActions(new ElementPath(s));
+      List r = srs.matchActions(new Pattern(s));
       assertNotNull(r);
       assertEquals(1, r.size());
 
@@ -161,11 +160,11 @@ public class SimpleRuleStoreTest {
 
   @Test
   public void testSuffix() throws Exception {
-    srs.addRule(new ElementSelector("a"), new XAction());
-    srs.addRule(new ElementSelector("a/*"), new YAction());
+    srs.addRule(new Pattern("a"), new XAction());
+    srs.addRule(new Pattern("a/*"), new YAction());
 
     for (String s : cc.combinations("a/b")) {
-      List<Action> r = srs.matchActions(new ElementPath(s));
+      List r = srs.matchActions(new Pattern(s));
       assertNotNull(r);
       assertEquals(1, r.size());
       assertTrue(r.get(0) instanceof YAction);
@@ -174,23 +173,23 @@ public class SimpleRuleStoreTest {
 
   @Test
   public void testDeepSuffix() throws Exception {
-    srs.addRule(new ElementSelector("a"), new XAction(1));
-    srs.addRule(new ElementSelector("a/b/*"), new XAction(2));
+    srs.addRule(new Pattern("a"), new XAction(1));
+    srs.addRule(new Pattern("a/b/*"), new XAction(2));
 
     for (String s : cc.combinations("a/other")) {
-      List<Action> r = srs.matchActions(new ElementPath(s));
+      List r = srs.matchActions(new Pattern(s));
       assertNull(r);
     }
   }
 
   @Test
   public void testPrefixSuffixInteraction1() throws Exception {
-    srs.addRule(new ElementSelector("a"), new ZAction());
-    srs.addRule(new ElementSelector("a/*"), new YAction());
-    srs.addRule(new ElementSelector("*/a/b"), new XAction(3));
+    srs.addRule(new Pattern("a"), new ZAction());
+    srs.addRule(new Pattern("a/*"), new YAction());
+    srs.addRule(new Pattern("*/a/b"), new XAction(3));
 
     for (String s : cc.combinations("a/b")) {
-      List<Action> r = srs.matchActions(new ElementPath(s));
+      List r = srs.matchActions(new Pattern(s));
       assertNotNull(r);
 
       assertEquals(1, r.size());
@@ -203,13 +202,13 @@ public class SimpleRuleStoreTest {
 
   @Test
   public void testPrefixSuffixInteraction2() throws Exception {
-    srs.addRule(new ElementSelector("tG"), new XAction());
-    srs.addRule(new ElementSelector("tG/tS"), new YAction());
-    srs.addRule(new ElementSelector("tG/tS/test"), new ZAction());
-    srs.addRule(new ElementSelector("tG/tS/test/*"), new XAction(9));
+    srs.addRule(new Pattern("tG"), new XAction());
+    srs.addRule(new Pattern("tG/tS"), new YAction());
+    srs.addRule(new Pattern("tG/tS/test"), new ZAction());
+    srs.addRule(new Pattern("tG/tS/test/*"), new XAction(9));
 
     for (String s : cc.combinations("tG/tS/toto")) {
-      List<Action> r = srs.matchActions(new ElementPath(s));
+      List r = srs.matchActions(new Pattern(s));
       assertNull(r);
     }
   }
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/util/House.java b/logback-core/src/test/java/ch/qos/logback/core/joran/util/House.java
index 62a46bb..659137d 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/util/House.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/util/House.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/util/PackageTest.java b/logback-core/src/test/java/ch/qos/logback/core/joran/util/PackageTest.java
index 5211635..c48e33f 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/util/PackageTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/util/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/joran/util/PropertySetterTest.java b/logback-core/src/test/java/ch/qos/logback/core/joran/util/PropertySetterTest.java
index acc3306..83e32e3 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/joran/util/PropertySetterTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/joran/util/PropertySetterTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -132,14 +132,14 @@ public class PropertySetterTest {
 
   @Test
   public void testgetClassNameViaImplicitRules() {
-    Class<?> compClass = setter.getClassNameViaImplicitRules("door",
+    Class compClass = setter.getClassNameViaImplicitRules("door",
         AggregationType.AS_COMPLEX_PROPERTY, defaultComponentRegistry);
     assertEquals(Door.class, compClass);
   }
 
   @Test
   public void testgetComplexPropertyColleClassNameViaImplicitRules() {
-    Class<?> compClass = setter.getClassNameViaImplicitRules("window",
+    Class compClass = setter.getClassNameViaImplicitRules("window",
         AggregationType.AS_COMPLEX_PROPERTY_COLLECTION,
         defaultComponentRegistry);
     assertEquals(Window.class, compClass);
@@ -206,11 +206,11 @@ public class PropertySetterTest {
     Method relevantMethod = setter.getRelevantMethod("SwimmingPool",
         AggregationType.AS_COMPLEX_PROPERTY);
     assertNotNull(relevantMethod);
-    Class<?> spClass = setter.getDefaultClassNameByAnnonation("SwimmingPool",
+    Class spClass = setter.getDefaultClassNameByAnnonation("SwimmingPool",
         relevantMethod);
     assertEquals(SwimmingPoolImpl.class, spClass);
 
-    Class<?> classViaImplicitRules = setter.getClassNameViaImplicitRules(
+    Class classViaImplicitRules = setter.getClassNameViaImplicitRules(
         "SwimmingPool", AggregationType.AS_COMPLEX_PROPERTY,
         defaultComponentRegistry);
     assertEquals(SwimmingPoolImpl.class, classViaImplicitRules);
@@ -221,11 +221,11 @@ public class PropertySetterTest {
     Method relevantMethod = setter.getRelevantMethod("LargeSwimmingPool",
         AggregationType.AS_COMPLEX_PROPERTY_COLLECTION);
     assertNotNull(relevantMethod);
-    Class<?> spClass = setter.getDefaultClassNameByAnnonation("LargeSwimmingPool",
+    Class spClass = setter.getDefaultClassNameByAnnonation("LargeSwimmingPool",
         relevantMethod);
     assertEquals(LargeSwimmingPoolImpl.class, spClass);
 
-    Class<?> classViaImplicitRules = setter.getClassNameViaImplicitRules(
+    Class classViaImplicitRules = setter.getClassNameViaImplicitRules(
         "LargeSwimmingPool", AggregationType.AS_COMPLEX_PROPERTY_COLLECTION,
         defaultComponentRegistry);
     assertEquals(LargeSwimmingPoolImpl.class, classViaImplicitRules);
diff --git a/logback-core/src/test/java/ch/qos/logback/core/layout/DummyLayout.java b/logback-core/src/test/java/ch/qos/logback/core/layout/DummyLayout.java
index f82e411..81cee98 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/layout/DummyLayout.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/layout/DummyLayout.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/layout/NopLayout.java b/logback-core/src/test/java/ch/qos/logback/core/layout/NopLayout.java
index 2162465..d05fe0f 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/layout/NopLayout.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/layout/NopLayout.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/AbstractSSLSocketAppenderTest.java b/logback-core/src/test/java/ch/qos/logback/core/net/AbstractSSLSocketAppenderTest.java
deleted file mode 100644
index 59e66c7..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/AbstractSSLSocketAppenderTest.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net;
-
-import static org.junit.Assert.assertNotNull;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import ch.qos.logback.core.net.mock.MockContext;
-import ch.qos.logback.core.spi.PreSerializationTransformer;
-
-/**
- * Unit tests for {@link AbstractSSLSocketAppender}.
- *
- * @author Carl Harris
- */
-public class AbstractSSLSocketAppenderTest {
-  
-  private MockContext context = new MockContext();
-
-  private InstrumentedSSLSocketAppenderBase appender =
-      new InstrumentedSSLSocketAppenderBase();
-  
-  @Before
-  public void setUp() throws Exception {
-    appender.setContext(context);
-  }
-  
-  @Test
-  public void testUsingDefaultConfig() throws Exception {
-    // should be able to start and stop successfully with no SSL 
-    // configuration at all
-    appender.start();
-    assertNotNull(appender.getSocketFactory());
-    appender.stop();
-  }
-  
-  private static class InstrumentedSSLSocketAppenderBase 
-      extends AbstractSSLSocketAppender<Object> {
-
-    @Override
-    protected void postProcessEvent(Object event) {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    protected PreSerializationTransformer<Object> getPST() {
-      throw new UnsupportedOperationException();
-    }
-    
-  }
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/AbstractSocketAppenderTest.java b/logback-core/src/test/java/ch/qos/logback/core/net/AbstractSocketAppenderTest.java
deleted file mode 100644
index 9487fa4..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/AbstractSocketAppenderTest.java
+++ /dev/null
@@ -1,255 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-
-package ch.qos.logback.core.net;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import java.io.ObjectInputStream;
-import java.io.Serializable;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.util.List;
-import java.util.concurrent.*;
-
-import ch.qos.logback.core.BasicStatusManager;
-import ch.qos.logback.core.status.Status;
-import ch.qos.logback.core.status.StatusListener;
-import ch.qos.logback.core.status.StatusManager;
-import ch.qos.logback.core.util.StatusPrinter;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import ch.qos.logback.core.net.mock.MockContext;
-import ch.qos.logback.core.net.server.ServerSocketUtil;
-import ch.qos.logback.core.spi.PreSerializationTransformer;
-
-/**
- * Unit tests for {@link AbstractSocketAppender}.
- *
- * @author Carl Harris
- */
-public class AbstractSocketAppenderTest {
-
-  private static final int DELAY = 10000;
-
-  private ThreadPoolExecutor executorService = (ThreadPoolExecutor) Executors.newCachedThreadPool();
-  private MockContext mockContext = new MockContext(executorService);
-  private InstrumentedSocketAppender instrumentedAppender = new InstrumentedSocketAppender();
-
-  @Before
-  public void setUp() throws Exception {
-    instrumentedAppender.setContext(mockContext);
-  }
-
-  @After
-  public void tearDown() throws Exception {
-    instrumentedAppender.stop();
-    assertFalse(instrumentedAppender.isStarted());
-    executorService.shutdownNow();
-    assertTrue(executorService.awaitTermination(DELAY, TimeUnit.MILLISECONDS));
-  }
-
-  @Test
-  public void appenderShouldFailToStartWithoutValidPort() throws Exception {
-    instrumentedAppender.setPort(-1);
-    instrumentedAppender.setRemoteHost("localhost");
-    instrumentedAppender.setQueueSize(0);
-    instrumentedAppender.start();
-    assertFalse(instrumentedAppender.isStarted());
-    assertTrue(mockContext.getLastStatus().getMessage().contains("port"));
-  }
-
-  @Test
-  public void appenderShouldFailToStartWithoutValidRemoteHost() throws Exception {
-    instrumentedAppender.setPort(1);
-    instrumentedAppender.setRemoteHost(null);
-    instrumentedAppender.setQueueSize(0);
-    instrumentedAppender.start();
-    assertFalse(instrumentedAppender.isStarted());
-    assertTrue(mockContext.getLastStatus().getMessage().contains("remote host"));
-  }
-
-  @Test
-  public void appenderShouldFailToStartWithNegativeQueueSize() throws Exception {
-    instrumentedAppender.setPort(1);
-    instrumentedAppender.setRemoteHost("localhost");
-    instrumentedAppender.setQueueSize(-1);
-    instrumentedAppender.start();
-    assertFalse(instrumentedAppender.isStarted());
-    assertTrue(mockContext.getLastStatus().getMessage().contains("Queue"));
-  }
-
-  @Test
-  public void appenderShouldFailToStartWithUnresolvableRemoteHost() throws Exception {
-    instrumentedAppender.setPort(1);
-    instrumentedAppender.setRemoteHost("NOT.A.VALID.REMOTE.HOST.NAME");
-    instrumentedAppender.setQueueSize(0);
-    instrumentedAppender.start();
-    assertFalse(instrumentedAppender.isStarted());
-    assertTrue(mockContext.getLastStatus().getMessage().contains("unknown host"));
-  }
-
-  @Test
-  public void appenderShouldFailToStartWithZeroQueueLength() throws Exception {
-    instrumentedAppender.setPort(1);
-    instrumentedAppender.setRemoteHost("localhost");
-    instrumentedAppender.setQueueSize(0);
-    instrumentedAppender.start();
-    assertTrue(instrumentedAppender.isStarted());
-    assertTrue(instrumentedAppender.lastQueue instanceof SynchronousQueue);
-  }
-
-  @Test
-  public void appenderShouldStartWithValidParameters() throws Exception {
-    instrumentedAppender.setPort(1);
-    instrumentedAppender.setRemoteHost("localhost");
-    instrumentedAppender.setQueueSize(1);
-    instrumentedAppender.start();
-    assertTrue(instrumentedAppender.isStarted());
-    assertTrue(instrumentedAppender.lastQueue instanceof ArrayBlockingQueue);
-    assertEquals(1, instrumentedAppender.lastQueue.remainingCapacity());
-  }
-
-  // this test takes 1 second and is deemed too long
-  @Ignore
-  @Test(timeout = 2000)
-  public void appenderShouldCleanupTasksWhenStopped() throws Exception {
-    mockContext.setStatusManager(new BasicStatusManager());
-    instrumentedAppender.setPort(1);
-    instrumentedAppender.setRemoteHost("localhost");
-    instrumentedAppender.setQueueSize(1);
-    instrumentedAppender.start();
-    assertTrue(instrumentedAppender.isStarted());
-
-    waitForActiveCountToEqual(executorService, 2);
-    instrumentedAppender.stop();
-    waitForActiveCountToEqual(executorService, 0);
-    StatusPrinter.print(mockContext);
-    assertEquals(0, executorService.getActiveCount());
-
-  }
-
-  private void waitForActiveCountToEqual(ThreadPoolExecutor executorService, int i) {
-    while (executorService.getActiveCount() != i) {
-      try {
-        Thread.yield();
-        Thread.sleep(1);
-        System.out.print(".");
-      } catch (InterruptedException e) {
-      }
-    }
-  }
-
-
-  @Test
-  public void testAppendWhenNotStarted() throws Exception {
-    instrumentedAppender.setRemoteHost("localhost");
-    instrumentedAppender.start();
-    instrumentedAppender.stop();
-
-    // make sure the appender task has stopped
-    executorService.shutdownNow();
-    assertTrue(executorService.awaitTermination(DELAY, TimeUnit.MILLISECONDS));
-
-    instrumentedAppender.append("some event");
-    assertTrue(instrumentedAppender.lastQueue.isEmpty());
-  }
-
-  @Test(timeout = 1000)
-  public void testAppendSingleEvent() throws Exception {
-    instrumentedAppender.setRemoteHost("localhost");
-    instrumentedAppender.start();
-
-    instrumentedAppender.latch.await();
-    instrumentedAppender.append("some event");
-    assertTrue(instrumentedAppender.lastQueue.size() == 1);
-  }
-
-  @Test
-  public void testAppendEvent() throws Exception {
-    instrumentedAppender.setRemoteHost("localhost");
-    instrumentedAppender.setQueueSize(1);
-    instrumentedAppender.start();
-
-    // stop the appender task, but don't stop the appender
-    executorService.shutdownNow();
-    assertTrue(executorService.awaitTermination(DELAY, TimeUnit.MILLISECONDS));
-
-    instrumentedAppender.append("some event");
-    assertEquals("some event", instrumentedAppender.lastQueue.poll());
-  }
-
-  @Test
-  public void testDispatchEvent() throws Exception {
-    ServerSocket serverSocket = ServerSocketUtil.createServerSocket();
-    instrumentedAppender.setRemoteHost(serverSocket.getInetAddress().getHostAddress());
-    instrumentedAppender.setPort(serverSocket.getLocalPort());
-    instrumentedAppender.setQueueSize(1);
-    instrumentedAppender.start();
-
-    Socket appenderSocket = serverSocket.accept();
-    serverSocket.close();
-
-    instrumentedAppender.append("some event");
-
-    final int shortDelay = 100;
-    for (int i = 0, retries = DELAY / shortDelay;
-         !instrumentedAppender.lastQueue.isEmpty() && i < retries;
-         i++) {
-      Thread.sleep(shortDelay);
-    }
-    assertTrue(instrumentedAppender.lastQueue.isEmpty());
-
-    ObjectInputStream ois = new ObjectInputStream(appenderSocket.getInputStream());
-    assertEquals("some event", ois.readObject());
-    appenderSocket.close();
-
-  }
-
-  private static class InstrumentedSocketAppender extends AbstractSocketAppender<String> {
-
-    private BlockingQueue<String> lastQueue;
-    CountDownLatch latch = new  CountDownLatch(1);
-    @Override
-    protected void postProcessEvent(String event) {
-    }
-
-    @Override
-    protected PreSerializationTransformer<String> getPST() {
-      return new PreSerializationTransformer<String>() {
-        public Serializable transform(String event) {
-          return event;
-        }
-      };
-    }
-
-    @Override
-    protected void signalEntryInRunMethod() {
-        latch.countDown();
-    }
-
-    @Override
-    BlockingQueue<String> newBlockingQueue(int queueSize) {
-      lastQueue = super.newBlockingQueue(queueSize);
-      return lastQueue;
-    }
-
-  }
-
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/DefaultSocketConnectorTest.java b/logback-core/src/test/java/ch/qos/logback/core/net/DefaultSocketConnectorTest.java
deleted file mode 100644
index 6985aa3..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/DefaultSocketConnectorTest.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net;
-
-import java.net.ConnectException;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.net.SocketAddress;
-
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-import java.util.concurrent.locks.Condition;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import ch.qos.logback.core.net.SocketConnector.ExceptionHandler;
-import ch.qos.logback.core.net.server.ServerSocketUtil;
-
-import static junit.framework.Assert.assertNotNull;
-import static org.junit.Assert.fail;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-
-/**
- * Unit tests for {@link DefaultSocketConnector}.
- *
- * @author Carl Harris
- */
-public class DefaultSocketConnectorTest {
-
-  private static final int DELAY = 1000;
-  private static final int SHORT_DELAY = 10;
-  private static final int RETRY_DELAY = 10;
-
-  private MockExceptionHandler exceptionHandler = new MockExceptionHandler();
-  
-  private ServerSocket serverSocket;
-  private DefaultSocketConnector connector;
-
-  ExecutorService executor = Executors.newSingleThreadExecutor();
-
-  @Before
-  public void setUp() throws Exception {
-    serverSocket = ServerSocketUtil.createServerSocket();
-    connector = new DefaultSocketConnector(serverSocket.getInetAddress(),
-        serverSocket.getLocalPort(), 0, RETRY_DELAY);
-    connector.setExceptionHandler(exceptionHandler);
-  }
-  
-  @After
-  public void tearDown() throws Exception {
-    if (serverSocket != null) {
-      serverSocket.close();
-    }
-  }
-  
-  @Test
-  public void testConnect() throws Exception {
-    Future<Socket> connectorTask = executor.submit(connector);
-
-    Socket socket = connectorTask.get(2 * DELAY, TimeUnit.MILLISECONDS);
-    assertNotNull(socket);
-    connectorTask.cancel(true);
-
-    assertTrue(connectorTask.isDone());
-    socket.close();
-  }
-
-  @Test
-  public void testConnectionFails() throws Exception {
-    serverSocket.close();
-    Future<Socket> connectorTask = executor.submit(connector);
-
-    // this connection attempt will always timeout
-    try {
-      connectorTask.get(SHORT_DELAY, TimeUnit.MILLISECONDS);
-      fail();
-    } catch(TimeoutException e) {
-    }
-    Exception lastException = exceptionHandler.awaitConnectionFailed(DELAY);
-    assertTrue(lastException instanceof ConnectException);
-    assertFalse(connectorTask.isDone());
-    connectorTask.cancel(true);
-
-    //thread.join(4 * DELAY);
-    assertTrue(connectorTask.isCancelled());
-  }
-
-  @Test(timeout = 5000)
-  public void testConnectEventually() throws Exception {
-    serverSocket.close();
-
-    Future<Socket> connectorTask = executor.submit(connector);
-    // this connection attempt will always timeout
-    try {
-      connectorTask.get(SHORT_DELAY, TimeUnit.MILLISECONDS);
-      fail();
-    } catch(TimeoutException e) {
-    }
-
-
-    // on Ceki's machine (Windows 7) this always takes 1second  regardless of the value of DELAY
-    Exception lastException = exceptionHandler.awaitConnectionFailed(DELAY);
-    assertNotNull(lastException);
-    assertTrue(lastException instanceof ConnectException);
-
-    // now rebind to the same local address
-    SocketAddress address = serverSocket.getLocalSocketAddress();
-    serverSocket = new ServerSocket();
-    serverSocket.setReuseAddress(true);
-    serverSocket.bind(address);
-
-    // now we should be able to connect
-    Socket socket = connectorTask.get(2 * DELAY, TimeUnit.MILLISECONDS);
-
-    assertNotNull(socket);
-
-    assertFalse(connectorTask.isCancelled());
-    socket.close();
-  }
-  
-  private static class MockExceptionHandler implements ExceptionHandler {
-
-    private final Lock lock = new ReentrantLock();
-    private final Condition failedCondition = lock.newCondition();
-      
-    private Exception lastException;
-    
-    public void connectionFailed(SocketConnector connector, Exception ex) {
-      lastException = ex;
-    }
-    
-    public Exception awaitConnectionFailed(long delay) 
-         throws InterruptedException {
-      lock.lock();
-      try {
-        long increment = 10;
-        while (lastException == null && delay > 0) {
-          boolean success = failedCondition.await(increment, TimeUnit.MILLISECONDS);
-          delay -= increment;
-          if(success) break;
-
-        }
-        return lastException;
-      }
-      finally {
-        lock.unlock();
-      }
-    }
-        
-  }
-  
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/PackageTest.java b/logback-core/src/test/java/ch/qos/logback/core/net/PackageTest.java
deleted file mode 100644
index f77ed33..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/PackageTest.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-
-package ch.qos.logback.core.net;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-
-
- at RunWith(Suite.class)
- at Suite.SuiteClasses({AbstractSocketAppenderTest.class,
-        DefaultSocketConnectorTest.class,
-        AbstractSSLSocketAppenderTest.class,
-        ch.qos.logback.core.net.server.PackageTest.class,
-        ch.qos.logback.core.net.ssl.PackageTest.class})
-public class PackageTest {
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/SyslogAppenderBaseTest.java b/logback-core/src/test/java/ch/qos/logback/core/net/SyslogAppenderBaseTest.java
deleted file mode 100644
index c612997..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/SyslogAppenderBaseTest.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net;
-
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-
-public class SyslogAppenderBaseTest
-{
-  @Test
-  public void testFacilityStringToint() throws InterruptedException
-  {
-    assertEquals(SyslogConstants.LOG_KERN, SyslogAppenderBase.facilityStringToint("KERN"));
-    assertEquals(SyslogConstants.LOG_USER, SyslogAppenderBase.facilityStringToint("USER"));
-    assertEquals(SyslogConstants.LOG_MAIL, SyslogAppenderBase.facilityStringToint("MAIL"));
-    assertEquals(SyslogConstants.LOG_DAEMON, SyslogAppenderBase.facilityStringToint("DAEMON"));
-    assertEquals(SyslogConstants.LOG_AUTH, SyslogAppenderBase.facilityStringToint("AUTH"));
-    assertEquals(SyslogConstants.LOG_SYSLOG, SyslogAppenderBase.facilityStringToint("SYSLOG"));
-    assertEquals(SyslogConstants.LOG_LPR, SyslogAppenderBase.facilityStringToint("LPR"));
-    assertEquals(SyslogConstants.LOG_NEWS, SyslogAppenderBase.facilityStringToint("NEWS"));
-    assertEquals(SyslogConstants.LOG_UUCP, SyslogAppenderBase.facilityStringToint("UUCP"));
-    assertEquals(SyslogConstants.LOG_CRON, SyslogAppenderBase.facilityStringToint("CRON"));
-    assertEquals(SyslogConstants.LOG_AUTHPRIV, SyslogAppenderBase.facilityStringToint("AUTHPRIV"));
-    assertEquals(SyslogConstants.LOG_FTP, SyslogAppenderBase.facilityStringToint("FTP"));
-    assertEquals(SyslogConstants.LOG_NTP, SyslogAppenderBase.facilityStringToint("NTP"));
-    assertEquals(SyslogConstants.LOG_AUDIT, SyslogAppenderBase.facilityStringToint("AUDIT"));
-    assertEquals(SyslogConstants.LOG_ALERT, SyslogAppenderBase.facilityStringToint("ALERT"));
-    assertEquals(SyslogConstants.LOG_CLOCK, SyslogAppenderBase.facilityStringToint("CLOCK"));
-    assertEquals(SyslogConstants.LOG_LOCAL0, SyslogAppenderBase.facilityStringToint("LOCAL0"));
-    assertEquals(SyslogConstants.LOG_LOCAL1, SyslogAppenderBase.facilityStringToint("LOCAL1"));
-    assertEquals(SyslogConstants.LOG_LOCAL2, SyslogAppenderBase.facilityStringToint("LOCAL2"));
-    assertEquals(SyslogConstants.LOG_LOCAL3, SyslogAppenderBase.facilityStringToint("LOCAL3"));
-    assertEquals(SyslogConstants.LOG_LOCAL4, SyslogAppenderBase.facilityStringToint("LOCAL4"));
-    assertEquals(SyslogConstants.LOG_LOCAL5, SyslogAppenderBase.facilityStringToint("LOCAL5"));
-    assertEquals(SyslogConstants.LOG_LOCAL6, SyslogAppenderBase.facilityStringToint("LOCAL6"));
-    assertEquals(SyslogConstants.LOG_LOCAL7, SyslogAppenderBase.facilityStringToint("LOCAL7"));
-  }
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/mock/MockContext.java b/logback-core/src/test/java/ch/qos/logback/core/net/mock/MockContext.java
deleted file mode 100644
index 83d5197..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/mock/MockContext.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.mock;
-
-import java.util.List;
-import java.util.concurrent.ExecutorService;
-
-import ch.qos.logback.core.Context;
-import ch.qos.logback.core.ContextBase;
-import ch.qos.logback.core.status.Status;
-import ch.qos.logback.core.status.StatusListener;
-import ch.qos.logback.core.status.StatusManager;
-
-/**
- * A mock {@link Context} with instrumentation for unit testing.
- *
- * @author Carl Harris
- */
-public class MockContext extends ContextBase {
-
-  private final ExecutorService executorService;
-  
-  private Status lastStatus;
-  
-  public MockContext() {
-    this(new MockExecutorService());
-  }
-  
-  public MockContext(ExecutorService executorService) {
-    this.setStatusManager(new MockStatusManager());
-    this.executorService = executorService;
-  }
-
-  @Override
-  public ExecutorService getExecutorService() {
-    return executorService;
-  }
-
-  public Status getLastStatus() {
-    return lastStatus;
-  }
-
-  public void setLastStatus(Status lastStatus) {
-    this.lastStatus = lastStatus;
-  }
-
-  private class MockStatusManager implements StatusManager {
-
-    public void add(Status status) {
-      lastStatus = status;
-    }
-
-    public List<Status> getCopyOfStatusList() {
-      throw new UnsupportedOperationException();
-    }
-
-    public int getCount() {
-      throw new UnsupportedOperationException();
-    }
-
-    public void add(StatusListener listener) {
-      throw new UnsupportedOperationException();
-    }
-
-    public void remove(StatusListener listener) {
-      throw new UnsupportedOperationException();
-    }
-
-    public void clear() {
-      throw new UnsupportedOperationException();
-    }
-
-    public List<StatusListener> getCopyOfStatusListenerList() {
-      throw new UnsupportedOperationException();
-    }
-     
-  }
-  
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/mock/MockExecutorService.java b/logback-core/src/test/java/ch/qos/logback/core/net/mock/MockExecutorService.java
deleted file mode 100644
index 750fd83..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/mock/MockExecutorService.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.mock;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.concurrent.AbstractExecutorService;
-import java.util.concurrent.TimeUnit;
-
-/**
- * An {@link ExecutorService} with instrumentation for unit testing.
- * <p>
- * This service is synchronous; submitted jobs are run on the calling thread.
- *
- * @author Carl Harris
- */
-public class MockExecutorService extends AbstractExecutorService {
-
-  private Runnable lastCommand;
-  
-  public Runnable getLastCommand() {
-    return lastCommand;
-  }
-  
-  public void shutdown() {
-  }
-
-  public List<Runnable> shutdownNow() {
-    return Collections.emptyList();
-  }
-
-  public boolean isShutdown() {
-    return true;
-  }
-
-  public boolean isTerminated() {
-    return true;
-  }
-
-  public boolean awaitTermination(long timeout, TimeUnit unit)
-      throws InterruptedException {
-    return true;
-  }
-
-  public void execute(Runnable command) {
-    command.run();
-    lastCommand = command;
-  }
-  
-}
\ No newline at end of file
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/server/AbstractServerSocketAppenderTest.java b/logback-core/src/test/java/ch/qos/logback/core/net/server/AbstractServerSocketAppenderTest.java
deleted file mode 100644
index ccaef3d..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/server/AbstractServerSocketAppenderTest.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.server;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-
-import java.io.IOException;
-import java.net.ServerSocket;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import ch.qos.logback.core.net.mock.MockContext;
-import ch.qos.logback.core.status.ErrorStatus;
-import ch.qos.logback.core.status.Status;
-
-/**
- * Unit tests for {@link AbstractServerSocketAppender}.
- *
- * @author Carl Harris
- */
-public class AbstractServerSocketAppenderTest {
-
-
-  private MockContext context = new MockContext();
-  
-  private MockServerRunner<RemoteReceiverClient> runner = 
-      new MockServerRunner<RemoteReceiverClient>();
-  
-  private MockServerListener<RemoteReceiverClient> listener = 
-      new MockServerListener<RemoteReceiverClient>();
-  
-  private ServerSocket serverSocket;
-  private InstrumentedServerSocketAppenderBase appender;
-  
-  @Before
-  public void setUp() throws Exception {
-    serverSocket = ServerSocketUtil.createServerSocket();
-    appender = new InstrumentedServerSocketAppenderBase(serverSocket, listener, runner);
-    appender.setContext(context);
-  }
-  
-  @After
-  public void tearDown() throws Exception {
-    serverSocket.close();
-  }
-  
-  @Test
-  public void testStartStop() throws Exception {
-    appender.start();
-    assertTrue(runner.isContextInjected());
-    assertTrue(runner.isRunning());
-    assertSame(listener, appender.getLastListener());
-    
-    appender.stop();
-    assertFalse(runner.isRunning());
-  }
-
-  @Test
-  public void testStartWhenAlreadyStarted() throws Exception {
-    appender.start();
-    appender.start();
-    assertEquals(1, runner.getStartCount());
-  }
-
-  @Test
-  public void testStopThrowsException() throws Exception {
-    appender.start();
-    assertTrue(appender.isStarted());
-    IOException ex = new IOException("test exception");
-    runner.setStopException(ex);
-    appender.stop();
-    
-    Status status = context.getLastStatus();
-    assertNotNull(status);    
-    assertTrue(status instanceof ErrorStatus);
-    assertTrue(status.getMessage().contains(ex.getMessage()));
-    assertSame(ex, status.getThrowable());
-  }
-
-  @Test
-  public void testStopWhenNotStarted() throws Exception {
-    appender.stop();
-    assertEquals(0, runner.getStartCount());
-  }
-
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/server/ConcurrentServerRunnerTest.java b/logback-core/src/test/java/ch/qos/logback/core/net/server/ConcurrentServerRunnerTest.java
deleted file mode 100644
index b29d896..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/server/ConcurrentServerRunnerTest.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.server;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-
-import java.util.concurrent.Executor;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.locks.Condition;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import ch.qos.logback.core.net.mock.MockContext;
-
-
-public class ConcurrentServerRunnerTest {
-
-  private static final int DELAY = 10000;
-  private static final int SHORT_DELAY = 10;
-  
-  private MockContext context = new MockContext();
-  private MockServerListener<MockClient> listener = 
-      new MockServerListener<MockClient>();
-  
-  private ExecutorService executor = Executors.newCachedThreadPool();
-  private InstrumentedConcurrentServerRunner runner = 
-      new InstrumentedConcurrentServerRunner(listener, executor);
-
-  @Before
-  public void setUp() throws Exception {
-    runner.setContext(context);
-  }
-
-  @After
-  public void tearDown() throws Exception {
-    executor.shutdownNow();
-    assertTrue(executor.awaitTermination(DELAY, TimeUnit.MILLISECONDS));
-  }
-  
-  @Test
-  public void testStartStop() throws Exception {
-    assertFalse(runner.isRunning());
-    executor.execute(runner);
-    assertTrue(runner.awaitRunState(true, DELAY));
-    int retries = DELAY / SHORT_DELAY;
-    synchronized (listener) {
-      while (retries-- > 0 && listener.getWaiter() == null) {
-        listener.wait(SHORT_DELAY);
-      }
-    }
-    assertNotNull(listener.getWaiter());
-    runner.stop();
-    assertTrue(listener.isClosed());
-    assertFalse(runner.awaitRunState(false, DELAY));
-  }
-  
-  @Test
-  public void testRunOneClient() throws Exception {
-    executor.execute(runner);
-    MockClient client = new MockClient();
-    listener.addClient(client);
-    int retries = DELAY / SHORT_DELAY;
-    synchronized (client) {
-      while (retries-- > 0 && !client.isRunning()) {
-        client.wait(SHORT_DELAY);
-      }
-    }
-    assertTrue(runner.awaitRunState(true, DELAY));
-    client.close();
-    runner.stop();
-  }
-
-  @Test
-  public void testRunManyClients() throws Exception {
-    executor.execute(runner);
-    int count = 10;
-    while (count-- > 0) {
-      MockClient client = new MockClient();
-      listener.addClient(client);
-      int retries = DELAY / SHORT_DELAY;
-      synchronized (client) {
-        while (retries-- > 0 && !client.isRunning()) {
-          client.wait(SHORT_DELAY);
-        }
-      }
-      assertTrue(runner.awaitRunState(true, DELAY));
-    }
-    runner.stop();
-  }
-
-  @Test
-  public void testRunClientAndVisit() throws Exception {
-    executor.execute(runner);
-    MockClient client = new MockClient();
-    listener.addClient(client);
-    int retries = DELAY / SHORT_DELAY;
-    synchronized (client) {
-      while (retries-- > 0 && !client.isRunning()) {
-        client.wait(SHORT_DELAY);
-      }
-    }
-    assertTrue(runner.awaitRunState(true, DELAY));
-    MockClientVisitor visitor = new MockClientVisitor();
-    runner.accept(visitor);
-    assertSame(client, visitor.getLastVisited());
-    runner.stop();    
-  }
-
-  
-  static class InstrumentedConcurrentServerRunner 
-      extends ConcurrentServerRunner<MockClient> {
-
-    private final Lock lock = new ReentrantLock();
-    private final Condition runningCondition = lock.newCondition();
-    
-    public InstrumentedConcurrentServerRunner(
-        ServerListener<MockClient> listener, Executor executor) {
-      super(listener, executor);
-    }
-
-    @Override
-    protected boolean configureClient(MockClient client) {
-      return true;
-    }
-
-    @Override
-    protected void setRunning(boolean running) {
-      lock.lock();
-      try {
-        super.setRunning(running);
-        runningCondition.signalAll();
-      }
-      finally {
-        lock.unlock();
-      }
-    }
-
-    public boolean awaitRunState(boolean state, 
-        long delay) throws InterruptedException {
-      lock.lock();
-      try {
-        while (isRunning() != state) {
-          runningCondition.await(delay, TimeUnit.MILLISECONDS);
-        }
-        return isRunning();
-      }
-      finally {
-        lock.unlock();
-      }
-    }
-  }
-  
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/server/InstrumentedServerSocketAppenderBase.java b/logback-core/src/test/java/ch/qos/logback/core/net/server/InstrumentedServerSocketAppenderBase.java
deleted file mode 100644
index d439b4d..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/server/InstrumentedServerSocketAppenderBase.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.server;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.util.concurrent.Executor;
-
-import javax.net.ServerSocketFactory;
-
-import ch.qos.logback.core.spi.PreSerializationTransformer;
-
-/**
- * A {@link AbstractServerSocketAppender} with instrumentation for unit testing.
- *
- * @author Carl Harris
- */
-public class InstrumentedServerSocketAppenderBase
-    extends AbstractServerSocketAppender<Serializable> {
-
-  private final ServerSocket serverSocket;
-  private final ServerListener<RemoteReceiverClient> listener;
-  private final ServerRunner<RemoteReceiverClient> runner;
-  
-  private ServerListener lastListener;
-  
-  public InstrumentedServerSocketAppenderBase(ServerSocket serverSocket) {
-    this(serverSocket, new RemoteReceiverServerListener(serverSocket), null);
-  }
-  
-  public InstrumentedServerSocketAppenderBase(ServerSocket serverSocket,
-      ServerListener<RemoteReceiverClient> listener, 
-      ServerRunner<RemoteReceiverClient> runner) {
-    this.serverSocket = serverSocket;
-    this.listener = listener;
-    this.runner = runner;
-  }
-
-  @Override
-  protected void postProcessEvent(Serializable event) {
-  }
-
-  @Override
-  protected PreSerializationTransformer<Serializable> getPST() {
-    return new PreSerializationTransformer<Serializable>() {
-      public Serializable transform(Serializable event) {
-        return event;
-      }
-    };
-  }
-  
-  @Override
-  protected ServerSocketFactory getServerSocketFactory() throws Exception {
-    return new ServerSocketFactory() {
-
-      @Override
-      public ServerSocket createServerSocket(int port) throws IOException {
-        return serverSocket;
-      }
-
-      @Override
-      public ServerSocket createServerSocket(int port, int backlog)
-          throws IOException {
-        return serverSocket;
-      }
-
-      @Override
-      public ServerSocket createServerSocket(int port, int backlog,
-          InetAddress ifAddress) throws IOException {
-        return serverSocket;
-      }        
-    };
-  }
-
-  @Override
-  protected ServerRunner<RemoteReceiverClient> createServerRunner(
-      ServerListener<RemoteReceiverClient> listener, Executor executor) {
-    lastListener = listener;
-    return runner != null ? runner : super.createServerRunner(listener, executor);
-  }
-
-  @Override
-  protected ServerListener<RemoteReceiverClient> createServerListener(
-      ServerSocket socket) {
-    return listener;
-  }
-
-  public ServerListener getLastListener() {
-    return lastListener;
-  }
-
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/server/MockClient.java b/logback-core/src/test/java/ch/qos/logback/core/net/server/MockClient.java
deleted file mode 100644
index b1b6aa6..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/server/MockClient.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.server;
-
-import ch.qos.logback.core.net.server.Client;
-
-
-
-/**
- *
- * A mock {@link Client} that notifies waiting thread when it has started,
- * and waits to be interrupted before exiting.
- *
- * @author Carl Harris
- */
-class MockClient implements Client {
-
-  private boolean running;
-  private boolean closed;
-  
-  public void run() {
-    synchronized (this) {
-      running = true;
-      notifyAll();
-      while (running && !Thread.currentThread().isInterrupted()) {
-        try {
-          wait();
-        }
-        catch (InterruptedException ex) {
-          Thread.currentThread().interrupt();
-        }
-      }
-    }
-  }
-
-  public void close() {
-    synchronized (this) {
-      running = false;
-      closed = true;
-      notifyAll();
-    }
-  }
-
-  public synchronized boolean isRunning() {
-    return running;
-  }
-
-  public synchronized boolean isClosed() {
-    return closed;
-  }
-
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/server/MockClientVisitor.java b/logback-core/src/test/java/ch/qos/logback/core/net/server/MockClientVisitor.java
deleted file mode 100644
index 842d6e1..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/server/MockClientVisitor.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.server;
-
-/**
- * A {@link ClientVisitor} with instrumentation for unit testing.
- *
- * @author Carl Harris
- */
-public class MockClientVisitor implements ClientVisitor<MockClient> {
-
-  private MockClient lastVisited;
-  
-  /**
-   * {@inheritDoc}
-   */
-  public void visit(MockClient client) {
-    lastVisited = client;
-  }
-
-  public MockClient getLastVisited() {
-    return lastVisited;
-  }
-
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/server/MockEventQueue.java b/logback-core/src/test/java/ch/qos/logback/core/net/server/MockEventQueue.java
deleted file mode 100644
index a1018c8..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/server/MockEventQueue.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.server;
-
-import java.io.Serializable;
-import java.util.concurrent.LinkedBlockingQueue;
-
-/**
- * A mock {@link BlockingQueue} with instrumentation for unit testing.
- *
- * @author Carl Harris
- */
-class MockEventQueue extends LinkedBlockingQueue<Serializable> {
-
-  private static final long serialVersionUID = 1L;
-  
-  @Override
-  public Serializable take() throws InterruptedException {
-    if (isEmpty()) {
-      Thread.currentThread().interrupt();
-    }
-    return super.take();    
-  }
-
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/server/MockServerListener.java b/logback-core/src/test/java/ch/qos/logback/core/net/server/MockServerListener.java
deleted file mode 100644
index da5c436..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/server/MockServerListener.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.server;
-
-import java.io.IOException;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.LinkedBlockingQueue;
-
-import ch.qos.logback.core.net.server.Client;
-import ch.qos.logback.core.net.server.ServerListener;
-
-
-/**
- * A mock {@link ServerListener} that has a blocking queue to pass a client
- * to a {@link #acceptClient()} caller.  If the {@link #close()} method is
- * called while a caller is blocked waiting to take from the queue, the
- * caller's thread is interrupted.
- *
- * @author Carl Harris
- */
-public class MockServerListener<T extends Client> implements ServerListener<T> {
-
-  private final BlockingQueue<T> queue = 
-      new LinkedBlockingQueue<T>();
-  
-  private boolean closed;
-  private Thread waiter;
-  
-  public synchronized Thread getWaiter() {
-    return waiter;
-  }
-  
-  public synchronized void setWaiter(Thread waiter) {
-    this.waiter = waiter;
-  }
-  
-  public synchronized boolean isClosed() {
-    return closed;
-  }
-
-  public synchronized void setClosed(boolean closed) {
-    this.closed = closed;
-  }
-
-  public T acceptClient() throws IOException, InterruptedException {
-    if (isClosed()) {
-      throw new IOException("closed");
-    }
-    setWaiter(Thread.currentThread());
-    try {
-      return queue.take();
-    }
-    finally {
-      setWaiter(null);
-    }
-  }
-
-  public void addClient(T client) {
-    queue.offer(client);
-  }
-  
-  public synchronized void close() {
-    setClosed(true);
-    Thread waiter = getWaiter();
-    if (waiter != null) {
-      waiter.interrupt();
-    }   
-  }
-
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/server/MockServerRunner.java b/logback-core/src/test/java/ch/qos/logback/core/net/server/MockServerRunner.java
deleted file mode 100644
index c0d83c6..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/server/MockServerRunner.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.server;
-
-import java.io.IOException;
-
-import ch.qos.logback.core.Context;
-import ch.qos.logback.core.spi.ContextAwareBase;
-
-/**
- * A mock {@link ServerRunner} with instrumentation for unit testing.
- *
- * @author Carl Harris
- */
-public class MockServerRunner<T extends Client> extends ContextAwareBase 
-    implements ServerRunner<T> {
-
-  private IOException stopException;
-  private int startCount;
-  private boolean contextInjected;
-  
-  @Override
-  public void setContext(Context context) {
-    contextInjected = true;    
-    super.setContext(context);
-  }
-
-  public void run() {
-    startCount++;
-  }
-
-  public void stop() throws IOException {
-    if (stopException != null) {
-      throw stopException;
-    }
-    startCount--;
-  }
-
-  public boolean isRunning() {
-    return startCount > 0;
-  }
-  
-  public void accept(ClientVisitor visitor) {
-    throw new UnsupportedOperationException();
-  }
-
-  public int getStartCount() {
-    return startCount;
-  }
-
-  public boolean isContextInjected() {
-    return contextInjected;
-  }
-
-  public void setStopException(IOException stopException) {
-    this.stopException = stopException;
-  }
-  
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/server/PackageTest.java b/logback-core/src/test/java/ch/qos/logback/core/net/server/PackageTest.java
deleted file mode 100644
index 14a4786..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/server/PackageTest.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.server;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-
-
- at RunWith(Suite.class)
- at Suite.SuiteClasses({ConcurrentServerRunnerTest.class,
-        RemoteReceiverStreamClientTest.class,
-        ServerSocketAppenderBaseFunctionalTest.class,
-        AbstractServerSocketAppenderTest.class,
-        SSLServerSocketAppenderBaseTest.class})
-public class PackageTest {
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/server/RemoteReceiverStreamClientTest.java b/logback-core/src/test/java/ch/qos/logback/core/net/server/RemoteReceiverStreamClientTest.java
deleted file mode 100644
index cbea2de..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/server/RemoteReceiverStreamClientTest.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.server;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.ObjectInputStream;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import ch.qos.logback.core.net.mock.MockContext;
-
-
-/**
- * Unit tests for {@link RemoteReceiverStreamClient}.
- *
- * @author Carl Harris
- */
-public class RemoteReceiverStreamClientTest {
-
-  private static final String TEST_EVENT = "test event";
-
-  private MockContext context = new MockContext();
-  
-  private MockEventQueue queue = new MockEventQueue();
-  
-  private ByteArrayOutputStream outputStream = 
-      new ByteArrayOutputStream();
-  
-  private RemoteReceiverStreamClient client = 
-      new RemoteReceiverStreamClient("someId", outputStream);
-  
-  @Before
-  public void setUp() throws Exception {
-    client.setContext(context);
-    client.setQueue(queue);
-  }
-  
-  @Test
-  public void testOfferEventAndRun() throws Exception {
-    client.offer(TEST_EVENT);
-
-    Thread thread = new Thread(client);
-    thread.start();
-    
-    // MockEventQueue will interrupt the thread when the queue is drained
-    thread.join(1000);
-    assertFalse(thread.isAlive());
-   
-    ObjectInputStream ois = new ObjectInputStream(
-        new ByteArrayInputStream(outputStream.toByteArray()));
-    assertEquals(TEST_EVENT, ois.readObject());
-  }
-
-  @Test
-  public void testOfferEventSequenceAndRun() throws Exception {
-    for (int i = 0; i < 10; i++) {
-      client.offer(TEST_EVENT + i);
-    }
-
-    Thread thread = new Thread(client);
-    thread.start();
-    thread.join(1000);
-    assertFalse(thread.isAlive());
-   
-    ObjectInputStream ois = new ObjectInputStream(
-        new ByteArrayInputStream(outputStream.toByteArray()));
-    for (int i = 0; i < 10; i++) {
-      assertEquals(TEST_EVENT + i, ois.readObject());
-    }
-  }
-
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/server/SSLServerSocketAppenderBaseTest.java b/logback-core/src/test/java/ch/qos/logback/core/net/server/SSLServerSocketAppenderBaseTest.java
deleted file mode 100644
index e537788..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/server/SSLServerSocketAppenderBaseTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.server;
-
-import static org.junit.Assert.assertNotNull;
-
-import java.util.concurrent.Executors;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import ch.qos.logback.core.net.mock.MockContext;
-import ch.qos.logback.core.spi.PreSerializationTransformer;
-
-/**
- * Unit tests for {@link SSLServerSocketAppenderBase}.
- *
- * @author Carl Harris
- */
-public class SSLServerSocketAppenderBaseTest {
-
-  private MockContext context = new MockContext(Executors.newCachedThreadPool());
-  
-  private SSLServerSocketAppenderBase appender =
-      new InstrumentedSSLServerSocketAppenderBase();
-  
-  @Before
-  public void setUp() throws Exception {
-    appender.setContext(context);
-  }
-  
-  @Test
-  public void testUsingDefaultConfig() throws Exception {
-    // should be able to start successfully with no SSL configuration at all
-    appender.start();
-    assertNotNull(appender.getServerSocketFactory());
-    appender.stop();
-  }
-
-  private static class InstrumentedSSLServerSocketAppenderBase 
-      extends SSLServerSocketAppenderBase<Object> {
-
-    @Override
-    protected void postProcessEvent(Object event) {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    protected PreSerializationTransformer<Object> getPST() {
-      throw new UnsupportedOperationException();
-    }
-    
-  }
-  
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/server/ServerSocketAppenderBaseFunctionalTest.java b/logback-core/src/test/java/ch/qos/logback/core/net/server/ServerSocketAppenderBaseFunctionalTest.java
deleted file mode 100644
index bc64830..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/server/ServerSocketAppenderBaseFunctionalTest.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.server;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import java.io.ObjectInputStream;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.TimeUnit;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import ch.qos.logback.core.net.mock.MockContext;
-
-/**
- * A functional test for {@link AbstractServerSocketAppender}.
- *
- * @author Carl Harris
- */
-public class ServerSocketAppenderBaseFunctionalTest {
-
-  private static final String TEST_EVENT = "test event";
-
-  private static final int EVENT_COUNT = 10;
-  
-  private ExecutorService executor = Executors.newCachedThreadPool();
-  private MockContext context = new MockContext(executor);
-  private ServerSocket serverSocket;
-  private InstrumentedServerSocketAppenderBase appender;
-  
-  @Before
-  public void setUp() throws Exception {
-
-    serverSocket = ServerSocketUtil.createServerSocket();
-    
-    appender = new InstrumentedServerSocketAppenderBase(serverSocket);    
-    appender.setContext(context);
-  }
-  
-  @After
-  public void tearDown() throws Exception {
-    executor.shutdownNow();
-    executor.awaitTermination(10000, TimeUnit.MILLISECONDS);
-    assertTrue(executor.isTerminated());
-  }
-  
-  @Test
-  public void testLogEventClient() throws Exception {
-    appender.start();
-    Socket socket = new Socket(InetAddress.getLocalHost(), 
-        serverSocket.getLocalPort());
-    
-    socket.setSoTimeout(1000);
-    ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
- 
-    for (int i = 0; i < EVENT_COUNT; i++) {
-      appender.append(TEST_EVENT + i);
-      assertEquals(TEST_EVENT + i, ois.readObject());
-    }
-    
-    socket.close();
-    appender.stop();
-  }
-
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/server/ServerSocketListenerTest.java b/logback-core/src/test/java/ch/qos/logback/core/net/server/ServerSocketListenerTest.java
deleted file mode 100644
index 8f46ce7..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/server/ServerSocketListenerTest.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.server;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.net.Socket;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import ch.qos.logback.core.net.server.Client;
-import ch.qos.logback.core.net.server.ServerSocketListener;
-
-
-/**
- * Unit tests for {@link ServerSocketListener}.
- *
- * @author Carl Harris
- */
-public class ServerSocketListenerTest {
-
-  private ServerSocket serverSocket;
-  private ServerSocketListener listener;
-
-  @Before
-  public void setUp() throws Exception {
-    serverSocket = ServerSocketUtil.createServerSocket();
-    assertNotNull(serverSocket);
-    listener = new InstrumentedServerSocketListener(serverSocket);
-  }
-  
-  @Test
-  public void testAcceptClient() throws Exception {
-    RunnableClient localClient = new RunnableClient(
-        InetAddress.getLocalHost(), serverSocket.getLocalPort());
-    Thread thread = new Thread(localClient);
-    thread.start();
-    synchronized (localClient) {
-      int retries = 200;
-      while (retries-- > 0 && !localClient.isConnected()) {
-        localClient.wait(10);
-      }
-    }
-    assertTrue(localClient.isConnected());
-    localClient.close();
-    
-    serverSocket.setSoTimeout(5000);
-    Client client = listener.acceptClient();
-    assertNotNull(client);
-    client.close();
-  }
-  
-  private static class InstrumentedServerSocketListener 
-      extends ServerSocketListener<RemoteClient> {
-
-    public InstrumentedServerSocketListener(ServerSocket serverSocket) {
-      super(serverSocket);
-    }
-
-    @Override
-    protected RemoteClient createClient(String id, Socket socket)
-        throws IOException {
-      return new RemoteClient(socket);
-    }
-    
-  }
-  
-  private static class RemoteClient implements Client {
-   
-    private final Socket socket;
-    
-    public RemoteClient(Socket socket) {
-      this.socket = socket;
-    }
-
-    public void run() {
-    }
-    
-    public void close() {
-      try {
-        socket.close();
-      }
-      catch (IOException ex) {
-        ex.printStackTrace(System.err);
-      }
-    }
-    
-  }
-  
-  private static class RunnableClient implements Client {
-
-    private final InetAddress inetAddress;
-    private final int port;
-    private boolean connected;
-    private boolean closed;
-        
-    public RunnableClient(InetAddress inetAddress, int port) {
-      super();
-      this.inetAddress = inetAddress;
-      this.port = port;
-    }
-
-    public synchronized boolean isConnected() {
-      return connected;
-    }
-
-    public synchronized void setConnected(boolean connected) {
-      this.connected = connected;
-    }
-
-    public void run() {
-      try {
-        Socket socket = new Socket(inetAddress, port);
-        synchronized (this) {
-          setConnected(true);
-          notifyAll();
-          while (!closed && !Thread.currentThread().isInterrupted()) {
-            try {
-              wait();
-            }
-            catch (InterruptedException ex) {
-              Thread.currentThread().interrupt();
-            }
-          }
-          socket.close();
-        }
-      }
-      catch (IOException ex) {
-        ex.printStackTrace(System.err);
-      }
-    }
-
-    public synchronized void close() {
-      closed = true;
-      notifyAll();
-    }
-    
-  }
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/server/ServerSocketUtil.java b/logback-core/src/test/java/ch/qos/logback/core/net/server/ServerSocketUtil.java
deleted file mode 100644
index d403748..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/server/ServerSocketUtil.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.server;
-
-import java.io.IOException;
-import java.net.BindException;
-import java.net.ServerSocket;
-
-import javax.net.ServerSocketFactory;
-
-/**
- * Static utility methods for obtaining a {@link ServerSocket} bound to
- * a random unused port.
- *
- * @author Carl Harris
- */
-public class ServerSocketUtil {
-
-  /**
-   * Creates a new {@link ServerSocket} bound to a random unused port.
-   * <p>
-   * This method is a convenience overload for 
-   * {@link #createServerSocket(ServerSocketFactory)} using the platform's
-   * default {@link ServerSocketFactory}.
-   * @return socket
-   * @throws IOException
-   */
-  public static ServerSocket createServerSocket() throws IOException {
-    return createServerSocket(ServerSocketFactory.getDefault());
-  }
-  
-  /**
-   * Creates a new {@link ServerSocket} bound to a random unused port.
-   * @param socketFactory socket factory that will be used to create the 
-   *    socket
-   * @return socket
-   * @throws IOException
-   */
-  public static ServerSocket createServerSocket(
-      ServerSocketFactory socketFactory) throws IOException {
-    ServerSocket socket = null;
-    int retries = 10;
-    while (retries-- > 0 && socket == null) {
-      int port = (int)((65536 - 1024) * Math.random()) + 1024;
-      try {
-        socket = socketFactory.createServerSocket(port);
-      }
-      catch (BindException ex) {
-        // try again with different port
-      }
-    }
-    if (socket == null) {
-      throw new BindException("cannot find an unused port to bind");
-    }
-    return socket;
-  }
-  
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/ssl/KeyManagerFactoryFactoryBeanTest.java b/logback-core/src/test/java/ch/qos/logback/core/net/ssl/KeyManagerFactoryFactoryBeanTest.java
deleted file mode 100644
index 0b53cd3..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/ssl/KeyManagerFactoryFactoryBeanTest.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.ssl;
-
-import static org.junit.Assert.assertNotNull;
-
-import javax.net.ssl.KeyManagerFactory;
-
-import org.junit.Test;
-
-import ch.qos.logback.core.net.ssl.KeyManagerFactoryFactoryBean;
-
-
-/**
- * Unit tests for {@link KeyManagerFactoryFactoryBean}.
- *
- * @author Carl Harris
- */
-public class KeyManagerFactoryFactoryBeanTest {
-
-  private KeyManagerFactoryFactoryBean factoryBean =
-      new KeyManagerFactoryFactoryBean();
-  
-  @Test
-  public void testDefaults() throws Exception {
-    assertNotNull(factoryBean.createKeyManagerFactory());
-  }
-
-  @Test
-  public void testExplicitAlgorithm() throws Exception {
-    factoryBean.setAlgorithm(KeyManagerFactory.getDefaultAlgorithm());
-    assertNotNull(factoryBean.createKeyManagerFactory());
-  }
-  
-  @Test
-  public void testExplicitProvider() throws Exception {
-    KeyManagerFactory factory = KeyManagerFactory.getInstance(
-        KeyManagerFactory.getDefaultAlgorithm());
-    factoryBean.setProvider(factory.getProvider().getName());
-    assertNotNull(factoryBean.createKeyManagerFactory());
-  }
-  
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/ssl/KeyStoreFactoryBeanTest.java b/logback-core/src/test/java/ch/qos/logback/core/net/ssl/KeyStoreFactoryBeanTest.java
deleted file mode 100644
index f0eea80..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/ssl/KeyStoreFactoryBeanTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.ssl;
-
-import static org.junit.Assert.assertNotNull;
-
-import java.security.KeyStore;
-
-import org.junit.Test;
-
-import ch.qos.logback.core.net.ssl.KeyStoreFactoryBean;
-import ch.qos.logback.core.net.ssl.SSL;
-
-
-/**
- * Unit tests for {@link KeyStoreFactoryBean}.
- *
- * @author Carl Harris
- */
-public class KeyStoreFactoryBeanTest {
-
-  private KeyStoreFactoryBean factoryBean = new KeyStoreFactoryBean();
-  
-  @Test
-  public void testDefaults() throws Exception {
-    factoryBean.setLocation(SSLTestConstants.KEYSTORE_JKS_RESOURCE);
-    assertNotNull(factoryBean.createKeyStore());
-  }
-
-  @Test
-  public void testExplicitProvider() throws Exception {
-    factoryBean.setLocation(SSLTestConstants.KEYSTORE_JKS_RESOURCE);
-    KeyStore keyStore = factoryBean.createKeyStore();
-    factoryBean.setProvider(keyStore.getProvider().getName());
-    assertNotNull(factoryBean.createKeyStore());
-  }
-  
-  @Test
-  public void testExplicitType() throws Exception {
-    factoryBean.setLocation(SSLTestConstants.KEYSTORE_JKS_RESOURCE);
-    factoryBean.setType(SSL.DEFAULT_KEYSTORE_TYPE);
-    assertNotNull(factoryBean.createKeyStore());
-  }
-
-  @Test
-  public void testPKCS12Type() throws Exception {
-    factoryBean.setLocation(SSLTestConstants.KEYSTORE_PKCS12_RESOURCE);
-    factoryBean.setType(SSLTestConstants.PKCS12_TYPE);
-    assertNotNull(factoryBean.createKeyStore());
-  }
-
-  @Test
-  public void testExplicitPassphrase() throws Exception {
-    factoryBean.setLocation(SSLTestConstants.KEYSTORE_JKS_RESOURCE);
-    factoryBean.setPassword(SSL.DEFAULT_KEYSTORE_PASSWORD);
-    assertNotNull(factoryBean.createKeyStore());
-  }
-
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/ssl/PackageTest.java b/logback-core/src/test/java/ch/qos/logback/core/net/ssl/PackageTest.java
deleted file mode 100644
index 82b866a..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/ssl/PackageTest.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-
-
-package ch.qos.logback.core.net.ssl;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-
-
- at RunWith(Suite.class)
- at Suite.SuiteClasses({KeyManagerFactoryFactoryBeanTest.class,
-        KeyStoreFactoryBeanTest.class,
-        SecureRandomFactoryBeanTest.class,
-        SSLConfigurationTest.class,
-        SSLContextFactoryBeanTest.class,
-        SSLParametersConfigurationTest.class,
-        TrustManagerFactoryFactoryBeanTest.class})
-public class PackageTest {
-
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/ssl/SSLConfigurationTest.java b/logback-core/src/test/java/ch/qos/logback/core/net/ssl/SSLConfigurationTest.java
deleted file mode 100644
index db3c4b9..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/ssl/SSLConfigurationTest.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.ssl;
-
-import static org.junit.Assert.assertNotNull;
-
-import org.junit.Test;
-
-/**
- * Unit tests for {@link SSLConfiguration}.
- *
- * @author Carl Harris
- */
-public class SSLConfigurationTest {
-
-  private SSLConfiguration configuration = new SSLConfiguration();
-    
-  @Test
-  public void testParameters() throws Exception {
-    assertNotNull(configuration.getParameters());
-  }
-  
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/ssl/SSLContextFactoryBeanTest.java b/logback-core/src/test/java/ch/qos/logback/core/net/ssl/SSLContextFactoryBeanTest.java
deleted file mode 100644
index 97d9bdc..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/ssl/SSLContextFactoryBeanTest.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.ssl;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import ch.qos.logback.core.net.ssl.mock.MockContextAware;
-import ch.qos.logback.core.net.ssl.mock.MockKeyManagerFactoryFactoryBean;
-import ch.qos.logback.core.net.ssl.mock.MockKeyStoreFactoryBean;
-import ch.qos.logback.core.net.ssl.mock.MockSecureRandomFactoryBean;
-import ch.qos.logback.core.net.ssl.mock.MockTrustManagerFactoryFactoryBean;
-
-/**
- * Unit tests for {@link SSLContextFactoryBean}.
- *
- * @author Carl Harris
- */
-public class SSLContextFactoryBeanTest {
-
-  private static final String SSL_CONFIGURATION_MESSAGE_PATTERN = 
-      "SSL protocol '.*?' provider '.*?'";
-
-  private static final String KEY_MANAGER_FACTORY_MESSAGE_PATTERN =
-      "key manager algorithm '.*?' provider '.*?'";
-
-  private static final String TRUST_MANAGER_FACTORY_MESSAGE_PATTERN =
-      "trust manager algorithm '.*?' provider '.*?'";
-  
-  private static final String KEY_STORE_MESSAGE_PATTERN =
-      "key store of type '.*?' provider '.*?': .*";
-
-  private static final String TRUST_STORE_MESSAGE_PATTERN =
-      "trust store of type '.*?' provider '.*?': .*";
-  
-  private static final String SECURE_RANDOM_MESSAGE_PATTERN =
-      "secure random algorithm '.*?' provider '.*?'";
-
-  private MockKeyManagerFactoryFactoryBean keyManagerFactory =
-      new MockKeyManagerFactoryFactoryBean();
-  
-  private MockTrustManagerFactoryFactoryBean trustManagerFactory =
-      new MockTrustManagerFactoryFactoryBean();
-  
-  private MockKeyStoreFactoryBean keyStore =
-      new MockKeyStoreFactoryBean();
-  
-  private MockKeyStoreFactoryBean trustStore = 
-      new MockKeyStoreFactoryBean();
-  
-  private MockSecureRandomFactoryBean secureRandom =
-      new MockSecureRandomFactoryBean();
-  
-  private MockContextAware context = new MockContextAware();
-  private SSLContextFactoryBean factoryBean = new SSLContextFactoryBean();
-  
-  @Before
-  public void setUp() throws Exception {
-    keyStore.setLocation(SSLTestConstants.KEYSTORE_JKS_RESOURCE);
-    trustStore.setLocation(SSLTestConstants.KEYSTORE_JKS_RESOURCE);
-  }
-
-  @Test
-  public void testCreateDefaultContext() throws Exception {
-    // should be able to create a context with no configuration at all
-    assertNotNull(factoryBean.createContext(context));
-    assertTrue(context.hasInfoMatching(SSL_CONFIGURATION_MESSAGE_PATTERN));
-  }
-  
-  @Test
-  public void testCreateContext() throws Exception {
-    factoryBean.setKeyManagerFactory(keyManagerFactory);
-    factoryBean.setKeyStore(keyStore);
-    factoryBean.setTrustManagerFactory(trustManagerFactory);
-    factoryBean.setTrustStore(trustStore);
-    factoryBean.setSecureRandom(secureRandom);
-    
-    assertNotNull(factoryBean.createContext(context));
-
-    assertTrue(keyManagerFactory.isFactoryCreated());
-    assertTrue(trustManagerFactory.isFactoryCreated());
-    assertTrue(keyStore.isKeyStoreCreated());
-    assertTrue(trustStore.isKeyStoreCreated());
-    assertTrue(secureRandom.isSecureRandomCreated());
-
-    // it's important that each configured component output an appropriate
-    // informational message to the context; i.e. this logging is not just
-    // for programmers, it's there for systems administrators to use in
-    // verifying that SSL is configured properly
-    
-    assertTrue(context.hasInfoMatching(SSL_CONFIGURATION_MESSAGE_PATTERN));
-    assertTrue(context.hasInfoMatching(KEY_MANAGER_FACTORY_MESSAGE_PATTERN));
-    assertTrue(context.hasInfoMatching(TRUST_MANAGER_FACTORY_MESSAGE_PATTERN));
-    assertTrue(context.hasInfoMatching(KEY_STORE_MESSAGE_PATTERN));
-    assertTrue(context.hasInfoMatching(TRUST_STORE_MESSAGE_PATTERN));
-    assertTrue(context.hasInfoMatching(SECURE_RANDOM_MESSAGE_PATTERN));
-  }
-  
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/ssl/SSLParametersConfigurationTest.java b/logback-core/src/test/java/ch/qos/logback/core/net/ssl/SSLParametersConfigurationTest.java
deleted file mode 100644
index 55738b3..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/ssl/SSLParametersConfigurationTest.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.ssl;
-
-import static org.junit.Assert.assertTrue;
-
-import java.util.Arrays;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import ch.qos.logback.core.ContextBase;
-import ch.qos.logback.core.net.ssl.mock.MockSSLConfigurable;
-
-
-/**
- * Unit tests for {@link SSLParametersConfiguration}.
- *
- * @author Carl Harris
- */
-public class SSLParametersConfigurationTest {
-
-  private MockSSLConfigurable configurable = new MockSSLConfigurable();
-  
-  private SSLParametersConfiguration configuration = 
-      new SSLParametersConfiguration();
- 
-  @Before
-  public void setUp() throws Exception {
-    configuration.setContext(new ContextBase());
-  }
-  
-  @Test
-  public void testSetIncludedProtocols() throws Exception {
-    configurable.setSupportedProtocols(new String[] { "A", "B", "C", "D" });
-    configuration.setIncludedProtocols("A,B ,C, D");
-    configuration.configure(configurable);
-    assertTrue(Arrays.equals(new String[] { "A", "B", "C", "D" }, 
-        configurable.getEnabledProtocols()));
-  }
-
-  @Test
-  public void testSetExcludedProtocols() throws Exception {
-    configurable.setSupportedProtocols(new String[] { "A", "B" });
-    configuration.setExcludedProtocols("A");
-    configuration.configure(configurable);
-    assertTrue(Arrays.equals(new String[] { "B" }, 
-        configurable.getEnabledProtocols()));
-  }
-
-  @Test
-  public void testSetIncludedAndExcludedProtocols() throws Exception {
-    configurable.setSupportedProtocols(new String[] { "A", "B", "C" });
-    configuration.setIncludedProtocols("A, B");
-    configuration.setExcludedProtocols("B");
-    configuration.configure(configurable);
-    assertTrue(Arrays.equals(new String[] { "A" }, 
-        configurable.getEnabledProtocols()));
-  }
-
-  @Test
-  public void testSetIncludedCipherSuites() throws Exception {
-    configurable.setSupportedCipherSuites(new String[] { "A", "B", "C", "D" });
-    configuration.setIncludedCipherSuites("A,B ,C, D");
-    configuration.configure(configurable);
-    assertTrue(Arrays.equals(new String[] { "A", "B", "C", "D" }, 
-        configurable.getEnabledCipherSuites()));
-  }
-
-  @Test
-  public void testSetExcludedCipherSuites() throws Exception {
-    configurable.setSupportedCipherSuites(new String[] { "A", "B" });
-    configuration.setExcludedCipherSuites("A");
-    configuration.configure(configurable);
-    assertTrue(Arrays.equals(new String[]{ "B" }, 
-        configurable.getEnabledCipherSuites()));
-  }
-
-  @Test
-  public void testSetExcludedAndIncludedCipherSuites() throws Exception {
-    configurable.setSupportedCipherSuites(new String[] { "A", "B", "C" });
-    configuration.setIncludedCipherSuites("A, B");
-    configuration.setExcludedCipherSuites("B");
-    configuration.configure(configurable);
-    assertTrue(Arrays.equals(new String[] { "A" }, 
-        configurable.getEnabledCipherSuites()));
-  }
-
-  @Test
-  public void testSetNeedClientAuth() throws Exception {
-    configuration.setNeedClientAuth(true);
-    configuration.configure(configurable);
-    assertTrue(configurable.isNeedClientAuth());
-  }
-
-  @Test
-  public void testSetWantClientAuth() throws Exception {
-    configuration.setWantClientAuth(true);
-    configuration.configure(configurable);
-    assertTrue(configurable.isWantClientAuth());
-  }
-
-  @Test
-  public void testPassDefaultProtocols() throws Exception {
-    final String[] protocols = new String[] { "A" };
-    configurable.setDefaultProtocols(protocols);
-    configuration.configure(configurable);
-    assertTrue(Arrays.equals(protocols, configurable.getEnabledProtocols()));
-  }
-  
-  @Test
-  public void testPassDefaultCipherSuites() throws Exception {
-    final String[] cipherSuites = new String[] { "A" };
-    configurable.setDefaultCipherSuites(cipherSuites);
-    configuration.configure(configurable);
-    assertTrue(Arrays.equals(cipherSuites, 
-        configurable.getEnabledCipherSuites()));
-  }
-
-  @Test
-  public void testPassDefaultNeedClientAuth() throws Exception {
-    configurable.setNeedClientAuth(true);
-    configuration.configure(configurable);
-    assertTrue(configurable.isNeedClientAuth());
-  }
-
-  @Test
-  public void testPassDefaultWantClientAuth() throws Exception {
-    configurable.setWantClientAuth(true);
-    configuration.configure(configurable);
-    assertTrue(configurable.isWantClientAuth());
-  }
-
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/ssl/SSLTestConstants.java b/logback-core/src/test/java/ch/qos/logback/core/net/ssl/SSLTestConstants.java
deleted file mode 100644
index 903de6f..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/ssl/SSLTestConstants.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.ssl;
-
-/**
- * Constants used by unit tests in this package.
- *
- * @author Carl Harris
- */
-public interface SSLTestConstants {
-
-  String KEYSTORE_JKS_RESOURCE = "net/ssl/keystore.jks";
-  
-  String KEYSTORE_PKCS12_RESOURCE = "net/ssl/keystore.p12";
-
-  String PKCS12_TYPE = "PKCS12";
-
-  String FAKE_ALGORITHM_NAME = "A_FAKE_ALGORITHM_NAME";
-
-  String FAKE_PROVIDER_NAME = "A_FAKE_PROVIDER_NAME";
-
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/ssl/SecureRandomFactoryBeanTest.java b/logback-core/src/test/java/ch/qos/logback/core/net/ssl/SecureRandomFactoryBeanTest.java
deleted file mode 100644
index 25acd0b..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/ssl/SecureRandomFactoryBeanTest.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.ssl;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.security.NoSuchAlgorithmException;
-import java.security.NoSuchProviderException;
-import java.security.SecureRandom;
-
-import org.junit.Test;
-
-import ch.qos.logback.core.net.ssl.SSL;
-import ch.qos.logback.core.net.ssl.SecureRandomFactoryBean;
-
-
-/**
- * Unit tests for {@link SecureRandomFactoryBean}.
- *
- * @author Carl Harris
- */
-public class SecureRandomFactoryBeanTest {
-
-  private SecureRandomFactoryBean factoryBean = new SecureRandomFactoryBean();
-  
-  @Test
-  public void testDefaults() throws Exception {
-    assertNotNull(factoryBean.createSecureRandom());
-  }
-
-  @Test
-  public void testExplicitProvider() throws Exception {
-    SecureRandom secureRandom = SecureRandom.getInstance(
-        SSL.DEFAULT_SECURE_RANDOM_ALGORITHM);
-    factoryBean.setProvider(secureRandom.getProvider().getName());
-    assertNotNull(factoryBean.createSecureRandom());    
-  }
-
-  @Test
-  public void testUnknownProvider() throws Exception {
-    factoryBean.setProvider(SSLTestConstants.FAKE_PROVIDER_NAME);
-    try {
-      factoryBean.createSecureRandom();
-      fail("expected NoSuchProviderException");
-    }
-    catch (NoSuchProviderException ex) {
-      assertTrue(ex.getMessage().contains(SSLTestConstants.FAKE_PROVIDER_NAME));
-    }
-  }
-
-  @Test
-  public void testUnknownAlgorithm() throws Exception {
-    factoryBean.setAlgorithm(SSLTestConstants.FAKE_ALGORITHM_NAME);
-    try {
-      factoryBean.createSecureRandom();
-      fail("expected NoSuchAlgorithmException");
-    }
-    catch (NoSuchAlgorithmException ex) {
-      assertTrue(ex.getMessage().contains(SSLTestConstants.FAKE_ALGORITHM_NAME));
-    }
-  }
-
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/ssl/TrustManagerFactoryFactoryBeanTest.java b/logback-core/src/test/java/ch/qos/logback/core/net/ssl/TrustManagerFactoryFactoryBeanTest.java
deleted file mode 100644
index 694ecb5..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/ssl/TrustManagerFactoryFactoryBeanTest.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.ssl;
-
-import static org.junit.Assert.assertNotNull;
-
-import javax.net.ssl.TrustManagerFactory;
-
-import org.junit.Test;
-
-import ch.qos.logback.core.net.ssl.TrustManagerFactoryFactoryBean;
-
-
-/**
- * Unit tests for {@link TrustManagerFactoryFactoryBean}.
- *
- * @author Carl Harris
- */
-public class TrustManagerFactoryFactoryBeanTest {
-
-  private TrustManagerFactoryFactoryBean factoryBean =
-      new TrustManagerFactoryFactoryBean();
-  
-  @Test
-  public void testDefaults() throws Exception {
-    assertNotNull(factoryBean.createTrustManagerFactory());
-  }
-
-  @Test
-  public void testExplicitAlgorithm() throws Exception {
-    factoryBean.setAlgorithm(TrustManagerFactory.getDefaultAlgorithm());
-    assertNotNull(factoryBean.createTrustManagerFactory());
-  }
-  
-  @Test
-  public void testExplicitProvider() throws Exception {
-    TrustManagerFactory factory = TrustManagerFactory.getInstance(
-        TrustManagerFactory.getDefaultAlgorithm());
-    factoryBean.setProvider(factory.getProvider().getName());
-    assertNotNull(factoryBean.createTrustManagerFactory());
-  }
-  
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/ssl/mock/MockContextAware.java b/logback-core/src/test/java/ch/qos/logback/core/net/ssl/mock/MockContextAware.java
deleted file mode 100644
index c46113e..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/ssl/mock/MockContextAware.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.ssl.mock;
-
-import java.util.LinkedList;
-import java.util.List;
-
-import ch.qos.logback.core.spi.ContextAware;
-import ch.qos.logback.core.spi.ContextAwareBase;
-
-/**
- * A {@link ContextAware} with instrumentation for unit testing.
- *
- * @author Carl Harris
- */
-public class MockContextAware extends ContextAwareBase
-    implements ContextAware {
-
-  private final List<String> info = new LinkedList<String>();
-  private final List<String> warn = new LinkedList<String>();
-  private final List<String> error = new LinkedList<String>();
-  
-  @Override
-  public void addInfo(String msg) {
-    info.add(msg);
-  }
-
-  @Override
-  public void addWarn(String msg) {
-    warn.add(msg);
-  }
-
-  @Override
-  public void addError(String msg) {
-    error.add(msg);
-  }
-
-  public boolean hasInfoMatching(String regex) {
-    return hasMatching(info, regex);
-  }
-  
-  public boolean hasWarnMatching(String regex) {
-    return hasMatching(info, regex);
-  }
-  
-  public boolean hasErrorMatching(String regex) {
-    return hasMatching(info, regex);
-  }
-  
-  private boolean hasMatching(List<String> messages, String regex) {
-    for (String message : messages) {
-      if (message.matches(regex)) return true;
-    }
-    return false;
-  }
-  
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/ssl/mock/MockKeyManagerFactoryFactoryBean.java b/logback-core/src/test/java/ch/qos/logback/core/net/ssl/mock/MockKeyManagerFactoryFactoryBean.java
deleted file mode 100644
index 50979d9..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/ssl/mock/MockKeyManagerFactoryFactoryBean.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.ssl.mock;
-
-import java.security.NoSuchAlgorithmException;
-import java.security.NoSuchProviderException;
-
-import javax.net.ssl.KeyManagerFactory;
-
-import ch.qos.logback.core.net.ssl.KeyManagerFactoryFactoryBean;
-
-/**
- * A {@link KeyManagerFactoryFactoryBean} with test instrumentation.
- *
- * @author Carl Harris
- */
-public class MockKeyManagerFactoryFactoryBean 
-    extends KeyManagerFactoryFactoryBean {
-
-  private boolean factoryCreated;
-
-  @Override
-  public KeyManagerFactory createKeyManagerFactory()
-      throws NoSuchProviderException, NoSuchAlgorithmException {
-    factoryCreated = true;
-    return super.createKeyManagerFactory();
-  }
-
-  public boolean isFactoryCreated() {
-    return factoryCreated;
-  }
-  
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/ssl/mock/MockKeyStoreFactoryBean.java b/logback-core/src/test/java/ch/qos/logback/core/net/ssl/mock/MockKeyStoreFactoryBean.java
deleted file mode 100644
index e097411..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/ssl/mock/MockKeyStoreFactoryBean.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.ssl.mock;
-
-import java.security.KeyStore;
-import java.security.KeyStoreException;
-import java.security.NoSuchAlgorithmException;
-import java.security.NoSuchProviderException;
-
-import ch.qos.logback.core.net.ssl.KeyStoreFactoryBean;
-
-/**
- * A {@link KeyStoreFactoryBean} with test instrumentation. 
- *
- * @author Carl Harris
- */
-public class MockKeyStoreFactoryBean extends KeyStoreFactoryBean {
-
-  private boolean keyStoreCreated;
-  
-  @Override
-  public KeyStore createKeyStore() throws NoSuchProviderException,
-      NoSuchAlgorithmException, KeyStoreException {
-    keyStoreCreated = true;
-    return super.createKeyStore();
-  }
-
-  public boolean isKeyStoreCreated() {
-    return keyStoreCreated;
-  }
-
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/ssl/mock/MockSSLConfigurable.java b/logback-core/src/test/java/ch/qos/logback/core/net/ssl/mock/MockSSLConfigurable.java
deleted file mode 100644
index fea4210..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/ssl/mock/MockSSLConfigurable.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.ssl.mock;
-
-import ch.qos.logback.core.net.ssl.SSLConfigurable;
-
-public class MockSSLConfigurable implements SSLConfigurable {
-
-  private static final String[] EMPTY = new String[0];
-  
-  private String[] defaultProtocols = EMPTY;
-  private String[] supportedProtocols = EMPTY;
-  private String[] enabledProtocols = EMPTY;
-  private String[] defaultCipherSuites = EMPTY;
-  private String[] supportedCipherSuites = EMPTY;
-  private String[] enabledCipherSuites = EMPTY;
-  private boolean needClientAuth;
-  private boolean wantClientAuth;
-
-  public String[] getDefaultProtocols() {
-    return defaultProtocols;
-  }
-
-  public void setDefaultProtocols(String[] defaultProtocols) {
-    this.defaultProtocols = defaultProtocols;
-  }
-
-  public String[] getSupportedProtocols() {
-    return supportedProtocols;
-  }
-
-  public void setSupportedProtocols(String[] supportedProtocols) {
-    this.supportedProtocols = supportedProtocols;
-  }
-
-  public String[] getEnabledProtocols() {
-    return enabledProtocols;
-  }
-
-  public void setEnabledProtocols(String[] enabledProtocols) {
-    this.enabledProtocols = enabledProtocols;
-  }
-
-  public String[] getDefaultCipherSuites() {
-    return defaultCipherSuites;
-  }
-
-  public void setDefaultCipherSuites(String[] defaultCipherSuites) {
-    this.defaultCipherSuites = defaultCipherSuites;
-  }
-
-  public String[] getSupportedCipherSuites() {
-    return supportedCipherSuites;
-  }
-
-  public void setSupportedCipherSuites(String[] supportedCipherSuites) {
-    this.supportedCipherSuites = supportedCipherSuites;
-  }
-
-  public String[] getEnabledCipherSuites() {
-    return enabledCipherSuites;
-  }
-
-  public void setEnabledCipherSuites(String[] enabledCipherSuites) {
-    this.enabledCipherSuites = enabledCipherSuites;
-  }
-
-  public boolean isNeedClientAuth() {
-    return needClientAuth;
-  }
-
-  public void setNeedClientAuth(boolean needClientAuth) {
-    this.needClientAuth = needClientAuth;
-  }
-
-  public boolean isWantClientAuth() {
-    return wantClientAuth;
-  }
-
-  public void setWantClientAuth(boolean wantClientAuth) {
-    this.wantClientAuth = wantClientAuth;
-  }
-
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/ssl/mock/MockSecureRandomFactoryBean.java b/logback-core/src/test/java/ch/qos/logback/core/net/ssl/mock/MockSecureRandomFactoryBean.java
deleted file mode 100644
index 1d30140..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/ssl/mock/MockSecureRandomFactoryBean.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.ssl.mock;
-
-import java.security.NoSuchAlgorithmException;
-import java.security.NoSuchProviderException;
-import java.security.SecureRandom;
-
-import ch.qos.logback.core.net.ssl.SecureRandomFactoryBean;
-
-/**
- * A {@link SecureRandomFactoryBean} with test instrumentation.
- *
- * @author Carl Harris
- */
-public class MockSecureRandomFactoryBean extends SecureRandomFactoryBean {
-
-  private boolean secureRandomCreated;
-
-  @Override
-  public SecureRandom createSecureRandom() throws NoSuchProviderException,
-      NoSuchAlgorithmException {
-    secureRandomCreated = true;
-    return super.createSecureRandom();
-  }
-
-  public boolean isSecureRandomCreated() {
-    return secureRandomCreated;
-  }
-    
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/net/ssl/mock/MockTrustManagerFactoryFactoryBean.java b/logback-core/src/test/java/ch/qos/logback/core/net/ssl/mock/MockTrustManagerFactoryFactoryBean.java
deleted file mode 100644
index 15a6934..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/net/ssl/mock/MockTrustManagerFactoryFactoryBean.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.net.ssl.mock;
-
-import java.security.NoSuchAlgorithmException;
-import java.security.NoSuchProviderException;
-
-import javax.net.ssl.TrustManagerFactory;
-
-import ch.qos.logback.core.net.ssl.TrustManagerFactoryFactoryBean;
-
-/**
- * A {@link TrustManagerFactoryFactoryBean} with test instrumentation.
- *
- * @author Carl Harris
- */
-public class MockTrustManagerFactoryFactoryBean 
-    extends TrustManagerFactoryFactoryBean {
-
-  private boolean factoryCreated;
-
-  @Override
-  public TrustManagerFactory createTrustManagerFactory()
-      throws NoSuchProviderException, NoSuchAlgorithmException {
-    factoryCreated = true;
-    return super.createTrustManagerFactory();
-  }
-
-  public boolean isFactoryCreated() {
-    return factoryCreated;
-  }
-  
-  
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/pattern/Converter123.java b/logback-core/src/test/java/ch/qos/logback/core/pattern/Converter123.java
index 0b092f2..b92280a 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/pattern/Converter123.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/pattern/Converter123.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/pattern/ConverterHello.java b/logback-core/src/test/java/ch/qos/logback/core/pattern/ConverterHello.java
index 58884d1..b351d89 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/pattern/ConverterHello.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/pattern/ConverterHello.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/pattern/ExceptionalConverter.java b/logback-core/src/test/java/ch/qos/logback/core/pattern/ExceptionalConverter.java
index 39a92c7..eb296d5 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/pattern/ExceptionalConverter.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/pattern/ExceptionalConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/pattern/PackageTest.java b/logback-core/src/test/java/ch/qos/logback/core/pattern/PackageTest.java
index b580ea9..b5eaa87 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/pattern/PackageTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/pattern/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/pattern/SpacePadderTest.java b/logback-core/src/test/java/ch/qos/logback/core/pattern/SpacePadderTest.java
index 277b8d8..3e4d23f 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/pattern/SpacePadderTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/pattern/SpacePadderTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/AbstractPatternLayoutBaseTest.java b/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/AbstractPatternLayoutBaseTest.java
index e79fcec..ac3afdd 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/AbstractPatternLayoutBaseTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/AbstractPatternLayoutBaseTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -84,8 +84,8 @@ abstract public class AbstractPatternLayoutBaseTest<E> {
     String s = plb.doLayout(getEventObject());
     assertEquals("", s);
     StatusChecker checker = new StatusChecker(context.getStatusManager());
-    //StatusPrinter.print(context);
-    checker.assertContainsMatch("Empty or null pattern.");
+    StatusPrinter.print(context);
+    assertTrue(checker.containsMatch("Empty or null pattern."));
   }
 
   @Test
@@ -99,8 +99,8 @@ abstract public class AbstractPatternLayoutBaseTest<E> {
     String s = plb.doLayout(getEventObject());
     assertEquals("", s);
     StatusChecker checker = new StatusChecker(context.getStatusManager());
-    //StatusPrinter.print(context);
-    checker.assertContainsMatch("Empty or null pattern.");
+    StatusPrinter.print(context);
+    assertTrue(checker.containsMatch("Empty or null pattern."));
   }
 
 }
diff --git a/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/CompilerTest.java b/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/CompilerTest.java
index a532e73..151ce94 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/CompilerTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/CompilerTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,6 +13,15 @@
  */
 package ch.qos.logback.core.pattern.parser;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.Before;
+import org.junit.Test;
+
 import ch.qos.logback.core.Context;
 import ch.qos.logback.core.ContextBase;
 import ch.qos.logback.core.pattern.Converter;
@@ -20,21 +29,13 @@ import ch.qos.logback.core.pattern.Converter123;
 import ch.qos.logback.core.pattern.ConverterHello;
 import ch.qos.logback.core.status.StatusChecker;
 import ch.qos.logback.core.util.StatusPrinter;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.junit.Assert.assertEquals;
 
-public class CompilerTest {
+public class CompilerTest  {
 
   Map<String, String> converterMap = new HashMap<String, String>();
   Context context = new ContextBase();
-
-  @Before
-  public void setUp() {
+  
+  @Before public void setUp() {
     converterMap.put("OTT", Converter123.class.getName());
     converterMap.put("hello", ConverterHello.class.getName());
     converterMap.putAll(Parser.DEFAULT_COMPOSITE_CONVERTER_MAP);
@@ -68,7 +69,7 @@ public class CompilerTest {
       Node t = p.parse();
       Converter<Object> head = p.compile(t, converterMap);
       String result = write(head, new Object());
-      assertEquals("abc Hello", result);
+      assertEquals("abc Hello", result); 
     }
     {
       Parser<Object> p = new Parser<Object>("abc %hello %OTT");
@@ -236,9 +237,9 @@ public class CompilerTest {
     p.setContext(context);
     Node t = p.parse();
     p.compile(t, converterMap);
-    StatusChecker checker = new StatusChecker(context.getStatusManager());
-    checker
-            .assertContainsMatch("\\[unknown] is not a valid conversion word");
+    StatusChecker chercker = new StatusChecker(context.getStatusManager());
+    assertTrue(chercker
+        .containsMatch("\\[unknown] is not a valid conversion word"));
   }
 
   @Test
diff --git a/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/FormatInfoTest.java b/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/FormatInfoTest.java
index 03ef88c..7c1ce41 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/FormatInfoTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/FormatInfoTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/OptionTokenizerTest.java b/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/OptionTokenizerTest.java
index 3b1e21d..0d43c20 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/OptionTokenizerTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/OptionTokenizerTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/PackageTest.java b/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/PackageTest.java
index 1a3d4a5..1cf29ed 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/PackageTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/ParserTest.java b/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/ParserTest.java
index 2d69fb9..e96abd0 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/ParserTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/ParserTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -22,7 +22,6 @@ import java.util.List;
 
 import ch.qos.logback.core.Context;
 import ch.qos.logback.core.ContextBase;
-import ch.qos.logback.core.spi.ScanException;
 import ch.qos.logback.core.status.StatusChecker;
 import org.junit.Test;
 
@@ -284,8 +283,8 @@ public class ParserTest {
       assertEquals("Expecting RIGHT_PARENTHESIS token but got null", ise.getMessage());
     }
     StatusChecker sc = new StatusChecker(context);
-    sc.assertContainsMatch("Expecting RIGHT_PARENTHESIS");
-    sc.assertContainsMatch("See also " + Parser.MISSING_RIGHT_PARENTHESIS);
+    assertTrue(sc.containsMatch("Expecting RIGHT_PARENTHESIS"));
+    assertTrue(sc.containsMatch("See also " + Parser.MISSING_RIGHT_PARENTHESIS));
   }
 
 }
\ No newline at end of file
diff --git a/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/SamplePatternLayout.java b/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/SamplePatternLayout.java
index e981218..a510a54 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/SamplePatternLayout.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/SamplePatternLayout.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/SamplePatternLayoutTest.java b/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/SamplePatternLayoutTest.java
index 12df111..e957fbd 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/SamplePatternLayoutTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/SamplePatternLayoutTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/TokenStreamTest.java b/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/TokenStreamTest.java
index bd1d05b..1d0679f 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/TokenStreamTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/pattern/parser/TokenStreamTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -19,7 +19,6 @@ import static org.junit.Assert.fail;
 import java.util.ArrayList;
 import java.util.List;
 
-import ch.qos.logback.core.spi.ScanException;
 import org.junit.Test;
 
 import ch.qos.logback.core.pattern.util.AlmostAsIsEscapeUtil;
diff --git a/logback-core/src/test/java/ch/qos/logback/core/read/CyclicBufferAppenderTest.java b/logback-core/src/test/java/ch/qos/logback/core/read/CyclicBufferAppenderTest.java
deleted file mode 100644
index d0a6cf1..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/read/CyclicBufferAppenderTest.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.read;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-
-public class CyclicBufferAppenderTest {
-
-  private CyclicBufferAppender<String> cyclicBufferAppender;
-
-  @Before
-  public void before() {
-    cyclicBufferAppender = new CyclicBufferAppender<String>();
-    cyclicBufferAppender.start();
-  }
-
-  @Test
-    public void reset() {
-
-    cyclicBufferAppender.append("foobar");
-    assertEquals(1, cyclicBufferAppender.getLength());
-    cyclicBufferAppender.reset();
-    assertEquals(0, cyclicBufferAppender.getLength());
-  }
-
-  @Test
-  public void genericGet() {
-    cyclicBufferAppender.append("Some string");
-    // get() now has type information, assigning to String should work without cast.
-    String foo = cyclicBufferAppender.get(0);
-    assertEquals("Some string", foo);
-  }
-
-
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/recovery/PackageTest.java b/logback-core/src/test/java/ch/qos/logback/core/recovery/PackageTest.java
index c16e5a6..b406f1b 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/recovery/PackageTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/recovery/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -18,6 +18,6 @@ import org.junit.runners.Suite;
 import org.junit.runners.Suite.SuiteClasses;
 
 @RunWith(Suite.class)
- at SuiteClasses({RecoveryCoordinatorTest.class, ResilientOutputStreamTest.class})
+ at SuiteClasses({RecoveryCoordinatorTest.class})
 public class PackageTest  {
 }
\ No newline at end of file
diff --git a/logback-core/src/test/java/ch/qos/logback/core/recovery/RecoveryCoordinatorTest.java b/logback-core/src/test/java/ch/qos/logback/core/recovery/RecoveryCoordinatorTest.java
index 05458f6..3493529 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/recovery/RecoveryCoordinatorTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/recovery/RecoveryCoordinatorTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -19,61 +19,41 @@ import org.junit.Test;
 
 public class RecoveryCoordinatorTest {
 
-  @Test
-  public void recoveryNotNeededAfterInit() {
-    RecoveryCoordinator rc = new RecoveryCoordinator();
-    assertTrue(rc.isTooSoon());
-  }
+  RecoveryCoordinator rc = new RecoveryCoordinator();
+  long now = System.currentTimeMillis();
 
   @Test
-  public void recoveryNotNeededIfAsleepForLessThanBackOffTime() throws InterruptedException {
-    RecoveryCoordinator rc = new RecoveryCoordinator();
-    Thread.sleep(RecoveryCoordinator.BACKOFF_COEFFICIENT_MIN / 2);
+  public void actualTime() throws InterruptedException {
     assertTrue(rc.isTooSoon());
-  }
-
-  @Test
-  public void recoveryNeededIfAsleepForMoreThanBackOffTime() throws InterruptedException {
-    RecoveryCoordinator rc = new RecoveryCoordinator();
-    Thread.sleep(RecoveryCoordinator.BACKOFF_COEFFICIENT_MIN + 20);
+    Thread.sleep(RecoveryCoordinator.BACKOFF_COEFFICIENT_MIN+20);
     assertFalse(rc.isTooSoon());
   }
-
-  @Test
-  public void recoveryNotNeededIfCurrentTimeSetToBackOffTime() throws InterruptedException {
-    RecoveryCoordinator rc = new RecoveryCoordinator();
-    long now = System.currentTimeMillis();
-    rc.setCurrentTime(now + RecoveryCoordinator.BACKOFF_COEFFICIENT_MIN);
-    assertTrue(rc.isTooSoon());
-  }
-
+  
   @Test
-  public void recoveryNeededIfCurrentTimeSetToExceedBackOffTime() {
-    RecoveryCoordinator rc = new RecoveryCoordinator();
-    long now = System.currentTimeMillis();
-    rc.setCurrentTime(now + RecoveryCoordinator.BACKOFF_COEFFICIENT_MIN + 1);
+  public void smoke() {
+    // if the machine is really too busy or too slow, rc.isTooSoon can
+    // return false, hence we comment out the next line
+    // assertTrue(rc.isTooSoon());
+    rc.setCurrentTime(now+RecoveryCoordinator.BACKOFF_COEFFICIENT_MIN+1);
     assertFalse(rc.isTooSoon());
   }
-
+  
   @Test
-  public void recoveryConditionDetectedEvenAfterReallyLongTimesBetweenRecovery() {
-    // Since backoff time quadruples whenever recovery is needed,
-    // we double the offset on each for-loop iteration, causing
-    // every other iteration to trigger recovery.
-
-    RecoveryCoordinator rc = new RecoveryCoordinator();
-    long now = System.currentTimeMillis();
+  public void longTermFailure() {
     long offset = RecoveryCoordinator.BACKOFF_COEFFICIENT_MIN;
-
-    for (int i = 0; i < 16; i++) {
-      rc.setCurrentTime(now + offset);
-
-      if (i % 2 == 0) {
-        assertTrue("recovery should've been needed at " + offset, rc.isTooSoon());
+    int tooSoonCount = 0;
+    for(int i = 0; i < 16; i++) {
+      rc.setCurrentTime(now+offset);
+     
+      if(rc.isTooSoon()) {
+        //System.out.println("is     too soon at "+(offset));
+        tooSoonCount++;
       } else {
-        assertFalse("recovery should NOT have been needed at " + offset, rc.isTooSoon());
-      }
+        //System.out.println("is NOT too soon at "+(offset));
+    }
       offset *= 2;
     }
+    assertEquals(7, tooSoonCount);
+    
   }
 }
diff --git a/logback-core/src/test/java/ch/qos/logback/core/recovery/ResilientOutputStreamTest.java b/logback-core/src/test/java/ch/qos/logback/core/recovery/ResilientOutputStreamTest.java
deleted file mode 100644
index 1c8f843..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/recovery/ResilientOutputStreamTest.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.recovery;
-
-import ch.qos.logback.core.Context;
-import ch.qos.logback.core.ContextBase;
-import ch.qos.logback.core.testUtil.RandomUtil;
-import ch.qos.logback.core.util.CoreTestConstants;
-import ch.qos.logback.core.util.StatusPrinter;
-
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-import java.io.File;
-
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-
-/**
- * @author Ceki Gücü
- */
-public class ResilientOutputStreamTest {
-
-  int diff = RandomUtil.getPositiveInt();
-  Context context = new ContextBase();
-
-   @BeforeClass
-   public static void setUp() {
-     File file = new File(CoreTestConstants.OUTPUT_DIR_PREFIX);
-     file.mkdirs();
-   }
-
-   @Test
-   public void verifyRecuperationAfterFailure() throws Exception {
-     File file = new File(CoreTestConstants.OUTPUT_DIR_PREFIX+"resilient"+diff+".log");
-     ResilientFileOutputStream rfos = new ResilientFileOutputStream(file, true);
-     rfos.setContext(context);
-
-     ResilientFileOutputStream spy = spy(rfos);
-
-     spy.write("a".getBytes());
-     spy.flush();
-
-     spy.getChannel().close();
-     spy.write("b".getBytes());
-     spy.flush();
-     Thread.sleep(RecoveryCoordinator.BACKOFF_COEFFICIENT_MIN+10);
-     spy.write("c".getBytes());
-     spy.flush();
-     verify(spy).openNewOutputStream();
-
-   }
-
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/rolling/DefaultRolloverChecker.java b/logback-core/src/test/java/ch/qos/logback/core/rolling/DefaultRolloverChecker.java
deleted file mode 100644
index 6603812..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/rolling/DefaultRolloverChecker.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- * or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.rolling;
-
-
-import ch.qos.logback.core.util.Compare;
-import ch.qos.logback.core.util.CoreTestConstants;
-
-import java.io.IOException;
-import java.util.List;
-
-import static org.junit.Assert.assertTrue;
-
-public class DefaultRolloverChecker implements RolloverChecker {
-
-  final String testId;
-  final boolean withCompression;
-  final String compressionSuffix;
-
-  public DefaultRolloverChecker(String testId, boolean withCompression, String compressionSuffix) {
-    this.testId = testId;
-    this.withCompression = withCompression;
-    this.compressionSuffix = compressionSuffix;
-  }
-
-  public void check(List<String> expectedFilenameList) throws IOException {
-
-    int i = 0;
-    for (String fn : expectedFilenameList) {
-      String suffix = withCompression ? addGZIfNotLast(expectedFilenameList, i, compressionSuffix) : "";
-
-      String witnessFileName = CoreTestConstants.TEST_SRC_PREFIX + "witness/rolling/tbr-" + testId + "." + i + suffix;
-      assertTrue(Compare.compare(fn, witnessFileName));
-      i++;
-    }
-  }
-
-  String addGZIfNotLast(List<String> expectedFilenameList, int i, String suff) {
-    int lastIndex = expectedFilenameList.size() - 1;
-    return (i != lastIndex) ? suff : "";
-  }
-}
-
-
diff --git a/logback-core/src/test/java/ch/qos/logback/core/rolling/FileMatchFunction.java b/logback-core/src/test/java/ch/qos/logback/core/rolling/FileMatchFunction.java
deleted file mode 100644
index eb59cd5..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/rolling/FileMatchFunction.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.rolling;
-
-import java.io.File;
-
-/**
- * Created with IntelliJ IDEA.
- * User: ceki
- * Date: 4/3/13
- * Time: 7:42 PM
- * To change this template use File | Settings | File Templates.
- */
-public interface FileMatchFunction {
-
-  boolean match(File f, String pattern);
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/rolling/FileOpener.java b/logback-core/src/test/java/ch/qos/logback/core/rolling/FileOpener.java
index 4cd7344..df496c1 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/rolling/FileOpener.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/rolling/FileOpener.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/rolling/MultiThreadedRollingTest.java b/logback-core/src/test/java/ch/qos/logback/core/rolling/MultiThreadedRollingTest.java
index 2758a30..20f2e7c 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/rolling/MultiThreadedRollingTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/rolling/MultiThreadedRollingTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -24,7 +24,6 @@ import java.io.FilenameFilter;
 import java.io.IOException;
 import java.io.OutputStream;
 
-import ch.qos.logback.core.testUtil.EnvUtilForTests;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -36,6 +35,7 @@ import ch.qos.logback.core.contention.RunnableWithCounterAndDone;
 import ch.qos.logback.core.encoder.EchoEncoder;
 import ch.qos.logback.core.encoder.Encoder;
 import ch.qos.logback.core.status.StatusChecker;
+import ch.qos.logback.core.testUtil.Env;
 import ch.qos.logback.core.testUtil.RandomUtil;
 import ch.qos.logback.core.util.CoreTestConstants;
 import ch.qos.logback.core.util.StatusPrinter;
@@ -43,7 +43,7 @@ import ch.qos.logback.core.util.StatusPrinter;
 public class MultiThreadedRollingTest {
 
   final static int NUM_THREADS = 10;
-  final static int TOTAL_DURATION = 600;
+  final static int TOTAL_DURATION = 2000;
   RunnableWithCounterAndDone[] runnableArray;
 
   Encoder<Object> encoder;
@@ -57,7 +57,7 @@ public class MultiThreadedRollingTest {
 
   RollingFileAppender<Object> rfa = new RollingFileAppender<Object>();
 
-  String pathToBash = EnvUtilForTests.getPathToBash();
+  String pathToBash = Env.getPathToBash();
   OutputStream scriptOS;
 
   @Before
diff --git a/logback-core/src/test/java/ch/qos/logback/core/rolling/PackageTest.java b/logback-core/src/test/java/ch/qos/logback/core/rolling/PackageTest.java
index cfd41cb..eb885f1 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/rolling/PackageTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/rolling/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -17,10 +17,10 @@ import org.junit.runner.RunWith;
 import org.junit.runners.Suite;
 
 @RunWith(Suite.class)
- at Suite.SuiteClasses({RenameUtilTest.class, SizeBasedRollingTest.class,
-	    TimeBasedRollingTest.class, TimeBasedRollingWithArchiveRemoval_Test.class,
+ at Suite.SuiteClasses({RenameUtilTest.class, SizeBasedRolling_STest.class,
+	    TimeBasedRolling_STest.class, TimeBasedRollingWithArchiveRemoval_STest.class,
         MultiThreadedRollingTest.class,
-        SizeAndTimeBasedFNATP_Test.class,
+        SizeAndTimeBasedFNATP_STest.class,
         RollingFileAppenderTest.class,
         ch.qos.logback.core.rolling.helper.PackageTest.class})
 public class PackageTest {
diff --git a/logback-core/src/test/java/ch/qos/logback/core/rolling/RenameUtilTest.java b/logback-core/src/test/java/ch/qos/logback/core/rolling/RenameUtilTest.java
index f8a38f0..1c64da4 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/rolling/RenameUtilTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/rolling/RenameUtilTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,24 +13,23 @@
  */
 package ch.qos.logback.core.rolling;
 
-import ch.qos.logback.core.Context;
-import ch.qos.logback.core.ContextBase;
-import ch.qos.logback.core.encoder.EchoEncoder;
-import ch.qos.logback.core.encoder.Encoder;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.io.IOException;
+
 import ch.qos.logback.core.rolling.helper.RenameUtil;
 import ch.qos.logback.core.status.StatusChecker;
 import ch.qos.logback.core.testUtil.RandomUtil;
-import ch.qos.logback.core.util.CoreTestConstants;
 import ch.qos.logback.core.util.StatusPrinter;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-
-import static org.junit.Assert.assertTrue;
+import ch.qos.logback.core.Context;
+import ch.qos.logback.core.ContextBase;
+import ch.qos.logback.core.encoder.EchoEncoder;
+import ch.qos.logback.core.encoder.Encoder;
+import ch.qos.logback.core.util.CoreTestConstants;
 
 public class RenameUtilTest {
 
@@ -52,7 +51,7 @@ public class RenameUtilTest {
     randomOutputDir.mkdirs();
   }
 
-  @Test
+ @Test
   public void renameToNonExistingDirectory() throws IOException, RolloverFailure {
     RenameUtil renameUtil = new RenameUtil();
     renameUtil.setContext(context);
@@ -61,48 +60,11 @@ public class RenameUtilTest {
     File fromFile = File.createTempFile("from" + diff, "test",
             randomOutputDir);
 
-    String randomTARGETDir = CoreTestConstants.OUTPUT_DIR_PREFIX + diff2;
+    String randomTARGETDir = CoreTestConstants.OUTPUT_DIR_PREFIX+diff2;
 
     renameUtil.rename(fromFile.toString(), new File(randomTARGETDir + "/to.test").toString());
     StatusPrinter.printInCaseOfErrorsOrWarnings(context);
     assertTrue(statusChecker.isErrorFree(0));
   }
 
-
-  @Test
-  @Ignore
-  public void MANUAL_renamingOnDifferentVolumesOnLinux() throws IOException, RolloverFailure {
-    RenameUtil renameUtil = new RenameUtil();
-    renameUtil.setContext(context);
-
-    String src = "/tmp/ramdisk/foo.txt";
-    FileOutputStream fis = new FileOutputStream(src);
-    fis.write(("hello" + diff).getBytes());
-
-    renameUtil.rename(src, "/tmp/foo" + diff + ".txt");
-    StatusPrinter.print(context);
-  }
-
-
-  @Test
-  @Ignore
-  public void MANUAL_renamingOnDifferentVolumesOnWindows() throws IOException, RolloverFailure {
-    RenameUtil renameUtil = new RenameUtil();
-    renameUtil.setContext(context);
-
-    String src = "c:/tmp/foo.txt";
-    FileOutputStream fis = new FileOutputStream(src);
-    fis.write(("hello" + diff).getBytes());
-    fis.close();
-
-    renameUtil.rename(src, "d:/tmp/foo" + diff + ".txt");
-    StatusPrinter.print(context);
-    assertTrue(statusChecker.isErrorFree(0));
-  }
-
-  @Test
-  public void renameByCopying() {
-
-  }
-
 }
diff --git a/logback-core/src/test/java/ch/qos/logback/core/rolling/RollingFileAppenderTest.java b/logback-core/src/test/java/ch/qos/logback/core/rolling/RollingFileAppenderTest.java
index 42ba7f7..2131812 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/rolling/RollingFileAppenderTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/rolling/RollingFileAppenderTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,6 +13,15 @@
  */
 package ch.qos.logback.core.rolling;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
 import ch.qos.logback.core.Appender;
 import ch.qos.logback.core.Context;
 import ch.qos.logback.core.ContextBase;
@@ -23,11 +32,6 @@ import ch.qos.logback.core.status.StatusChecker;
 import ch.qos.logback.core.testUtil.RandomUtil;
 import ch.qos.logback.core.util.CoreTestConstants;
 import ch.qos.logback.core.util.StatusPrinter;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.junit.Assert.*;
 
 public class RollingFileAppenderTest extends AbstractAppenderTest<Object> {
 
@@ -114,7 +118,7 @@ public class RollingFileAppenderTest extends AbstractAppenderTest<Object> {
     rfa.setFile("x");
     StatusPrinter.print(context);
     StatusChecker statusChecker = new StatusChecker(context.getStatusManager());
-    statusChecker.assertContainsMatch(Status.ERROR,
+    statusChecker.containsMatch(Status.ERROR,
             "File property must be set before any triggeringPolicy ");
   }
 
@@ -124,7 +128,7 @@ public class RollingFileAppenderTest extends AbstractAppenderTest<Object> {
     rfa.setTriggeringPolicy(new SizeBasedTriggeringPolicy<Object>());
     rfa.setFile("x");
     StatusChecker statusChecker = new StatusChecker(context.getStatusManager());
-    statusChecker.assertContainsMatch(Status.ERROR,
+    statusChecker.containsMatch(Status.ERROR,
             "File property must be set before any triggeringPolicy ");
   }
 
@@ -165,7 +169,7 @@ public class RollingFileAppenderTest extends AbstractAppenderTest<Object> {
     rfa.setFile(CoreTestConstants.OUTPUT_DIR_PREFIX + "toto-.log");
 
     FixedWindowRollingPolicy fwRollingPolicy = new FixedWindowRollingPolicy();
-    fwRollingPolicy.setContext(context);
+                   fwRollingPolicy.setContext(context);
     fwRollingPolicy.setFileNamePattern(CoreTestConstants.OUTPUT_DIR_PREFIX + "toto-%i.log.zip");
     fwRollingPolicy.setParent(rfa);
     fwRollingPolicy.start();
@@ -189,22 +193,4 @@ public class RollingFileAppenderTest extends AbstractAppenderTest<Object> {
 
   }
 
-  /**
-   * Test for http://jira.qos.ch/browse/LOGBACK-796
-   */
-  @Test
-  public void testFileShouldNotMatchFileNamePattern() {
-    rfa.setContext(context);
-    rfa.setFile(CoreTestConstants.OUTPUT_DIR_PREFIX + "x-2013-04.log");
-    tbrp.setFileNamePattern(CoreTestConstants.OUTPUT_DIR_PREFIX + "x-%d{yyyy-MM}.log");
-    tbrp.start();
-
-    rfa.setRollingPolicy(tbrp);
-    rfa.start();
-    StatusChecker statusChecker = new StatusChecker(context);
-    final String msg = "File property collides with fileNamePattern. Aborting.";
-    boolean containsMatch = statusChecker.containsMatch(Status.ERROR, msg);
-    assertTrue("Missing error: " + msg, containsMatch);
-  }
-
 }
diff --git a/logback-core/src/test/java/ch/qos/logback/core/rolling/RolloverChecker.java b/logback-core/src/test/java/ch/qos/logback/core/rolling/RolloverChecker.java
deleted file mode 100644
index e972203..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/rolling/RolloverChecker.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- * or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-
-package ch.qos.logback.core.rolling;
-
-import java.io.IOException;
-import java.util.List;
-
-
-public interface RolloverChecker {
-  public void check(List<String> expectedFilenameList) throws IOException;
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/rolling/ScaffoldingForRollingTests.java b/logback-core/src/test/java/ch/qos/logback/core/rolling/ScaffoldingForRollingTests.java
index d20e566..29b4468 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/rolling/ScaffoldingForRollingTests.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/rolling/ScaffoldingForRollingTests.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,14 +13,8 @@
  */
 package ch.qos.logback.core.rolling;
 
-import ch.qos.logback.core.Context;
-import ch.qos.logback.core.ContextBase;
-import ch.qos.logback.core.encoder.EchoEncoder;
-import ch.qos.logback.core.rolling.helper.FileFilterUtil;
-import ch.qos.logback.core.rolling.helper.FileNamePattern;
-import ch.qos.logback.core.testUtil.FileToBufferUtil;
-import ch.qos.logback.core.testUtil.RandomUtil;
-import ch.qos.logback.core.util.CoreTestConstants;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 import java.io.File;
 import java.io.IOException;
@@ -28,15 +22,18 @@ import java.sql.Date;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Calendar;
-import java.util.Enumeration;
 import java.util.List;
-import java.util.concurrent.Future;
+import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
+import java.util.concurrent.TimeoutException;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import ch.qos.logback.core.Context;
+import ch.qos.logback.core.ContextBase;
+import ch.qos.logback.core.encoder.EchoEncoder;
+import ch.qos.logback.core.rolling.helper.FileFilterUtil;
+import ch.qos.logback.core.testUtil.FileToBufferUtil;
+import ch.qos.logback.core.testUtil.RandomUtil;
+import ch.qos.logback.core.util.CoreTestConstants;
 
 /**
  * Scaffolding for various rolling tests. Some assumptions are made: - rollover
@@ -56,16 +53,15 @@ public class ScaffoldingForRollingTests {
   EchoEncoder<Object> encoder = new EchoEncoder<Object>();
   Context context = new ContextBase();
   protected List<String> expectedFilenameList = new ArrayList<String>();
+
   protected long nextRolloverThreshold; // initialized in setUp()
   protected long currentTime; // initialized in setUp()
-  protected List<Future<?>> futureList = new ArrayList<Future<?>>();
-
-  Calendar calendar = Calendar.getInstance();
+  Calendar cal = Calendar.getInstance();
 
   public void setUp() {
     context.setName("test");
-    calendar.set(Calendar.MILLISECOND, 333);
-    currentTime = calendar.getTimeInMillis();
+    cal.set(Calendar.MILLISECOND, 333);
+    currentTime = cal.getTimeInMillis();
     recomputeRolloverThreshold(currentTime);
   }
 
@@ -154,22 +150,10 @@ public class ScaffoldingForRollingTests {
     return new Date(currentTime - delta - 1000);
   }
 
-  protected long getMillisOfCurrentPeriodsStart() {
-    long delta = currentTime % 1000;
-    return (currentTime - delta);
-  }
-
-
-  protected void addExpectedFileName_ByDate(String patternStr, long millis) {
-    FileNamePattern fileNamePattern = new FileNamePattern(patternStr, context);
-    String fn = fileNamePattern.convert(new Date(millis));
-    expectedFilenameList.add(fn);
-  }
-
-  void addExpectedFileNamedIfItsTime_ByDate(String fileNamePatternStr) {
-    if (passThresholdTime(nextRolloverThreshold)) {
-      addExpectedFileName_ByDate(fileNamePatternStr, getMillisOfCurrentPeriodsStart());
-      recomputeRolloverThreshold(currentTime);
+  static void waitForCompression(TimeBasedRollingPolicy<Object> tbrp)
+          throws InterruptedException, ExecutionException, TimeoutException {
+    if (tbrp.future != null && !tbrp.future.isDone()) {
+      tbrp.future.get(200, TimeUnit.MILLISECONDS);
     }
   }
 
@@ -183,22 +167,6 @@ public class ScaffoldingForRollingTests {
     expectedFilenameList.add(fn);
   }
 
-  protected void addExpectedFileName_ByFileIndexCounter(String randomOutputDir, String testId, long millis,
-                                                        int fileIndexCounter, String compressionSuffix) {
-    String fn = randomOutputDir + testId + "-" + SDF.format(millis) + "-" + fileIndexCounter + ".txt" + compressionSuffix;
-    expectedFilenameList.add(fn);
-  }
-
-
-  protected List<String> filterElementsInListBySuffix(String suffix) {
-    List<String> zipFiles = new ArrayList<String>();
-    for (String filename : expectedFilenameList) {
-      if (filename.endsWith(suffix))
-        zipFiles.add(filename);
-    }
-    return zipFiles;
-  }
-
   protected void addExpectedFileNamedIfItsTime_ByDate(String outputDir, String testId,
                                                       boolean gzExtension) {
     if (passThresholdTime(nextRolloverThreshold)) {
@@ -208,20 +176,6 @@ public class ScaffoldingForRollingTests {
     }
   }
 
-  void massageExpectedFilesToCorresponToCurrentTarget(String fileName, boolean fileOptionIsSet) {
-    int lastIndex = expectedFilenameList.size() - 1;
-    String last = expectedFilenameList.remove(lastIndex);
-
-    if (fileOptionIsSet) {
-      expectedFilenameList.add(fileName);
-    } else if (last.endsWith(".gz")) {
-      int lastLen = last.length();
-      String stem = last.substring(0, lastLen - 3);
-      expectedFilenameList.add(stem);
-    }
-  }
-
-
   String addGZIfNotLast(int i) {
     int lastIndex = expectedFilenameList.size() - 1;
     if (i != lastIndex) {
@@ -230,54 +184,4 @@ public class ScaffoldingForRollingTests {
       return "";
     }
   }
-
-  void zipEntryNameCheck(List<String> expectedFilenameList, String pattern) throws IOException {
-    for (String filepath : expectedFilenameList) {
-      checkZipEntryName(filepath, pattern);
-    }
-  }
-
-  void checkZipEntryMatchesZipFilename(List<String> expectedFilenameList) throws IOException {
-    for (String filepath : expectedFilenameList) {
-      String stripped = stripStemFromZipFilename(filepath);
-      checkZipEntryName(filepath, stripped);
-    }
-  }
-
-  String stripStemFromZipFilename(String filepath) {
-    File filepathAsFile = new File(filepath);
-    String stem = filepathAsFile.getName();
-    int stemLen = stem.length();
-    return stem.substring(0, stemLen - ".zip".length());
-
-  }
-
-  void checkZipEntryName(String filepath, String pattern) throws IOException {
-    System.out.println("Checking [" + filepath + "]");
-    ZipFile zf = new ZipFile(filepath);
-    Enumeration<? extends ZipEntry> entries = zf.entries();
-    assert ((entries.hasMoreElements()));
-    ZipEntry firstZipEntry = entries.nextElement();
-    assert ((!entries.hasMoreElements()));
-    System.out.println("Testing zip entry [" + firstZipEntry.getName() + "]");
-    assertTrue(firstZipEntry.getName().matches(pattern));
-  }
-
-  protected void add(Future future) {
-    if (future == null) return;
-    if (!futureList.contains(future)) {
-      futureList.add(future);
-    }
-  }
-
-  protected void waitForJobsToComplete() {
-    for (Future future : futureList) {
-      try {
-        future.get(10, TimeUnit.SECONDS);
-      } catch (Exception e) {
-        new RuntimeException("unexpected exception while testing", e);
-      }
-    }
-
-  }
 }
diff --git a/logback-core/src/test/java/ch/qos/logback/core/rolling/SizeAndTimeBasedFNATP_Test.java b/logback-core/src/test/java/ch/qos/logback/core/rolling/SizeAndTimeBasedFNATP_Test.java
deleted file mode 100644
index 1d3ff1a..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/rolling/SizeAndTimeBasedFNATP_Test.java
+++ /dev/null
@@ -1,196 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- * or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.rolling;
-
-import ch.qos.logback.core.encoder.EchoEncoder;
-import ch.qos.logback.core.status.InfoStatus;
-import ch.qos.logback.core.status.StatusManager;
-import ch.qos.logback.core.util.StatusPrinter;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Date;
-import java.util.List;
-import java.util.concurrent.ExecutionException;
-
-public class SizeAndTimeBasedFNATP_Test extends ScaffoldingForRollingTests {
-  private SizeAndTimeBasedFNATP sizeAndTimeBasedFNATP = null;
-  private RollingFileAppender<Object> rfa1 = new RollingFileAppender<Object>();
-  private TimeBasedRollingPolicy<Object> tbrp1 = new TimeBasedRollingPolicy<Object>();
-  private RollingFileAppender<Object> rfa2 = new RollingFileAppender<Object>();
-  private TimeBasedRollingPolicy<Object> tbrp2 = new TimeBasedRollingPolicy<Object>();
-
-  private EchoEncoder<Object> encoder = new EchoEncoder<Object>();
-  int fileSize = 0;
-  int fileIndexCounter = 0;
-  int sizeThreshold = 0;
-
-
-  @Before
-  public void setUp() {
-    super.setUp();
-  }
-
-  private void initRollingFileAppender(RollingFileAppender<Object> rfa, String filename) {
-    rfa.setContext(context);
-    rfa.setEncoder(encoder);
-    if (filename != null) {
-      rfa.setFile(filename);
-    }
-  }
-
-  private void initPolicies(RollingFileAppender<Object> rfa,
-                            TimeBasedRollingPolicy<Object> tbrp,
-                            String filenamePattern, int sizeThreshold,
-                            long givenTime, long lastCheck) {
-    sizeAndTimeBasedFNATP = new SizeAndTimeBasedFNATP<Object>();
-    tbrp.setContext(context);
-    sizeAndTimeBasedFNATP.setMaxFileSize("" + sizeThreshold);
-    tbrp.setTimeBasedFileNamingAndTriggeringPolicy(sizeAndTimeBasedFNATP);
-    tbrp.setFileNamePattern(filenamePattern);
-    tbrp.setParent(rfa);
-    tbrp.timeBasedFileNamingAndTriggeringPolicy.setCurrentTime(givenTime);
-    rfa.setRollingPolicy(tbrp);
-    tbrp.start();
-    rfa.start();
-  }
-
-  private void addExpectedFileNamedIfItsTime(String randomOutputDir, String testId, String msg, String compressionSuffix) {
-    fileSize = fileSize + msg.getBytes().length;
-    if (passThresholdTime(nextRolloverThreshold)) {
-      fileIndexCounter = 0;
-      fileSize = 0;
-      addExpectedFileName_ByFileIndexCounter(randomOutputDir, testId, getMillisOfCurrentPeriodsStart(),
-              fileIndexCounter, compressionSuffix);
-      recomputeRolloverThreshold(currentTime);
-      return;
-    }
-
-    // windows can delay file size changes, so we only allow for
-    // fileIndexCounter 0
-    if ((fileIndexCounter < 1) && fileSize > sizeThreshold) {
-      addExpectedFileName_ByFileIndexCounter(randomOutputDir, testId, getMillisOfCurrentPeriodsStart(),
-              fileIndexCounter, compressionSuffix);
-      fileIndexCounter = fileIndexCounter + 1;
-      fileSize = 0;
-    }
-  }
-
-
-  void generic(String testId, String stem, boolean withSecondPhase, String compressionSuffix) throws IOException, InterruptedException, ExecutionException {
-    String file = (stem != null) ? randomOutputDir + stem : null;
-    initRollingFileAppender(rfa1, file);
-    sizeThreshold = 300;
-    initPolicies(rfa1, tbrp1, randomOutputDir + testId + "-%d{" + DATE_PATTERN_WITH_SECONDS + "}-%i.txt" + compressionSuffix, sizeThreshold, currentTime, 0);
-    addExpectedFileName_ByFileIndexCounter(randomOutputDir, testId, getMillisOfCurrentPeriodsStart(), fileIndexCounter, compressionSuffix);
-    incCurrentTime(100);
-    tbrp1.timeBasedFileNamingAndTriggeringPolicy.setCurrentTime(currentTime);
-    int runLength = 100;
-    String prefix = "Hello -----------------";
-
-    for (int i = 0; i < runLength; i++) {
-      String msg = prefix + i;
-      rfa1.doAppend(msg);
-      addExpectedFileNamedIfItsTime(randomOutputDir, testId, msg, compressionSuffix);
-      incCurrentTime(20);
-      tbrp1.timeBasedFileNamingAndTriggeringPolicy.setCurrentTime(currentTime);
-      add(tbrp1.future);
-    }
-
-    if (withSecondPhase) {
-      secondPhase(testId, file, stem, compressionSuffix, runLength, prefix);
-      runLength = runLength * 2;
-    }
-
-    if (stem != null)
-      massageExpectedFilesToCorresponToCurrentTarget(file, true);
-
-    Thread.yield();
-    // wait for compression to finish
-    waitForJobsToComplete();
-
-    StatusPrinter.print(context);
-    existenceCheck(expectedFilenameList);
-    sortedContentCheck(randomOutputDir, runLength, prefix);
-  }
-
-
-  void secondPhase(String testId, String file, String stem, String compressionSuffix, int runLength, String prefix) {
-    rfa1.stop();
-
-    if (stem != null) {
-      File f = new File(file);
-      f.setLastModified(currentTime);
-    }
-
-    StatusManager sm = context.getStatusManager();
-    sm.add(new InfoStatus("Time when rfa1 is stopped: " + new Date(currentTime), this));
-    sm.add(new InfoStatus("currentTime%1000=" + (currentTime % 1000), this));
-
-    initRollingFileAppender(rfa2, file);
-    initPolicies(rfa2, tbrp2, randomOutputDir + testId + "-%d{"
-            + DATE_PATTERN_WITH_SECONDS + "}-%i.txt" + compressionSuffix, sizeThreshold, currentTime, 0);
-
-    for (int i = runLength; i < runLength * 2; i++) {
-      incCurrentTime(100);
-      tbrp2.timeBasedFileNamingAndTriggeringPolicy.setCurrentTime(currentTime);
-      String msg = prefix + i;
-      rfa2.doAppend(msg);
-      addExpectedFileNamedIfItsTime(randomOutputDir, testId, msg, compressionSuffix);
-    }
-  }
-
-  static final boolean FIRST_PHASE_ONLY = false;
-  static final boolean WITH_SECOND_PHASE = true;
-  static String DEFAULT_COMPRESSION_SUFFIX = "";
-
-  @Test
-  public void noCompression_FileSet_NoRestart_1() throws InterruptedException, ExecutionException, IOException {
-    generic("test1", "toto.log", FIRST_PHASE_ONLY, DEFAULT_COMPRESSION_SUFFIX);
-  }
-
-  @Test
-  public void noCompression_FileBlank_NoRestart_2() throws Exception {
-    generic("test2", null, FIRST_PHASE_ONLY, DEFAULT_COMPRESSION_SUFFIX);
-  }
-
-  @Test
-  public void noCompression_FileBlank_WithStopStart_3() throws Exception {
-    generic("test3", null, WITH_SECOND_PHASE, DEFAULT_COMPRESSION_SUFFIX);
-  }
-
-  @Test
-  public void noCompression_FileSet_WithStopStart_4() throws Exception {
-    generic("test4", "test4.log", WITH_SECOND_PHASE, DEFAULT_COMPRESSION_SUFFIX);
-  }
-
-  @Test
-  public void withGZCompression_FileSet_NoRestart_5() throws Exception {
-    generic("test5", "toto.log", FIRST_PHASE_ONLY, ".gz");
-  }
-
-  @Test
-  public void withGZCompression_FileBlank_NoRestart_6() throws Exception {
-    generic("test6", null, FIRST_PHASE_ONLY, ".gz");
-  }
-
-  @Test
-  public void withZipCompression_FileSet_NoRestart_7() throws Exception {
-    generic("test7", "toto.log", FIRST_PHASE_ONLY, ".zip");
-    List<String> zipFiles = filterElementsInListBySuffix(".zip");
-    checkZipEntryMatchesZipFilename(zipFiles);
-  }
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/rolling/SizeBasedRollingTest.java b/logback-core/src/test/java/ch/qos/logback/core/rolling/SizeBasedRollingTest.java
deleted file mode 100644
index 0368eef..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/rolling/SizeBasedRollingTest.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.rolling;
-
-import ch.qos.logback.core.encoder.EchoEncoder;
-import ch.qos.logback.core.util.CoreTestConstants;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-public class SizeBasedRollingTest extends ScaffoldingForRollingTests {
-
-  RollingFileAppender<Object> rfa = new RollingFileAppender<Object>();
-  FixedWindowRollingPolicy fwrp = new FixedWindowRollingPolicy();
-  SizeBasedTriggeringPolicy<Object> sizeBasedTriggeringPolicy = new SizeBasedTriggeringPolicy<Object>();
-  EchoEncoder<Object> encoder = new EchoEncoder<Object>();
-
-
-  @Before
-  public void setUp() {
-    super.setUp();
-    fwrp.setContext(context);
-    fwrp.setParent(rfa);
-    rfa.setContext(context);
-    sizeBasedTriggeringPolicy.setContext(context);
-  }
-
-  private void initRFA(String filename) {
-    rfa.setEncoder(encoder);
-    if (filename != null) {
-      rfa.setFile(filename);
-    }
-  }
-
-  /**
-   * Test whether FixedWindowRollingPolicy throws an exception when the
-   * ActiveFileName is not set.
-   */
-  @Test(expected = IllegalStateException.class)
-  public void activeFileNameNotSet() {
-    sizeBasedTriggeringPolicy.setMaxFileSize("100");
-    sizeBasedTriggeringPolicy.start();
-
-    fwrp.setFileNamePattern(CoreTestConstants.OUTPUT_DIR_PREFIX + "sizeBased-test1.%i");
-    fwrp.start();
-    // The absence of activeFileName option should cause an exception.
-  }
-
-
-  void generic(String testName, String fileName, String filenamePattern, List<String> expectedFilenameList) throws InterruptedException, IOException {
-    rfa.setName("ROLLING");
-    initRFA(randomOutputDir + fileName);
-
-    sizeBasedTriggeringPolicy.setMaxFileSize("100");
-    fwrp.setMinIndex(0);
-    fwrp.setFileNamePattern(randomOutputDir + filenamePattern);
-
-    rfa.triggeringPolicy = sizeBasedTriggeringPolicy;
-    rfa.rollingPolicy = fwrp;
-
-    fwrp.start();
-    sizeBasedTriggeringPolicy.start();
-    rfa.start();
-
-    int runLength = 40;
-    String prefix = "hello";
-    for (int i = 0; i < runLength; i++){
-      Thread.sleep(10);
-      rfa.doAppend(prefix + i);
-    }
-    rfa.stop();
-
-    existenceCheck(expectedFilenameList);
-    reverseSortedContentCheck(randomOutputDir, runLength, prefix);
-  }
-
-  @Test
-  public void smoke() throws IOException, InterruptedException {
-    expectedFilenameList.add(randomOutputDir + "a-sizeBased-smoke.log");
-    expectedFilenameList.add(randomOutputDir + "sizeBased-smoke.0");
-    expectedFilenameList.add(randomOutputDir + "sizeBased-smoke.1");
-    generic("zipped", "a-sizeBased-smoke.log", "sizeBased-smoke.%i", expectedFilenameList);
-
-  }
-  @Test
-  public void gz() throws IOException, InterruptedException {
-    expectedFilenameList.add(randomOutputDir + "a-sbr-gzed.log");
-    expectedFilenameList.add(randomOutputDir + "sbr-gzed.0.gz");
-    expectedFilenameList.add(randomOutputDir + "sbr-gzed.1.gz");
-    generic("gzed", "a-sbr-gzed.log", "sbr-gzed.%i.gz", expectedFilenameList);
-  }
-
-  // see also LBCORE-199
-  @Test
-  public void zipped() throws IOException, InterruptedException  {
-    expectedFilenameList.add(randomOutputDir + "a-sbr-zipped.log");
-    expectedFilenameList.add(randomOutputDir + "sbr-zipped.0.zip");
-    expectedFilenameList.add(randomOutputDir + "sbr-zipped.1.zip");
-    generic("zipped", "a-sbr-zipped.log", "sbr-zipped.%i.zip", expectedFilenameList);
-
-    List<String> zipFiles = filterElementsInListBySuffix(".zip");
-    zipEntryNameCheck(zipFiles, "sbr-zipped.20\\d{2}-\\d{2}-\\d{2}_\\d{4}");
-  }
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/rolling/SizeBasedTriggeringPolicyTest.java b/logback-core/src/test/java/ch/qos/logback/core/rolling/SizeBasedTriggeringPolicyTest.java
index 08ca2ce..8425295 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/rolling/SizeBasedTriggeringPolicyTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/rolling/SizeBasedTriggeringPolicyTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/rolling/TimeBasedFileNamingAndTriggeringPolicyBaseTest.java b/logback-core/src/test/java/ch/qos/logback/core/rolling/TimeBasedFileNamingAndTriggeringPolicyBaseTest.java
index d405f5e..500a0ae 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/rolling/TimeBasedFileNamingAndTriggeringPolicyBaseTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/rolling/TimeBasedFileNamingAndTriggeringPolicyBaseTest.java
@@ -1,16 +1,3 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
 package ch.qos.logback.core.rolling;
 
 import ch.qos.logback.core.Context;
diff --git a/logback-core/src/test/java/ch/qos/logback/core/rolling/TimeBasedRollingDest.java b/logback-core/src/test/java/ch/qos/logback/core/rolling/TimeBasedRollingDest.java
new file mode 100644
index 0000000..ae1c5de
--- /dev/null
+++ b/logback-core/src/test/java/ch/qos/logback/core/rolling/TimeBasedRollingDest.java
@@ -0,0 +1,412 @@
+/**
+ * Logback: the reliable, generic, fast and flexible logging framework.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
+ *
+ * This program and the accompanying materials are dual-licensed under
+ * either the terms of the Eclipse Public License v1.0 as published by
+ * the Eclipse Foundation
+ *
+ *   or (per the licensee's choosing)
+ *
+ * under the terms of the GNU Lesser General Public License version 2.1
+ * as published by the Free Software Foundation.
+ */
+package ch.qos.logback.core.rolling;
+
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+
+import ch.qos.logback.core.testUtil.RandomUtil;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import ch.qos.logback.core.util.Compare;
+import ch.qos.logback.core.util.CoreTestConstants;
+
+/**
+ * A rather exhaustive set of tests. Tests include leaving the file option
+ * blank, or setting it, with and without compression, and tests with or without
+ * stopping/restarting the RollingFileAppender.
+ * <p/>
+ * The regression tests log a few times using a RollingFileAppender. Then, they
+ * predict the names of the files which should be generated and compare them
+ * with witness files.
+ * <p/>
+ * <pre>
+ *                Compression     file option    Stop/Restart
+ *     Test1      NO              BLANK           NO
+ *     Test2      YES             BLANK           NO
+ *     Test3      NO              BLANK           YES
+ *     Test4      NO              SET             YES
+ *     Test5      NO              SET             NO
+ *     Test6      YES             SET             NO
+ * </pre>
+ *
+ * @author Ceki Gülcü
+ * @deprecated replaced by  TimeBasedRolling_STest
+ */
+public class TimeBasedRollingDest extends ScaffoldingForRollingTests {
+
+  RollingFileAppender<Object> rfa1 = new RollingFileAppender<Object>();
+  TimeBasedRollingPolicy<Object> tbrp1 = new TimeBasedRollingPolicy<Object>();
+
+  RollingFileAppender<Object> rfa2 = new RollingFileAppender<Object>();
+  TimeBasedRollingPolicy<Object> tbrp2 = new TimeBasedRollingPolicy<Object>();
+
+  @Before
+  @Override
+  public void setUp() {
+    super.setUp();
+  }
+
+  @After
+  public void tearDown() {
+  }
+
+  void initRFA(RollingFileAppender<Object> rfa, String filename) {
+    rfa.setContext(context);
+    rfa.setEncoder(encoder);
+    if (filename != null) {
+      rfa.setFile(filename);
+    }
+  }
+
+  void initTRBP(RollingFileAppender<Object> rfa,
+                TimeBasedRollingPolicy<Object> tbrp, String filenamePattern,
+                long givenTime) {
+    tbrp.setContext(context);
+    tbrp.setFileNamePattern(filenamePattern);
+    tbrp.setParent(rfa);
+    tbrp.timeBasedFileNamingAndTriggeringPolicy = new DefaultTimeBasedFileNamingAndTriggeringPolicy<Object>();
+    tbrp.timeBasedFileNamingAndTriggeringPolicy.setCurrentTime(givenTime);
+    rfa.setRollingPolicy(tbrp);
+    tbrp.start();
+    rfa.start();
+  }
+
+  /**
+   * Test rolling without compression, file option left blank, no stop/start
+   */
+  @Test
+  public void noCompression_FileBlank_NoRestart_1() throws Exception {
+    String testId = "test1";
+    initRFA(rfa1, null);
+    initTRBP(rfa1, tbrp1, randomOutputDir + testId + "-%d{"
+            + DATE_PATTERN_WITH_SECONDS + "}", currentTime);
+
+    // compute the current filename
+    addExpectedFileName_ByDate(randomOutputDir, testId, getDateOfCurrentPeriodsStart(), false);
+
+    incCurrentTime(1100);
+    tbrp1.timeBasedFileNamingAndTriggeringPolicy.setCurrentTime(currentTime);
+
+    for (int i = 0; i < 3; i++) {
+      rfa1.doAppend("Hello---" + i);
+      addExpectedFileNamedIfItsTime_ByDate(randomOutputDir, testId, false);
+      incCurrentTime(500);
+      tbrp1.timeBasedFileNamingAndTriggeringPolicy.setCurrentTime(currentTime);
+    }
+
+    int i = 0;
+    for (String fn : expectedFilenameList) {
+      assertTrue(Compare.compare(fn, CoreTestConstants.TEST_DIR_PREFIX
+              + "witness/rolling/tbr-" + testId + "." + i++));
+    }
+  }
+
+  /**
+   * With compression, file option left blank, no stop/restart
+   */
+  @Test
+  public void withCompression_FileBlank_NoRestart_2() throws Exception {
+    String testId = "test2";
+    initRFA(rfa1, null);
+    initTRBP(rfa1, tbrp1, randomOutputDir + testId + "-%d{"
+            + DATE_PATTERN_WITH_SECONDS + "}.gz", currentTime);
+
+    addExpectedFileName_ByDate(randomOutputDir, testId, getDateOfCurrentPeriodsStart(), true);
+    incCurrentTime(1100);
+    tbrp1.timeBasedFileNamingAndTriggeringPolicy.setCurrentTime(currentTime);
+
+    for (int i = 0; i < 3; i++) {
+      // when i == 2, file name should not have .gz extension
+      addExpectedFileNamedIfItsTime_ByDate(randomOutputDir, testId, i != 2);
+      rfa1.doAppend("Hello---" + i);
+      incCurrentTime(500);
+      tbrp1.timeBasedFileNamingAndTriggeringPolicy.setCurrentTime(currentTime);
+      waitForCompression(tbrp1);
+    }
+
+    int i = 0;
+    for (String fn : expectedFilenameList) {
+      assertTrue(Compare.compare(fn, CoreTestConstants.TEST_DIR_PREFIX
+              + "witness/rolling/tbr-" + testId + "." + i + addGZIfNotLast(i)));
+      i++;
+    }
+  }
+
+  /**
+   * No compression, file option left blank, with stop/restart,
+   */
+  @Test
+  public void noCompression_FileBlank_StopRestart_3() throws Exception {
+    String testId = "test3";
+
+    initRFA(rfa1, null);
+    initTRBP(rfa1, tbrp1, randomOutputDir + testId + "-%d{"
+            + DATE_PATTERN_WITH_SECONDS + "}", currentTime);
+
+    // a new file is created by virtue of rfa.start();
+    addExpectedFileName_ByDate(randomOutputDir, testId, getDateOfCurrentPeriodsStart(), false);
+
+    incCurrentTime(1100);
+    tbrp1.timeBasedFileNamingAndTriggeringPolicy.setCurrentTime(currentTime);
+
+    for (int i = 0; i <= 2; i++) {
+      rfa1.doAppend("Hello---" + i);
+      addExpectedFileNamedIfItsTime_ByDate(randomOutputDir, testId, false);
+      incCurrentTime(500);
+      tbrp1.timeBasedFileNamingAndTriggeringPolicy.setCurrentTime(currentTime);
+    }
+
+    rfa1.stop();
+
+    initRFA(rfa2, null);
+    initTRBP(rfa2, tbrp2, randomOutputDir + testId + "-%d{"
+            + DATE_PATTERN_WITH_SECONDS + "}", tbrp1.timeBasedFileNamingAndTriggeringPolicy
+            .getCurrentTime());
+
+    for (int i = 0; i <= 2; i++) {
+      addExpectedFileNamedIfItsTime_ByDate(randomOutputDir, testId, false);
+      rfa2.doAppend("World---" + i);
+      incCurrentTime(100);
+      tbrp2.timeBasedFileNamingAndTriggeringPolicy.setCurrentTime(currentTime);
+    }
+
+    int i = 0;
+    for (String fn : expectedFilenameList) {
+      assertTrue(Compare.compare(fn, CoreTestConstants.TEST_DIR_PREFIX
+              + "witness/rolling/tbr-" + testId + "." + i++));
+    }
+  }
+
+  /**
+   * Without compression, file option set, with stop/restart
+   */
+  @Test
+  public void noCompression_FileSet_StopRestart_4() throws Exception {
+    String testId = "test4";
+    initRFA(rfa1, testId2FileName(testId));
+    initTRBP(rfa1, tbrp1, randomOutputDir + testId + "-%d{"
+            + DATE_PATTERN_WITH_SECONDS + "}", currentTime);
+
+    addExpectedFileName_ByDate(randomOutputDir, testId, getDateOfCurrentPeriodsStart(), false);
+
+    incCurrentTime(1100);
+    tbrp1.timeBasedFileNamingAndTriggeringPolicy.setCurrentTime(currentTime);
+
+    for (int i = 0; i <= 2; i++) {
+      rfa1.doAppend("Hello---" + i);
+      addExpectedFileNamedIfItsTime_ByDate(randomOutputDir, testId, false);
+      incCurrentTime(500);
+      tbrp1.timeBasedFileNamingAndTriggeringPolicy.setCurrentTime(currentTime);
+    }
+
+    rfa1.stop();
+
+    // change the timestamp of the currently actively file
+    File activeFile = new File(rfa1.getFile());
+    activeFile.setLastModified(currentTime);
+
+    initRFA(rfa2, testId2FileName(testId));
+    initTRBP(rfa2, tbrp2, randomOutputDir + testId + "-%d{"
+            + DATE_PATTERN_WITH_SECONDS + "}", currentTime);
+
+    for (int i = 0; i <= 2; i++) {
+      rfa2.doAppend("World---" + i);
+      addExpectedFileNamedIfItsTime_ByDate(randomOutputDir, testId, false);
+      incCurrentTime(100);
+      tbrp2.timeBasedFileNamingAndTriggeringPolicy.setCurrentTime(currentTime);
+    }
+
+    System.out.println("Before "+expectedFilenameList);
+    massageExpectedFilesToCorresponToCurrentTarget("test4.log");
+    System.out.println("After "+expectedFilenameList);
+
+
+    int i = 0;
+    for (String fn : expectedFilenameList) {
+      assertTrue(Compare.compare(fn, CoreTestConstants.TEST_DIR_PREFIX
+              + "witness/rolling/tbr-" + testId + "." + i++));
+    }
+  }
+
+  @Test
+  public void noCompression_FileSet_StopRestart_WithLongWait_4B()
+          throws Exception {
+    String testId = "test4B";
+    initRFA(rfa1, testId2FileName(testId));
+    initTRBP(rfa1, tbrp1, randomOutputDir + testId + "-%d{"
+            + DATE_PATTERN_WITH_SECONDS + "}", currentTime);
+
+    addExpectedFileName_ByDate(randomOutputDir, testId, getDateOfCurrentPeriodsStart(), false);
+
+    incCurrentTime(1100);
+    tbrp1.timeBasedFileNamingAndTriggeringPolicy.setCurrentTime(currentTime);
+
+    for (int i = 0; i <= 2; i++) {
+      rfa1.doAppend("Hello---" + i);
+      addExpectedFileNamedIfItsTime_ByDate(randomOutputDir, testId, false);
+      incCurrentTime(500);
+      tbrp1.timeBasedFileNamingAndTriggeringPolicy.setCurrentTime(currentTime);
+    }
+
+    rfa1.stop();
+
+    // change the timestamp of the currently actively file
+    File activeFile = new File(rfa1.getFile());
+    activeFile.setLastModified(currentTime);
+
+    incCurrentTime(2000);
+
+    initRFA(rfa2, randomOutputDir + "test4B.log");
+    initTRBP(rfa2, tbrp2, randomOutputDir + testId + "-%d{"
+            + DATE_PATTERN_WITH_SECONDS + "}", currentTime);
+
+    for (int i = 0; i <= 2; i++) {
+      rfa2.doAppend("World---" + i);
+      addExpectedFileNamedIfItsTime_ByDate(randomOutputDir, testId, false);
+      incCurrentTime(100);
+      tbrp2.timeBasedFileNamingAndTriggeringPolicy.setCurrentTime(currentTime);
+    }
+
+    massageExpectedFilesToCorresponToCurrentTarget("test4B.log");
+
+    int i = 0;
+    for (String fn : expectedFilenameList) {
+      assertTrue(Compare.compare(fn, CoreTestConstants.TEST_DIR_PREFIX
+              + "witness/rolling/tbr-test4B." + i++));
+    }
+
+  }
+
+  /**
+   * No compression, file option set, without stop/restart
+   */
+  @Test
+  public void noCompression_FileSet_NoRestart_5() throws Exception {
+    String testId = "test5";
+
+    initRFA(rfa1, testId2FileName(testId));
+    initTRBP(rfa1, tbrp1, randomOutputDir + testId + "-%d{"
+            + DATE_PATTERN_WITH_SECONDS + "}", currentTime);
+
+    addExpectedFileName_ByDate(randomOutputDir, testId, getDateOfCurrentPeriodsStart(), false);
+
+    incCurrentTime(1100);
+    tbrp1.timeBasedFileNamingAndTriggeringPolicy.setCurrentTime(currentTime);
+
+    for (int i = 0; i < 3; i++) {
+      rfa1.doAppend("Hello---" + i);
+      addExpectedFileNamedIfItsTime_ByDate(randomOutputDir, testId, false);
+      incCurrentTime(500);
+      tbrp1.timeBasedFileNamingAndTriggeringPolicy.setCurrentTime(currentTime);
+    }
+
+    massageExpectedFilesToCorresponToCurrentTarget("test5.log");
+
+    int i = 0;
+    for (String fn : expectedFilenameList) {
+      assertTrue(Compare.compare(fn, CoreTestConstants.TEST_DIR_PREFIX
+              + "witness/rolling/tbr-test5." + i++));
+    }
+  }
+
+  /**
+   * With compression, file option set, no stop/restart,
+   */
+  @Test
+  public void withCompression_FileSet_NoRestart_6() throws Exception {
+
+    String testId = "test6";
+
+    initRFA(rfa1, testId2FileName(testId));
+    initTRBP(rfa1, tbrp1, randomOutputDir + testId + "-%d{"
+            + DATE_PATTERN_WITH_SECONDS + "}.gz", currentTime);
+
+    addExpectedFileName_ByDate(randomOutputDir, testId, getDateOfCurrentPeriodsStart(), true);
+
+    incCurrentTime(1100);
+    tbrp1.timeBasedFileNamingAndTriggeringPolicy.setCurrentTime(currentTime);
+
+    for (int i = 0; i < 3; i++) {
+      rfa1.doAppend("Hello---" + i);
+      addExpectedFileNamedIfItsTime_ByDate(randomOutputDir, testId, true);
+      incCurrentTime(500);
+      tbrp1.timeBasedFileNamingAndTriggeringPolicy.setCurrentTime(currentTime);
+      waitForCompression(tbrp1);
+    }
+
+    massageExpectedFilesToCorresponToCurrentTarget("test6.log");
+
+    int i = 0;
+    for (String fn : expectedFilenameList) {
+      assertTrue(Compare.compare(fn, CoreTestConstants.TEST_DIR_PREFIX
+              + "witness/rolling/tbr-" + testId + "." + i + addGZIfNotLast(i)));
+      i++;
+    }
+  }
+
+  @Test
+  public void withMissingTargetDir() throws Exception {
+    String testId = "missingTargetDir";
+
+    initRFA(rfa1, testId2FileName(testId));
+    int secondDiff = RandomUtil.getPositiveInt();
+    String randomTargetDir = CoreTestConstants.OUTPUT_DIR_PREFIX + secondDiff + '/';
+
+    System.out.println("randomOutputDir"+randomOutputDir);
+    System.out.println("randomTargetDir"+randomTargetDir);
+
+    initTRBP(rfa1, tbrp1, randomTargetDir + testId + "-%d{"
+            + DATE_PATTERN_WITH_SECONDS + "}", currentTime);
+
+    addExpectedFileName_ByDate(randomTargetDir, testId, getDateOfCurrentPeriodsStart(), false);
+
+    incCurrentTime(1100);
+    tbrp1.timeBasedFileNamingAndTriggeringPolicy.setCurrentTime(currentTime);
+
+    for (int i = 0; i < 3; i++) {
+      rfa1.doAppend("Hello---" + i);
+      addExpectedFileNamedIfItsTime_ByDate(randomTargetDir, testId, false);
+      incCurrentTime(500);
+      tbrp1.timeBasedFileNamingAndTriggeringPolicy.setCurrentTime(currentTime);
+    }
+    massageExpectedFilesToCorresponToCurrentTarget("missingTargetDir.log");
+    int i = 0;
+    for (String fn : expectedFilenameList) {
+      System.out.println("expectedFile="+fn);
+      assertTrue(Compare.compare(fn, CoreTestConstants.TEST_DIR_PREFIX
+              + "witness/rolling/tbr-test5." + i++));
+    }
+
+  }
+
+  // =========================================================================
+  // utility methods
+  // =========================================================================
+
+  void massageExpectedFilesToCorresponToCurrentTarget(String file) {
+    // we added one too many files by date
+    expectedFilenameList.remove(expectedFilenameList.size() - 1);
+    // since file is set, we have to add it
+    addExpectedFileName_ByFile(file);
+  }
+
+  void addExpectedFileName_ByFile(String filenameSuffix) {
+    String fn = randomOutputDir + filenameSuffix;
+    expectedFilenameList.add(fn);
+  }
+}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/rolling/TimeBasedRollingTest.java b/logback-core/src/test/java/ch/qos/logback/core/rolling/TimeBasedRollingTest.java
deleted file mode 100644
index eec46c8..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/rolling/TimeBasedRollingTest.java
+++ /dev/null
@@ -1,285 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.rolling;
-
-import ch.qos.logback.core.encoder.EchoEncoder;
-import ch.qos.logback.core.testUtil.EnvUtilForTests;
-import ch.qos.logback.core.util.StatusPrinter;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.concurrent.ExecutionException;
-
-/**
- * A rather exhaustive set of tests. Tests include leaving the file option
- * blank, or setting it, with and without compression, and tests with or without
- * stopping/restarting the RollingFileAppender.
- * <p/>
- * The regression tests log a few times using a RollingFileAppender. Then, they
- * predict the names of the files which should be generated and compare them
- * with witness files.
- * <p/>
- * <pre>
- *                Compression     file option    Stop/Restart
- *     Test1      NO              BLANK           NO
- *     Test2      YES             BLANK           NO
- *     Test3      NO              BLANK           YES
- *     Test4      NO              SET             YES
- *     Test5      NO              SET             NO
- *     Test6      YES             SET             NO
- * </pre>
- *
- * @author Ceki Gülcü
- */
-public class TimeBasedRollingTest extends ScaffoldingForRollingTests {
-
-  static final int NO_RESTART = 0;
-  static final int WITH_RESTART = 1;
-  static final int WITH_RESTART_AND_LONG_WAIT = 2000;
-
-  static final boolean FILE_OPTION_SET = true;
-  static final boolean FILE_OPTION_BLANK = false;
-
-
-  RollingFileAppender<Object> rfa1 = new RollingFileAppender<Object>();
-  TimeBasedRollingPolicy<Object> tbrp1 = new TimeBasedRollingPolicy<Object>();
-
-  RollingFileAppender<Object> rfa2 = new RollingFileAppender<Object>();
-  TimeBasedRollingPolicy<Object> tbrp2 = new TimeBasedRollingPolicy<Object>();
-
-  EchoEncoder<Object> encoder = new EchoEncoder<Object>();
-
-  RolloverChecker rolloverChecker;
-
-  @Before
-  @Override
-  public void setUp() {
-    super.setUp();
-  }
-
-  @After
-  public void tearDown() {
-  }
-
-  void initRFA(RollingFileAppender<Object> rfa, String filename) {
-    rfa.setContext(context);
-    rfa.setEncoder(encoder);
-    if (filename != null) {
-      rfa.setFile(filename);
-    }
-  }
-
-  void initTRBP(RollingFileAppender<Object> rfa,
-                TimeBasedRollingPolicy<Object> tbrp, String filenamePattern,
-                long givenTime) {
-    tbrp.setContext(context);
-    tbrp.setFileNamePattern(filenamePattern);
-    tbrp.setParent(rfa);
-    tbrp.timeBasedFileNamingAndTriggeringPolicy = new DefaultTimeBasedFileNamingAndTriggeringPolicy<Object>();
-    tbrp.timeBasedFileNamingAndTriggeringPolicy.setCurrentTime(givenTime);
-    rfa.setRollingPolicy(tbrp);
-    tbrp.start();
-    rfa.start();
-  }
-
-
-  void genericTest(String testId, String patternPrefix, String compressionSuffix, boolean fileOptionIsSet, int waitDuration) throws IOException {
-    String fileName = fileOptionIsSet ? testId2FileName(testId) : null;
-    initRFA(rfa1, fileName);
-
-    String fileNamePatternStr = randomOutputDir + patternPrefix + "-%d{" + DATE_PATTERN_WITH_SECONDS + "}" + compressionSuffix;
-
-    initTRBP(rfa1, tbrp1, fileNamePatternStr, currentTime);
-
-    // compute the current filename
-    addExpectedFileName_ByDate(fileNamePatternStr, getMillisOfCurrentPeriodsStart());
-
-    incCurrentTime(1100);
-    tbrp1.timeBasedFileNamingAndTriggeringPolicy.setCurrentTime(currentTime);
-
-    for (int i = 0; i < 3; i++) {
-      rfa1.doAppend("Hello---" + i);
-      addExpectedFileNamedIfItsTime_ByDate(fileNamePatternStr);
-      incCurrentTime(500);
-      tbrp1.timeBasedFileNamingAndTriggeringPolicy.setCurrentTime(currentTime);
-      add(tbrp1.future);
-    }
-    rfa1.stop();
-    waitForJobsToComplete();
-
-    if (waitDuration != NO_RESTART) {
-      doRestart(testId, patternPrefix, fileOptionIsSet, waitDuration);
-    }
-    waitForJobsToComplete();
-
-    massageExpectedFilesToCorresponToCurrentTarget(fileName, fileOptionIsSet);
-    StatusPrinter.print(context);
-    rolloverChecker.check(expectedFilenameList);
-  }
-
-  void defaultTest(String testId, String patternPrefix, String compressionSuffix, boolean fileOptionIsSet, int waitDuration) throws IOException {
-    boolean withCompression = compressionSuffix.length() > 0;
-    rolloverChecker = new DefaultRolloverChecker(testId, withCompression, compressionSuffix);
-    genericTest(testId, patternPrefix, compressionSuffix, fileOptionIsSet, waitDuration);
-  }
-
-  void doRestart(String testId, String patternPart, boolean fileOptionIsSet, int waitDuration) {
-    // change the timestamp of the currently actively file
-    File activeFile = new File(rfa1.getFile());
-    activeFile.setLastModified(currentTime);
-
-    incCurrentTime(waitDuration);
-
-    String filePatternStr = randomOutputDir + patternPart + "-%d{" + DATE_PATTERN_WITH_SECONDS + "}";
-
-    String fileName = fileOptionIsSet ? testId2FileName(testId) : null;
-    initRFA(rfa2, fileName);
-    initTRBP(rfa2, tbrp2, filePatternStr, currentTime);
-    for (int i = 0; i < 3; i++) {
-      rfa2.doAppend("World---" + i);
-      addExpectedFileNamedIfItsTime_ByDate(filePatternStr);
-      incCurrentTime(100);
-      tbrp2.timeBasedFileNamingAndTriggeringPolicy.setCurrentTime(currentTime);
-      add(tbrp2.future);
-    }
-    rfa2.stop();
-  }
-
-
-  @Test
-  public void noCompression_FileBlank_NoRestart_1() throws IOException {
-    defaultTest("test1", "test1", "", FILE_OPTION_BLANK, NO_RESTART);
-  }
-
-  @Test
-  public void withCompression_FileBlank_NoRestart_2() throws IOException {
-    defaultTest("test2", "test2", ".gz", FILE_OPTION_BLANK, NO_RESTART);
-  }
-
-  @Test
-  public void noCompression_FileBlank_StopRestart_3() throws IOException {
-    defaultTest("test3", "test3", "", FILE_OPTION_BLANK, WITH_RESTART);
-  }
-
-  @Test
-  public void noCompression_FileSet_StopRestart_4() throws IOException {
-    defaultTest("test4", "test4", "", FILE_OPTION_SET, WITH_RESTART);
-  }
-
-  @Test
-  public void noCompression_FileSet_StopRestart_WithLongWait_4B() throws IOException {
-    defaultTest("test4B", "test4B", "", FILE_OPTION_SET, WITH_RESTART_AND_LONG_WAIT);
-  }
-
-  @Test
-  public void noCompression_FileSet_NoRestart_5() throws IOException {
-    defaultTest("test5", "test6", "", FILE_OPTION_SET, NO_RESTART);
-  }
-
-  @Test
-  public void withCompression_FileSet_NoRestart_6() throws IOException {
-    defaultTest("test6", "test6", ".gz", FILE_OPTION_SET, NO_RESTART);
-  }
-
-  // LOGBACK-168
-  @Test
-  public void withMissingTargetDirWithCompression() throws IOException {
-    defaultTest("test7", "%d{yyyy-MM-dd, aux}/", ".gz", FILE_OPTION_SET, NO_RESTART);
-  }
-
-  @Test
-  public void withMissingTargetDirWithZipCompression() throws IOException {
-    defaultTest("test8", "%d{yyyy-MM-dd, aux}/", ".zip", FILE_OPTION_SET, NO_RESTART);
-  }
-
-  @Test
-  public void failed_rename() throws IOException {
-    if (!EnvUtilForTests.isWindows())
-      return;
-
-    FileOutputStream fos = null;
-    try {
-      String fileName = testId2FileName("failed_rename");
-      File file = new File(fileName);
-      file.getParentFile().mkdirs();
-
-      fos = new FileOutputStream(fileName);
-
-      String testId = "failed_rename";
-      rolloverChecker = new ZRolloverChecker(testId);
-      genericTest(testId, "failed_rename", "", FILE_OPTION_SET, NO_RESTART);
-
-
-    } finally {
-      StatusPrinter.print(context);
-      if (fos != null) fos.close();
-    }
-  }
-
-//
-//  @Test
-//  public void withMissingTargetDir() throws Exception {
-//    String testId = "missingTargetDir";
-//
-//    initRFA(rfa1, testId2FileName(testId));
-//    int secondDiff = RandomUtil.getPositiveInt();
-//    String randomTargetDir = CoreTestConstants.OUTPUT_DIR_PREFIX + secondDiff + '/';
-//
-//    System.out.println("randomOutputDir" + randomOutputDir);
-//    System.out.println("randomTargetDir" + randomTargetDir);
-//
-//    initTRBP(rfa1, tbrp1, randomTargetDir + testId + "-%d{"
-//            + DATE_PATTERN_WITH_SECONDS + "}", currentTime);
-//
-//    addExpectedFileName_ByDate(randomTargetDir, testId, getDateOfCurrentPeriodsStart(), false);
-//
-//    incCurrentTime(1100);
-//    tbrp1.timeBasedFileNamingAndTriggeringPolicy.setCurrentTime(currentTime);
-//
-//    for (int i = 0; i < 3; i++) {
-//      rfa1.doAppend("Hello---" + i);
-//      addExpectedFileNamedIfItsTime_ByDate(randomTargetDir, testId, false);
-//      incCurrentTime(500);
-//      tbrp1.timeBasedFileNamingAndTriggeringPolicy.setCurrentTime(currentTime);
-//    }
-//    massageExpectedFilesToCorresponToCurrentTarget("missingTargetDir.log");
-//    int i = 0;
-//    for (String fn : expectedFilenameList) {
-//      System.out.println("expectedFile=" + fn);
-//      assertTrue(Compare.compare(fn, CoreTestConstants.TEST_SRC_PREFIX
-//              + "witness/rolling/tbr-test5." + i++));
-//    }
-//
-//  }
-//
-//  =========================================================================
-//  utility methods
-//  =========================================================================
-//
-//  void massageExpectedFilesToCorresponToCurrentTarget(String file) {
-//    // we added one too many files by date
-//    expectedFilenameList.remove(expectedFilenameList.size() - 1);
-//    // since file is set, we have to add it
-//    addExpectedFileName_ByFile(file);
-//  }
-//
-//  void addExpectedFileName_ByFile(String filenameSuffix) {
-//    String fn = randomOutputDir + filenameSuffix;
-//    expectedFilenameList.add(fn);
-//  }
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/rolling/TimeBasedRollingWithArchiveRemoval_Test.java b/logback-core/src/test/java/ch/qos/logback/core/rolling/TimeBasedRollingWithArchiveRemoval_Test.java
deleted file mode 100644
index 9f457f0..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/rolling/TimeBasedRollingWithArchiveRemoval_Test.java
+++ /dev/null
@@ -1,401 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- * or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.rolling;
-
-import ch.qos.logback.core.Context;
-import ch.qos.logback.core.ContextBase;
-import ch.qos.logback.core.encoder.EchoEncoder;
-import ch.qos.logback.core.rolling.helper.RollingCalendar;
-import ch.qos.logback.core.testUtil.RandomUtil;
-import ch.qos.logback.core.util.CoreTestConstants;
-import ch.qos.logback.core.util.StatusPrinter;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.File;
-import java.io.FileFilter;
-import java.util.*;
-import java.util.concurrent.TimeUnit;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import static ch.qos.logback.core.CoreConstants.DAILY_DATE_PATTERN;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-public class TimeBasedRollingWithArchiveRemoval_Test extends ScaffoldingForRollingTests {
-  String MONTHLY_DATE_PATTERN = "yyyy-MM";
-  String MONTHLY_CRONOLOG_DATE_PATTERN = "yyyy/MM";
-  final String DAILY_CRONOLOG_DATE_PATTERN = "yyyy/MM/dd";
-
-
-  RollingFileAppender<Object> rfa = new RollingFileAppender<Object>();
-  TimeBasedRollingPolicy<Object> tbrp = new TimeBasedRollingPolicy<Object>();
-
-  // by default tbfnatp is an instance of DefaultTimeBasedFileNamingAndTriggeringPolicy
-  TimeBasedFileNamingAndTriggeringPolicy<Object> tbfnatp = new DefaultTimeBasedFileNamingAndTriggeringPolicy<Object>();
-
-  long MILLIS_IN_MINUTE = 60 * 1000;
-  long MILLIS_IN_HOUR = 60 * MILLIS_IN_MINUTE;
-  long MILLIS_IN_DAY = 24 * MILLIS_IN_HOUR;
-  long MILLIS_IN_MONTH = (long) ((365.242199 / 12) * MILLIS_IN_DAY);
-  int MONTHS_IN_YEAR = 12;
-
-  int slashCount = 0;
-
-  @Before
-  public void setUp() {
-    super.setUp();
-  }
-
-
-  private int computeSlashCount(String datePattern) {
-    if (datePattern == null)
-      return 0;
-    else {
-      int count = 0;
-      for (int i = 0; i < datePattern.length(); i++) {
-        char c = datePattern.charAt(i);
-        if (c == '/')
-          count++;
-      }
-      return count;
-    }
-  }
-
-
-  // test that the number of files at the end of the test is same as the expected number taking into account end dates
-  // near the beginning of a new year. This test has been run in a loop with start date varying over a two years
-  // with success.
-  @Test
-  public void monthlyRolloverOverManyPeriods() {
-
-    slashCount = computeSlashCount(MONTHLY_CRONOLOG_DATE_PATTERN);
-    int numPeriods = 40;
-    int maxHistory = 2;
-    String fileNamePattern = randomOutputDir + "/%d{" + MONTHLY_CRONOLOG_DATE_PATTERN + "}/clean.txt.zip";
-
-    long startTime = currentTime;
-    long endTime = logOverMultiplePeriodsContinuously(currentTime, fileNamePattern, MILLIS_IN_MONTH, maxHistory,
-            numPeriods);
-    System.out.println("randomOutputDir:" + randomOutputDir);
-    System.out.println("start:" + startTime + ", end=" + endTime);
-    int differenceInMonths = RollingCalendar.diffInMonths(startTime, endTime);
-    System.out.println("differenceInMonths:" + differenceInMonths);
-    Calendar startTimeAsCalendar = Calendar.getInstance();
-    startTimeAsCalendar.setTimeInMillis(startTime);
-    int indexOfStartPeriod = startTimeAsCalendar.get(Calendar.MONTH);
-    boolean withExtraFolder = extraFolder(differenceInMonths, MONTHS_IN_YEAR, indexOfStartPeriod, maxHistory);
-
-    check(expectedCountWithFolders(maxHistory, withExtraFolder));
-  }
-
-  void generateDailyRollover(long now, int maxHistory, int simulatedNumberOfPeriods, int startInactivity,
-                             int numInactivityPeriods) {
-    slashCount = computeSlashCount(DAILY_DATE_PATTERN);
-    logOverMultiplePeriods(now, randomOutputDir + "clean-%d{" + DAILY_DATE_PATTERN + "}.txt", MILLIS_IN_DAY, maxHistory, simulatedNumberOfPeriods, startInactivity, numInactivityPeriods);
-    check(expectedCountWithoutFoldersWithInactivity(maxHistory, simulatedNumberOfPeriods, startInactivity + numInactivityPeriods));
-  }
-
-  @Test
-  public void basicDailyRollover() {
-    int maxHistory = 20;
-    int simulatedNumberOfPeriods = 20 * 3;
-    int startInactivity = 0;
-    int numInactivityPeriods = 0;
-    generateDailyRollover(currentTime, maxHistory, simulatedNumberOfPeriods, startInactivity, numInactivityPeriods);
-  }
-
-  // Since the duration of a month (in seconds) varies from month to month, tests with inactivity period must
-  // be conducted with daily rollover  not monthly
-  @Test
-  public void dailyRollover15() {
-    int maxHistory = 5;
-    int simulatedNumberOfPeriods = 15;
-    int startInactivity = 6;
-    int numInactivityPeriods = 3;
-    generateDailyRollover(currentTime, maxHistory, simulatedNumberOfPeriods, startInactivity, numInactivityPeriods);
-  }
-
-  @Test
-  public void dailyRolloverWithInactivity70() {
-    int maxHistory = 6;
-    int simulatedNumberOfPeriods = 70;
-    int startInactivity = 30;
-    int numInactivityPeriods = 1;
-    generateDailyRollover(currentTime, maxHistory, simulatedNumberOfPeriods, startInactivity, numInactivityPeriods);
-  }
-
-  @Test
-  public void dailyRolloverWithInactivity10() {
-    int maxHistory = 6;
-    int simulatedNumberOfPeriods = 10;
-    int startInactivity = 3;
-    int numInactivityPeriods = 4;
-    generateDailyRollover(currentTime, maxHistory, simulatedNumberOfPeriods, startInactivity, numInactivityPeriods);
-  }
-
-  @Test
-  public void dailyRolloverWithSecondPhase() {
-    slashCount = computeSlashCount(DAILY_DATE_PATTERN);
-    int maxHistory = 5;
-    long endTime = logOverMultiplePeriodsContinuously(currentTime, randomOutputDir + "clean-%d{" + DAILY_DATE_PATTERN + "}.txt",
-            MILLIS_IN_DAY, maxHistory, maxHistory * 2);
-    logOverMultiplePeriodsContinuously(endTime + MILLIS_IN_DAY * 10, randomOutputDir + "clean-%d{" + DAILY_DATE_PATTERN + "}.txt",
-            MILLIS_IN_DAY, maxHistory, maxHistory);
-    check(expectedCountWithoutFolders(maxHistory));
-  }
-
-  @Test
-  public void dailyCronologRollover() {
-    slashCount = computeSlashCount(DAILY_CRONOLOG_DATE_PATTERN);
-    logOverMultiplePeriodsContinuously(currentTime, randomOutputDir + "/%d{" + DAILY_CRONOLOG_DATE_PATTERN + "}/clean.txt.zip",
-            MILLIS_IN_DAY, 8, 8 * 3);
-    int expectedDirMin = 9 + slashCount;
-    int expectDirMax = expectedDirMin + 1 + 1;
-    expectedFileAndDirCount(9, expectedDirMin, expectDirMax);
-  }
-
-  @Test
-  public void dailySizeBasedRollover() {
-    SizeAndTimeBasedFNATP<Object> sizeAndTimeBasedFNATP = new SizeAndTimeBasedFNATP<Object>();
-    sizeAndTimeBasedFNATP.setMaxFileSize("10000");
-    tbfnatp = sizeAndTimeBasedFNATP;
-    slashCount = computeSlashCount(DAILY_DATE_PATTERN);
-    logOverMultiplePeriodsContinuously(currentTime, randomOutputDir + "/%d{" + DAILY_DATE_PATTERN + "}-clean.%i.zip", MILLIS_IN_DAY,
-            5, 5 * 4);
-    checkPatternCompliance(5 + 1 + slashCount, "\\d{4}-\\d{2}-\\d{2}-clean(\\.\\d)(.zip)?");
-  }
-
-  @Test
-  public void dailyChronologSizeBasedRollover() {
-    SizeAndTimeBasedFNATP<Object> sizeAndTimeBasedFNATP = new SizeAndTimeBasedFNATP<Object>();
-    sizeAndTimeBasedFNATP.setMaxFileSize("10000");
-    tbfnatp = sizeAndTimeBasedFNATP;
-    slashCount = 1;
-    logOverMultiplePeriodsContinuously(currentTime, randomOutputDir + "/%d{" + DAILY_DATE_PATTERN + "}/clean.%i.zip", MILLIS_IN_DAY,
-            5, 5 * 4);
-    checkDirPatternCompliance(6);
-  }
-
-  @Test
-  public void dailyChronologSizeBasedRolloverWithSecondPhase() {
-    SizeAndTimeBasedFNATP<Object> sizeAndTimeBasedFNATP = new SizeAndTimeBasedFNATP<Object>();
-    sizeAndTimeBasedFNATP.setMaxFileSize("10000");
-    tbfnatp = sizeAndTimeBasedFNATP;
-    slashCount = 1;
-    int maxHistory = 5;
-    int simulatedNumberOfPeriods = maxHistory * 4;
-    long endTime = logOverMultiplePeriodsContinuously(currentTime, randomOutputDir + "/%d{" + DAILY_DATE_PATTERN + "}/clean.%i", MILLIS_IN_DAY,
-            maxHistory, 3);
-    logOverMultiplePeriodsContinuously(endTime + MILLIS_IN_DAY * 7, randomOutputDir + "/%d{" + DAILY_DATE_PATTERN + "}/clean.%i",
-            MILLIS_IN_DAY, maxHistory, simulatedNumberOfPeriods);
-    checkDirPatternCompliance(maxHistory + 1);
-  }
-
-
-  void logOncePeriod(long currentTime, String fileNamePattern, int maxHistory) {
-    buildRollingFileAppender(currentTime, fileNamePattern, maxHistory, DO_CLEAN_HISTORY_ON_START);
-    rfa.doAppend("Hello ----------------------------------------------------------" + new Date(currentTime));
-    rfa.stop();
-  }
-
-  @Test
-  public void cleanHistoryOnStart() {
-    long now = this.currentTime;
-    String fileNamePattern = randomOutputDir + "clean-%d{" + DAILY_DATE_PATTERN + "}.txt";
-    int maxHistory = 3;
-    for (int i = 0; i <= 5; i++) {
-      logOncePeriod(now, fileNamePattern, maxHistory);
-      now = now + MILLIS_IN_DAY;
-    }
-    StatusPrinter.print(context);
-    check(expectedCountWithoutFolders(maxHistory));
-  }
-
-
-  int expectedCountWithoutFolders(int maxHistory) {
-    return maxHistory + 1;
-  }
-
-
-  int expectedCountWithFolders(int maxHistory, boolean withExtraFolder) {
-    int numLogFiles = (maxHistory + 1);
-    int numLogFilesAndFolders = numLogFiles * 2;
-    int result = numLogFilesAndFolders + slashCount;
-    if (withExtraFolder) result += 1;
-    return result;
-  }
-
-
-  void buildRollingFileAppender(long currentTime, String fileNamePattern, int maxHistory,
-                                boolean cleanHistoryOnStart) {
-    rfa.setContext(context);
-    rfa.setEncoder(encoder);
-    tbrp.setContext(context);
-    tbrp.setFileNamePattern(fileNamePattern);
-    tbrp.setMaxHistory(maxHistory);
-    tbrp.setParent(rfa);
-    tbrp.setCleanHistoryOnStart(cleanHistoryOnStart);
-    tbrp.timeBasedFileNamingAndTriggeringPolicy = tbfnatp;
-    tbrp.timeBasedFileNamingAndTriggeringPolicy.setCurrentTime(currentTime);
-    tbrp.start();
-    rfa.setRollingPolicy(tbrp);
-    rfa.start();
-  }
-
-  boolean DO_CLEAN_HISTORY_ON_START = true;
-  boolean DO_NOT_CLEAN_HISTORY_ON_START = false;
-
-
-  long logOverMultiplePeriodsContinuously(long simulatedTime, String fileNamePattern, long periodDurationInMillis, int maxHistory,
-                                          int simulatedNumberOfPeriods) {
-    return logOverMultiplePeriods(simulatedTime, fileNamePattern, periodDurationInMillis, maxHistory,
-            simulatedNumberOfPeriods, 0, 0);
-  }
-
-  long logOverMultiplePeriods(long simulatedTime, String fileNamePattern, long periodDurationInMillis, int maxHistory,
-                              int simulatedNumberOfPeriods, int startInactivity,
-                              int numInactivityPeriods) {
-    buildRollingFileAppender(simulatedTime, fileNamePattern, maxHistory, DO_NOT_CLEAN_HISTORY_ON_START);
-    int ticksPerPeriod = 512;
-    int runLength = simulatedNumberOfPeriods * ticksPerPeriod;
-    int startInactivityIndex = 1 + startInactivity * ticksPerPeriod;
-    int endInactivityIndex = startInactivityIndex + numInactivityPeriods * ticksPerPeriod;
-    long tickDuration = periodDurationInMillis / ticksPerPeriod;
-
-    for (int i = 0; i <= runLength; i++) {
-      if (i < startInactivityIndex || i > endInactivityIndex) {
-        rfa.doAppend("Hello ----------------------------------------------------------" + i);
-      }
-      tbrp.timeBasedFileNamingAndTriggeringPolicy.setCurrentTime(addTime(tbrp.timeBasedFileNamingAndTriggeringPolicy.getCurrentTime(),
-              tickDuration));
-      add(tbrp.future);
-      waitForJobsToComplete();
-    }
-    rfa.stop();
-    return tbrp.timeBasedFileNamingAndTriggeringPolicy.getCurrentTime();
-  }
-
-  boolean extraFolder(int numPeriods, int periodsPerEra, int beginPeriod, int maxHistory) {
-    int valueOfLastMonth = ((beginPeriod) + numPeriods) % periodsPerEra;
-    return (valueOfLastMonth < maxHistory);
-  }
-
-  long addTime(long time, long timeToWait) {
-    return time + timeToWait;
-  }
-
-
-  void expectedFileAndDirCount(int expectedFileAndDirCount, int expectedDirCountMin, int expectedDirCountMax) {
-    File dir = new File(randomOutputDir);
-    List<File> fileList = new ArrayList<File>();
-    findFilesInFolderRecursivelyByPatterMatch(dir, fileList, "clean");
-    List<File> dirList = new ArrayList<File>();
-    findAllFoldersInFolderRecursively(dir, dirList);
-    String msg = "expectedDirCountMin=" + expectedDirCountMin + ", expectedDirCountMax=" + expectedDirCountMax + " actual value=" + dirList.size();
-    assertTrue(msg, expectedDirCountMin <= dirList.size() && dirList.size() <= expectedDirCountMax);
-  }
-
-
-  void check(int expectedCount) {
-    File dir = new File(randomOutputDir);
-    List<File> fileList = new ArrayList<File>();
-    findAllDirsOrStringContainsFilesRecursively(dir, fileList, "clean");
-    assertEquals(expectedCount, fileList.size());
-  }
-
-  int expectedCountWithoutFoldersWithInactivity(int maxHistory, int totalPeriods, int endOfInactivity) {
-    int availableHistory = (totalPeriods + 1) - endOfInactivity;
-    int actualHistory = Math.min(availableHistory, maxHistory + 1);
-    return actualHistory;
-  }
-
-  void genericFindMatching(final FileMatchFunction matchFunc, File dir, List<File> fileList, final String pattern, boolean includeDirs) {
-    if (dir.isDirectory()) {
-      File[] matchArray = dir.listFiles(new FileFilter() {
-        public boolean accept(File f) {
-          return f.isDirectory() || matchFunc.match(f, pattern);
-        }
-      });
-      for (File f : matchArray) {
-        if (f.isDirectory()) {
-          if (includeDirs) fileList.add(f);
-          genericFindMatching(matchFunc, f, fileList, pattern, includeDirs);
-        } else
-          fileList.add(f);
-      }
-    }
-  }
-
-  private void findAllFoldersInFolderRecursively(File dir, List<File> fileList) {
-    FileMatchFunction alwaysFalse = new FileMatchFunction() {
-      public boolean match(File f, String pattern) {
-        return false;
-      }
-    };
-    genericFindMatching(alwaysFalse, dir, fileList, null, true);
-  }
-
-  private void findAllDirsOrStringContainsFilesRecursively(File dir, List<File> fileList, String pattern) {
-    FileMatchFunction matchFunction = new FileMatchFunction() {
-      public boolean match(File f, String pattern) {
-        return f.getName().contains(pattern);
-      }
-    };
-    genericFindMatching(matchFunction, dir, fileList, pattern, true);
-  }
-
-  void findFilesInFolderRecursivelyByPatterMatch(File dir, List<File> fileList, String pattern) {
-    FileMatchFunction matchByPattern = new FileMatchFunction() {
-      public boolean match(File f, String pattern) {
-        return f.getName().matches(pattern);
-      }
-    };
-    genericFindMatching(matchByPattern, dir, fileList, pattern, false);
-  }
-
-  Set<String> groupByClass(List<File> fileList, String regex) {
-    Pattern p = Pattern.compile(regex);
-    Set<String> set = new HashSet<String>();
-    for (File f : fileList) {
-      String n = f.getName();
-      Matcher m = p.matcher(n);
-      m.matches();
-      int begin = m.start(1);
-      String reduced = n.substring(0, begin);
-      set.add(reduced);
-    }
-    return set;
-  }
-
-
-  void checkPatternCompliance(int expectedClassCount, String regex) {
-    File dir = new File(randomOutputDir);
-    List<File> fileList = new ArrayList<File>();
-    findFilesInFolderRecursivelyByPatterMatch(dir, fileList, regex);
-    Set<String> set = groupByClass(fileList, regex);
-    assertEquals(expectedClassCount, set.size());
-  }
-
-  void checkDirPatternCompliance(int expectedClassCount) {
-    File dir = new File(randomOutputDir);
-    List<File> fileList = new ArrayList<File>();
-    findAllFoldersInFolderRecursively(dir, fileList);
-    for (File f : fileList) {
-      assertTrue(f.list().length >= 1);
-    }
-    assertEquals(expectedClassCount, fileList.size());
-  }
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/rolling/ZRolloverChecker.java b/logback-core/src/test/java/ch/qos/logback/core/rolling/ZRolloverChecker.java
deleted file mode 100644
index 6fc143e..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/rolling/ZRolloverChecker.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.rolling;
-
-
-import ch.qos.logback.core.util.Compare;
-import ch.qos.logback.core.util.CoreTestConstants;
-
-import java.io.IOException;
-import java.util.List;
-
-import static org.junit.Assert.assertTrue;
-
-public class ZRolloverChecker implements RolloverChecker {
-
-  String testId;
-
-  public ZRolloverChecker(String testId) {
-    this.testId = testId;
-  }
-
-  public void check(List<String> expectedFilenameList) throws IOException {
-    int lastIndex = expectedFilenameList.size() - 1;
-    String lastFile = expectedFilenameList.get(lastIndex);
-    String witnessFileName = CoreTestConstants.TEST_SRC_PREFIX + "witness/rolling/tbr-" + testId;
-    assertTrue(Compare.compare(lastFile, witnessFileName));
-  }
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/rolling/helper/CompressTest.java b/logback-core/src/test/java/ch/qos/logback/core/rolling/helper/CompressTest.java
index c33a893..ac51570 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/rolling/helper/CompressTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/rolling/helper/CompressTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -43,9 +43,9 @@ public class CompressTest {
     // Copy source files
     // Delete output files
     {
-      File source = new File(CoreTestConstants.TEST_SRC_PREFIX
+      File source = new File(CoreTestConstants.TEST_DIR_PREFIX
           + "input/compress1.copy");
-      File dest = new File(CoreTestConstants.TEST_SRC_PREFIX
+      File dest = new File(CoreTestConstants.TEST_DIR_PREFIX
           + "input/compress1.txt");
 
       copy(source, dest);
@@ -55,9 +55,9 @@ public class CompressTest {
       target.delete();
     }
     {
-      File source = new File(CoreTestConstants.TEST_SRC_PREFIX
+      File source = new File(CoreTestConstants.TEST_DIR_PREFIX
           + "input/compress2.copy");
-      File dest = new File(CoreTestConstants.TEST_SRC_PREFIX
+      File dest = new File(CoreTestConstants.TEST_DIR_PREFIX
           + "input/compress2.txt");
       copy(source, dest);
       File target = new File(CoreTestConstants.OUTPUT_DIR_PREFIX
@@ -66,9 +66,9 @@ public class CompressTest {
       target.delete();
     }
     {
-      File source = new File(CoreTestConstants.TEST_SRC_PREFIX
+      File source = new File(CoreTestConstants.TEST_DIR_PREFIX
           + "input/compress3.copy");
-      File dest = new File(CoreTestConstants.TEST_SRC_PREFIX
+      File dest = new File(CoreTestConstants.TEST_DIR_PREFIX
           + "input/compress3.txt");
       copy(source, dest);
       File target = new File(CoreTestConstants.OUTPUT_DIR_PREFIX
@@ -82,14 +82,14 @@ public class CompressTest {
   public void test1() throws Exception {
     Compressor compressor = new Compressor(CompressionMode.GZ);
     compressor.setContext(context);
-    compressor.compress(CoreTestConstants.TEST_SRC_PREFIX
+    compressor.compress(CoreTestConstants.TEST_DIR_PREFIX
         + "input/compress1.txt", CoreTestConstants.OUTPUT_DIR_PREFIX
         + "compress1.txt.gz", null);
 
     StatusChecker checker = new StatusChecker(context);
     assertTrue(checker.isErrorFree(0));
     assertTrue(Compare.gzCompare(CoreTestConstants.OUTPUT_DIR_PREFIX
-        + "compress1.txt.gz", CoreTestConstants.TEST_SRC_PREFIX
+        + "compress1.txt.gz", CoreTestConstants.TEST_DIR_PREFIX
         + "witness/compress1.txt.gz"));
   }
 
@@ -97,7 +97,7 @@ public class CompressTest {
   public void test2() throws Exception {
     Compressor compressor = new Compressor(CompressionMode.GZ);
     compressor.setContext(context);
-    compressor.compress(CoreTestConstants.TEST_SRC_PREFIX
+    compressor.compress(CoreTestConstants.TEST_DIR_PREFIX
         + "input/compress2.txt", CoreTestConstants.OUTPUT_DIR_PREFIX
         + "compress2.txt", null);
 
@@ -105,7 +105,7 @@ public class CompressTest {
     assertTrue(checker.isErrorFree(0));
 
     assertTrue(Compare.gzCompare(CoreTestConstants.OUTPUT_DIR_PREFIX
-        + "compress2.txt.gz", CoreTestConstants.TEST_SRC_PREFIX
+        + "compress2.txt.gz", CoreTestConstants.TEST_DIR_PREFIX
         + "witness/compress2.txt.gz"));
   }
 
@@ -113,7 +113,7 @@ public class CompressTest {
   public void test3() throws Exception {
     Compressor compressor = new Compressor(CompressionMode.ZIP);
     compressor.setContext(context);
-    compressor.compress(CoreTestConstants.TEST_SRC_PREFIX
+    compressor.compress(CoreTestConstants.TEST_DIR_PREFIX
         + "input/compress3.txt", CoreTestConstants.OUTPUT_DIR_PREFIX
         + "compress3.txt", "compress3.txt");
     StatusChecker checker = new StatusChecker(context);
@@ -121,7 +121,7 @@ public class CompressTest {
 
     // we don't know how to compare .zip files
     // assertTrue(Compare.compare(CoreTestConstants.OUTPUT_DIR_PREFIX
-    // + "compress3.txt.zip", CoreTestConstants.TEST_SRC_PREFIX
+    // + "compress3.txt.zip", CoreTestConstants.TEST_DIR_PREFIX
     // + "witness/compress3.txt.zip"));
   }
 
diff --git a/logback-core/src/test/java/ch/qos/logback/core/rolling/helper/FileNamePatternTest.java b/logback-core/src/test/java/ch/qos/logback/core/rolling/helper/FileNamePatternTest.java
index 4d61083..8f23b99 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/rolling/helper/FileNamePatternTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/rolling/helper/FileNamePatternTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -17,6 +17,7 @@ import static org.junit.Assert.assertEquals;
 
 import java.util.Calendar;
 
+import ch.qos.logback.core.util.StatusPrinter;
 import org.junit.Test;
 
 import ch.qos.logback.core.Context;
@@ -113,13 +114,13 @@ public class FileNamePatternTest {
     {
       FileNamePattern fnp = new FileNamePattern("foo-%d{yyyy.MM.dd}-%i.txt",
           context);
-      String regex = fnp.toRegexForFixedDate(cal.getTime());
+      String regex = fnp.toRegex(cal.getTime());
       assertEquals("foo-2003.05.20-(\\d{1,3}).txt", regex);
     }
     {
       FileNamePattern fnp = new FileNamePattern("\\toto\\foo-%d{yyyy\\MM\\dd}-%i.txt",
           context);
-      String regex = fnp.toRegexForFixedDate(cal.getTime());
+      String regex = fnp.toRegex(cal.getTime());
       assertEquals("/toto/foo-2003/05/20-(\\d{1,3}).txt", regex);
     }
   }
diff --git a/logback-core/src/test/java/ch/qos/logback/core/rolling/helper/FileStoreUtilTest.java b/logback-core/src/test/java/ch/qos/logback/core/rolling/helper/FileStoreUtilTest.java
deleted file mode 100644
index 0eb8b3c..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/rolling/helper/FileStoreUtilTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.rolling.helper;
-
-import ch.qos.logback.core.rolling.RolloverFailure;
-import ch.qos.logback.core.testUtil.RandomUtil;
-import ch.qos.logback.core.util.CoreTestConstants;
-import ch.qos.logback.core.util.EnvUtil;
-import ch.qos.logback.core.util.FileUtil;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import java.io.File;
-import java.io.IOException;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-public class FileStoreUtilTest {
-
-
-  int diff = RandomUtil.getPositiveInt();
-  String pathPrefix = CoreTestConstants.OUTPUT_DIR_PREFIX+"fs"+diff+"/";
-
-  @Test
-  public void filesOnSameFolderShouldBeOnTheSameFileStore() throws RolloverFailure, IOException {
-    if(!EnvUtil.isJDK7OrHigher())
-      return;
-
-    File parent = new File(pathPrefix);
-    File file = new File(pathPrefix+"filesOnSameFolderShouldBeOnTheSameFileStore");
-    FileUtil.createMissingParentDirectories(file);
-    file.createNewFile();
-    assertTrue(FileStoreUtil.areOnSameFileStore(parent, file));
-  }
-
-
-  // test should be run manually
-  @Ignore
-  @Test
-  public void manual_filesOnDifferentVolumesShouldBeDetectedAsSuch() throws RolloverFailure {
-    if(!EnvUtil.isJDK7OrHigher())
-      return;
-
-    // author's computer has two volumes
-    File c = new File("c:/tmp/");
-    File d = new File("d:/");
-    assertFalse(FileStoreUtil.areOnSameFileStore(c, d));
-  }
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/rolling/helper/PackageTest.java b/logback-core/src/test/java/ch/qos/logback/core/rolling/helper/PackageTest.java
index 2bbc41d..b19b36b 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/rolling/helper/PackageTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/rolling/helper/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/rolling/helper/RollingCalendarTest.java b/logback-core/src/test/java/ch/qos/logback/core/rolling/helper/RollingCalendarTest.java
index 432b311..e95564f 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/rolling/helper/RollingCalendarTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/rolling/helper/RollingCalendarTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/sift/AppenderTrackerTest.java b/logback-core/src/test/java/ch/qos/logback/core/sift/AppenderTrackerTest.java
index dd47d90..93bb9da 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/sift/AppenderTrackerTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/sift/AppenderTrackerTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,141 +13,68 @@
  */
 package ch.qos.logback.core.sift;
 
-import ch.qos.logback.core.Appender;
-import ch.qos.logback.core.Context;
-import ch.qos.logback.core.ContextBase;
-import ch.qos.logback.core.joran.spi.JoranException;
-import ch.qos.logback.core.read.ListAppender;
-import ch.qos.logback.core.testUtil.RandomUtil;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
 import org.junit.Before;
 import org.junit.Test;
 
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.junit.Assert.*;
+import ch.qos.logback.core.Context;
+import ch.qos.logback.core.ContextBase;
+import ch.qos.logback.core.read.ListAppender;
 
-/**
- * Relatively straightforward unit tests for AppenderTracker.
- */
 public class AppenderTrackerTest {
 
+  
   Context context = new ContextBase();
-  ListAppenderFactory listAppenderFactory = new ListAppenderFactory();
-  int diff = RandomUtil.getPositiveInt();
-  AppenderTracker<Object> appenderTracker = new AppenderTracker<Object>(context, listAppenderFactory);
-  String key = "k-" + diff;
-  long now = 3000;
-
+  AppenderTracker<Object> appenderTracker = new AppenderTrackerImpl<Object>();
+  ListAppender<Object> la = new ListAppender<Object>();
+  String key = "a";
+  
   @Before
   public void setUp() {
+    la.setContext(context);
+    la.start();
   }
 
+  
   @Test
-  public void removeStaleComponentsShouldNotBomb() {
-    appenderTracker.removeStaleComponents(now);
-    assertEquals(0, appenderTracker.getComponentCount());
+  public void empty0() {
+    long now = 3000;
+    appenderTracker.stopStaleAppenders(now);
+    assertEquals(0, appenderTracker.keyList().size());
   }
-
+  
   @Test
-  public void findingTheInexistentShouldNotBomb() {
-    assertNull(appenderTracker.find(key));
-    now += AppenderTracker.DEFAULT_TIMEOUT + 1;
-    appenderTracker.removeStaleComponents(now);
-    assertNull(appenderTracker.find(key));
+  public void empty1() {
+    long now = 3000;
+    assertNull(appenderTracker.get(key, now++));
+    now += AppenderTrackerImpl.THRESHOLD+1000;
+    appenderTracker.stopStaleAppenders(now);
+    assertNull(appenderTracker.get(key, now++));
   }
-
+  
   @Test
   public void smoke() {
-    Appender<Object> a = appenderTracker.getOrCreate(key, now);
-    assertTrue(a.isStarted());
-    now += AppenderTracker.DEFAULT_TIMEOUT + 1;
-    appenderTracker.removeStaleComponents(now);
-    assertFalse(a.isStarted());
-    assertNull(appenderTracker.find(key));
-  }
-
-  @Test
-  public void endOfLivedAppendersShouldBeRemovedAfterLingeringTimeout() {
-    Appender a = appenderTracker.getOrCreate(key, now);
-    appenderTracker.endOfLife(key);
-    now += AppenderTracker.LINGERING_TIMEOUT + 1;
-    appenderTracker.removeStaleComponents(now);
-    assertFalse(a.isStarted());
-    a = appenderTracker.find(key);
-    assertNull(a);
+    assertTrue(la.isStarted());
+    long now = 3000;
+    appenderTracker.put(key, la, now);
+    assertEquals(la, appenderTracker.get(key, now++));
+    now += AppenderTrackerImpl.THRESHOLD+1000;
+    appenderTracker.stopStaleAppenders(now);
+    assertFalse(la.isStarted());
+    assertNull(appenderTracker.get(key, now++));
   }
-
-  @Test
-  public void endOfLivedAppenderShouldBeAvailableDuringLingeringPeriod() {
-    Appender a = appenderTracker.getOrCreate(key, now);
-    appenderTracker.endOfLife(key);
-    // clean
-    appenderTracker.removeStaleComponents(now);
-    Appender lingering = appenderTracker.getOrCreate(key, now);
-    assertTrue(lingering.isStarted());
-    assertTrue(a == lingering);
-    now += AppenderTracker.LINGERING_TIMEOUT + 1;
-    appenderTracker.removeStaleComponents(now);
-    assertFalse(a.isStarted());
-    a = appenderTracker.find(key);
-    assertNull(a);
-  }
-
-
-  @Test
-  public void trackerShouldHonorMaxComponentsParameter() {
-    List<Appender<Object>> appenderList = new ArrayList<Appender<Object>>();
-    int max = 10;
-    appenderTracker.setMaxComponents(max);
-    for (int i = 0; i < (max + 1); i++) {
-      Appender a = appenderTracker.getOrCreate(key + "-" + i, now++);
-      appenderList.add(a);
-    }
-    // cleaning only happens in removeStaleComponents
-    appenderTracker.removeStaleComponents(now++);
-    assertEquals(max, appenderTracker.allKeys().size());
-    assertNull(appenderTracker.find(key + "-" + 0));
-    assertFalse(appenderList.get(0).isStarted());
-  }
-
+ 
   @Test
-  public void trackerShouldHonorTimeoutParameter() {
-    List<Appender<Object>> appenderList = new ArrayList<Appender<Object>>();
-    int timeout = 2;
-    appenderTracker.setTimeout(timeout);
-    for (int i = 0; i <= timeout; i++) {
-      Appender a = appenderTracker.getOrCreate(key + "-" + i, now++);
-      appenderList.add(a);
-    }
-
-    long numComponentsCreated = timeout + 1;
-    assertEquals(numComponentsCreated, appenderTracker.allKeys().size());
-
-    // cleaning only happens in removeStaleComponents. The first appender should timeout
-    appenderTracker.removeStaleComponents(now++);
-
-    // the first appender should have been removed
-    assertEquals(numComponentsCreated - 1, appenderTracker.allKeys().size());
-    assertNull(appenderTracker.find(key + "-" + 0));
-    assertFalse(appenderList.get(0).isStarted());
-
-    // the other appenders should be in the tracker
-    for (int i = 1; i <= timeout; i++) {
-      assertNotNull(appenderTracker.find(key + "-" + i));
-      assertTrue(appenderList.get(i).isStarted());
-    }
-  }
-
-  // ======================================================================
-  static class ListAppenderFactory implements AppenderFactory<Object> {
-
-    public Appender<Object> buildAppender(Context context, String discriminatingValue) throws JoranException {
-      ListAppender<Object> la = new ListAppender<Object>();
-      la.setContext(context);
-      la.setName(discriminatingValue);
-      la.start();
-      return la;
-    }
-  }
+  public void removeNow() {
+    long now = 3000;
+    appenderTracker.put(key, la, now);
+    appenderTracker.stopAndRemoveNow(key);
+    assertFalse(la.isStarted());
+    appenderTracker.get(key, now++);
+    assertNull(appenderTracker.get(key, now++));
+  }     
 }
diff --git a/logback-core/src/test/java/ch/qos/logback/core/sift/PackageTest.java b/logback-core/src/test/java/ch/qos/logback/core/sift/PackageTest.java
index 87b9aaf..cd19549 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/sift/PackageTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/sift/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -18,6 +18,6 @@ import org.junit.runners.Suite;
 import org.junit.runners.Suite.SuiteClasses;
 
 @RunWith(Suite.class)
- at SuiteClasses({AppenderTrackerTest.class})
+ at SuiteClasses({AppenderTrackerTest.class, ScenarioBasedAppenderTrackerTest.class})
 public class PackageTest  {
 }
\ No newline at end of file
diff --git a/logback-core/src/test/java/ch/qos/logback/core/sift/ScenarioBasedAppenderTrackerTest.java b/logback-core/src/test/java/ch/qos/logback/core/sift/ScenarioBasedAppenderTrackerTest.java
new file mode 100644
index 0000000..3dca209
--- /dev/null
+++ b/logback-core/src/test/java/ch/qos/logback/core/sift/ScenarioBasedAppenderTrackerTest.java
@@ -0,0 +1,75 @@
+/**
+ * Logback: the reliable, generic, fast and flexible logging framework.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
+ *
+ * This program and the accompanying materials are dual-licensed under
+ * either the terms of the Eclipse Public License v1.0 as published by
+ * the Eclipse Foundation
+ *
+ *   or (per the licensee's choosing)
+ *
+ * under the terms of the GNU Lesser General Public License version 2.1
+ * as published by the Free Software Foundation.
+ */
+package ch.qos.logback.core.sift;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+public class ScenarioBasedAppenderTrackerTest {
+
+  Simulator simulator;
+
+  int INVERSE_OF_NO_REMOVE = Integer.MAX_VALUE;
+  
+  
+  void verify() {
+    AppenderTracker at = simulator.realAppenderTracker;
+    AppenderTracker t_at = simulator.t_appenderTracker;
+    assertEquals(t_at.keyList(), at.keyList());
+  }
+  
+  @Test
+  public void shortTest() {
+    simulator = new Simulator(20, AppenderTracker.THRESHOLD / 2, INVERSE_OF_NO_REMOVE);
+    simulator.buildScenario(200);
+    simulator.simulate();
+    verify();
+  }
+
+
+  @Test
+  public void shortTestWithRemovals() {
+    simulator = new Simulator(10, AppenderTracker.THRESHOLD / 10, 2);
+    simulator.buildScenario(200);
+    simulator.simulate();
+    verify();
+  }
+  
+  @Test
+  public void mediumTest() {
+    simulator = new Simulator(100, AppenderTracker.THRESHOLD / 2, INVERSE_OF_NO_REMOVE);
+    simulator.buildScenario(20000);
+    simulator.simulate();
+    verify();
+  }
+
+  @Test
+  public void mediumTestWithRemovals() {
+    simulator = new Simulator(10, AppenderTracker.THRESHOLD / 100, 2);
+    simulator.buildScenario(20000);
+    simulator.simulate();
+    verify();
+  }
+  
+  @Test
+  @Ignore
+  public void longTest() {
+    simulator = new Simulator(100, AppenderTracker.THRESHOLD / 200, 10);
+    simulator.buildScenario(2000000);
+    simulator.simulate();
+    verify();
+  }
+}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/sift/Simulator.java b/logback-core/src/test/java/ch/qos/logback/core/sift/Simulator.java
new file mode 100644
index 0000000..c2ed6ab
--- /dev/null
+++ b/logback-core/src/test/java/ch/qos/logback/core/sift/Simulator.java
@@ -0,0 +1,132 @@
+/**
+ * Logback: the reliable, generic, fast and flexible logging framework.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
+ *
+ * This program and the accompanying materials are dual-licensed under
+ * either the terms of the Eclipse Public License v1.0 as published by
+ * the Eclipse Foundation
+ *
+ *   or (per the licensee's choosing)
+ *
+ * under the terms of the GNU Lesser General Public License version 2.1
+ * as published by the Free Software Foundation.
+ */
+package ch.qos.logback.core.sift;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+
+import ch.qos.logback.core.Appender;
+import ch.qos.logback.core.helpers.NOPAppender;
+import ch.qos.logback.core.sift.tracker.AppenderTrackerTImpl;
+import ch.qos.logback.core.sift.tracker.SimulationEvent;
+import ch.qos.logback.core.sift.tracker.SimulationEvent.SimEventType;
+
+/**
+ * Simulate use of AppenderTracker by SiftingAppender.
+ * 
+ * @author ceki
+ * 
+ */
+public class Simulator {
+
+  AppenderTrackerImpl<Object> realAppenderTracker = new AppenderTrackerImpl<Object>();
+  AppenderTrackerTImpl t_appenderTracker = new AppenderTrackerTImpl();
+
+  List<String> keySpace = new ArrayList<String>();
+  List<SimulationEvent> scenario = new ArrayList<SimulationEvent>();
+  Random randomKeyGen = new Random(100);
+
+  Random random = new Random(11234);
+
+  final int maxTimestampInc;
+  final int inverseOfRemoveProbability;
+
+  Simulator(int keySpaceLen, int maxTimestampInc, int inverseOfRemoveProbability) {
+    this.maxTimestampInc = maxTimestampInc;
+    this.inverseOfRemoveProbability = inverseOfRemoveProbability;
+    Map<String, String> checkMap = new HashMap<String, String>();
+    for (int i = 0; i < keySpaceLen; i++) {
+      String k = getRandomKeyStr();
+      if (checkMap.containsKey(k)) {
+        System.out.println("random key collision occured");
+        k += "" + i;
+      }
+      keySpace.add(k);
+      checkMap.put(k, k);
+    }
+
+  }
+
+  private String getRandomKeyStr() {
+    int ri = randomKeyGen.nextInt();
+    return String.format("%X", ri);
+  }
+
+  void buildScenario(int simLen) {
+    long timestamp = 30000;
+    int keySpaceLen = keySpace.size();
+    for (int i = 0; i < simLen; i++) {
+      int index = random.nextInt(keySpaceLen);
+      timestamp += random.nextInt(maxTimestampInc);
+      String key = keySpace.get(index);
+      SimEventType eventType = SimEventType.PUT;
+      
+      int removeNow = random.nextInt(inverseOfRemoveProbability);
+      if (removeNow == 0) {
+        eventType = SimEventType.REMOVE_NOW;
+      }
+      scenario.add(new SimulationEvent(eventType, key, timestamp));
+    }
+  }
+
+  void dump() {
+    for (SimulationEvent simeEvent : scenario) {
+      System.out.println(simeEvent);
+    }
+  }
+
+  public void simulate() {
+    for (SimulationEvent simeEvent : scenario) {
+      play(simeEvent, realAppenderTracker);
+      play(simeEvent, t_appenderTracker);
+    }
+  }
+
+  void play(SimulationEvent simulationEvent,
+      AppenderTracker<Object> appenderTracker) {
+    String key = simulationEvent.key;
+    long timestamp = simulationEvent.timestamp;
+
+    switch (simulationEvent.simEventType) {
+    case PUT:
+      doPut(appenderTracker, key, timestamp);
+      break;
+    case REMOVE_NOW:
+      doRemoveNow(appenderTracker, key);
+      break;
+    }
+
+  }
+
+  void doPut(AppenderTracker<Object> appenderTracker, String key, long timestamp) {
+    Appender<Object> appender = appenderTracker.get(key, timestamp);
+    if (appender == null) {
+      appender = new NOPAppender<Object>();
+      appender.start();
+      appenderTracker.put(key, appender, timestamp);
+    }
+    appenderTracker.stopStaleAppenders(timestamp);
+  }
+
+  int i = 0;
+
+  void doRemoveNow(AppenderTracker<Object> appenderTracker, String key) {
+    // System.out.println("doRemoveNow "+(i++));
+    appenderTracker.stopAndRemoveNow(key);
+  }
+
+}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/sift/tracker/AppenderTrackerTImpl.java b/logback-core/src/test/java/ch/qos/logback/core/sift/tracker/AppenderTrackerTImpl.java
new file mode 100644
index 0000000..3c738dc
--- /dev/null
+++ b/logback-core/src/test/java/ch/qos/logback/core/sift/tracker/AppenderTrackerTImpl.java
@@ -0,0 +1,114 @@
+/**
+ * Logback: the reliable, generic, fast and flexible logging framework.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
+ *
+ * This program and the accompanying materials are dual-licensed under
+ * either the terms of the Eclipse Public License v1.0 as published by
+ * the Eclipse Foundation
+ *
+ *   or (per the licensee's choosing)
+ *
+ * under the terms of the GNU Lesser General Public License version 2.1
+ * as published by the Free Software Foundation.
+ */
+package ch.qos.logback.core.sift.tracker;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+
+import ch.qos.logback.core.Appender;
+import ch.qos.logback.core.CoreConstants;
+import ch.qos.logback.core.sift.AppenderTracker;
+
+/**
+ * This is an alternative (slower) implementation of AppenderTracker for testing
+ * purposes.
+ * 
+ * @author Ceki Gulcu
+ */
+public class AppenderTrackerTImpl implements AppenderTracker<Object> {
+
+  List<TEntry> entryList = new LinkedList<TEntry>();
+  long lastCheck = 0;
+
+  @SuppressWarnings("unchecked")
+  synchronized public void put(String k, Appender<Object> appender,
+      long timestamp) {
+    TEntry te = getEntry(k);
+    if (te != null) {
+      te.timestamp = timestamp;
+    } else {
+      te = new TEntry(k, appender, timestamp);
+      entryList.add(te);
+    }
+    Collections.sort(entryList);
+  }
+
+  @SuppressWarnings("unchecked")
+  synchronized public Appender<Object> get(String k, long timestamp) {
+    TEntry te = getEntry(k);
+    if (te == null) {
+      return null;
+    } else {
+      te.timestamp = timestamp;
+      Collections.sort(entryList);
+      return te.appender;
+    }
+  }
+
+  synchronized public void stopStaleAppenders(long timestamp) {
+    if (lastCheck + CoreConstants.MILLIS_IN_ONE_SECOND > timestamp) {
+      return;
+    }
+    lastCheck = timestamp;
+    while (entryList.size() != 0 && isEntryStale(entryList.get(0), timestamp)) {
+      entryList.remove(0);
+    }
+  }
+
+  synchronized public void stopAndRemoveNow(String key) {
+    TEntry found = null;
+    for (TEntry te : entryList) {
+      if (key.equals(te.key)) {
+        found = te;
+        break;
+      }
+    }
+    if (found != null) {
+      entryList.remove(found);
+    }
+
+  }
+
+  private boolean isEntryStale(TEntry entry, long now) {
+    return ((entry.timestamp + THRESHOLD) < now);
+  }
+
+  synchronized public List<String> keyList() {
+    List<String> keyList = new ArrayList<String>();
+    for (TEntry e : entryList) {
+      keyList.add(e.key);
+    }
+    return keyList;
+  }
+
+  synchronized public List<Appender<Object>> valueList() {
+    List<Appender<Object>> appenderList = new ArrayList<Appender<Object>>();
+    for (TEntry e : entryList) {
+      appenderList.add(e.appender);
+    }
+    return appenderList;
+  }
+
+  private TEntry getEntry(String k) {
+    for (int i = 0; i < entryList.size(); i++) {
+      TEntry te = entryList.get(i);
+      if (te.key.equals(k)) {
+        return te;
+      }
+    }
+    return null;
+  }
+}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/sift/tracker/SimulationEvent.java b/logback-core/src/test/java/ch/qos/logback/core/sift/tracker/SimulationEvent.java
new file mode 100644
index 0000000..7acc89a
--- /dev/null
+++ b/logback-core/src/test/java/ch/qos/logback/core/sift/tracker/SimulationEvent.java
@@ -0,0 +1,36 @@
+/**
+ * Logback: the reliable, generic, fast and flexible logging framework.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
+ *
+ * This program and the accompanying materials are dual-licensed under
+ * either the terms of the Eclipse Public License v1.0 as published by
+ * the Eclipse Foundation
+ *
+ *   or (per the licensee's choosing)
+ *
+ * under the terms of the GNU Lesser General Public License version 2.1
+ * as published by the Free Software Foundation.
+ */
+package ch.qos.logback.core.sift.tracker;
+
+
+public class SimulationEvent {
+
+  public enum SimEventType {
+    PUT, REMOVE_NOW;
+  }
+  
+  final public String key;
+  final public long timestamp;
+  final public SimEventType simEventType;
+  
+  public SimulationEvent(SimEventType simEventType, String key, long timestamp) {
+    this.simEventType = simEventType;
+    this.key = key;
+    this.timestamp = timestamp;
+  }
+
+  public String toString() {
+      return "Type: "+simEventType+", Event: k=" + key +", timestamp=" + timestamp;
+  }
+}
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/lru/T_Entry.java b/logback-core/src/test/java/ch/qos/logback/core/sift/tracker/TEntry.java
similarity index 50%
copy from logback-classic/src/test/java/ch/qos/logback/classic/turbo/lru/T_Entry.java
copy to logback-core/src/test/java/ch/qos/logback/core/sift/tracker/TEntry.java
index dd9bcf3..75c9f1b 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/lru/T_Entry.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/sift/tracker/TEntry.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -11,35 +11,39 @@
  * under the terms of the GNU Lesser General Public License version 2.1
  * as published by the Free Software Foundation.
  */
-package ch.qos.logback.classic.turbo.lru;
+package ch.qos.logback.core.sift.tracker;
 
-public class T_Entry<K> implements Comparable {
+import ch.qos.logback.core.Appender;
 
-  K k;
-  long sequenceNumber;
+public class TEntry implements Comparable {
 
-  T_Entry(K k, long sn) {
-    this.k = k;
-    this.sequenceNumber = sn;
+  String key;
+  long timestamp;
+  Appender<Object> appender;
+  
+  TEntry(String key, Appender<Object> appender, long timestamp) {
+    this.key = key;
+    this.appender = appender;
+    this.timestamp = timestamp;
   }
 
   public int compareTo(Object o) {
-    if(!(o instanceof T_Entry)) {
-      throw new IllegalArgumentException("arguments must be of type "+T_Entry.class);
+    if(!(o instanceof TEntry)) {
+      throw new IllegalArgumentException("arguments must be of type "+TEntry.class);
     }
     
-    T_Entry other = (T_Entry) o;
-    if(sequenceNumber > other.sequenceNumber) {
+    TEntry other = (TEntry) o;
+    if(timestamp > other.timestamp) {
       return 1;
     }
-    if(sequenceNumber == other.sequenceNumber) {
+    if(timestamp == other.timestamp) {
       return 0;
     }
     return -1;
   }
+  
   @Override
   public String toString() {
-    return "("+k+","+sequenceNumber+")";
-    //return "("+k+")";
+    return "("+key+","+timestamp+")";
   }
 }
diff --git a/logback-core/src/test/java/ch/qos/logback/core/spi/AppenderAttachableImplLockTest.java b/logback-core/src/test/java/ch/qos/logback/core/spi/AppenderAttachableImplLockTest.java
index 11d0e74..6c3c27c 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/spi/AppenderAttachableImplLockTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/spi/AppenderAttachableImplLockTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,48 +13,50 @@
  */
 package ch.qos.logback.core.spi;
 
-import ch.qos.logback.core.Appender;
+import org.easymock.EasyMock;
+
 import org.junit.Test;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+
+import ch.qos.logback.core.Appender;
 
 /**
  * This test shows the general problem I described in LBCORE-67.
- *
+ * 
  * In the two test cases below, an appender that throws an OutOfMemoryError
  * while getName is called - but this is just an example to show the general
  * problem.
- *
+ * 
  * The tests below fail without fixing LBCORE-67 and pass when Joern Huxhorn's
  * patch is applied.
- *
+ * 
  * Additionally, the following, probably more realistic, situations could
  * happen:
- *
+ * 
  * -addAppender: appenderList.add() could throw OutOfMemoryError. This could
  * only be shown by using an appenderList mock but appenderList does not (and
  * should not) have a setter. This would leave the write lock locked.
- *
+ * 
  * -iteratorForAppenders: new ArrayList() could throw an OutOfMemoryError,
  * leaving the read lock locked.
- *
+ * 
  * I can't imagine a bad situation in isAttached, detachAppender(Appender) or
  * detachAppender(String) but I'd change the code anyway for consistency. I'm
  * also pretty sure that something stupid can happen at any time so it's best to
  * just stick to conventions.
- *
+ * 
  * @author Joern Huxhorn
  */
 public class AppenderAttachableImplLockTest {
-
   private AppenderAttachableImpl<Integer> aai = new AppenderAttachableImpl<Integer>();
 
   @SuppressWarnings("unchecked")
   @Test(timeout = 5000)
   public void getAppenderBoom() {
-    Appender<Integer> mockAppender1 = mock(Appender.class);
 
-    when(mockAppender1.getName()).thenThrow(new OutOfMemoryError("oops"));
+    Appender<Integer> mockAppender1 = EasyMock.createStrictMock(Appender.class);
+    EasyMock.expect(mockAppender1.getName()).andThrow(new OutOfMemoryError("oops"));
+    EasyMock.replay(mockAppender1);
+
     aai.addAppender(mockAppender1);
     try {
       // appender.getName called as a result of next statement
@@ -63,18 +65,20 @@ public class AppenderAttachableImplLockTest {
       // this leaves the read lock locked.
     }
 
-    Appender<Integer> mockAppender2=mock(Appender.class);
-    // the next call used to freeze with the earlier ReadWriteLock lock
-    // implementation
+    Appender<Integer> mockAppender2=EasyMock.createStrictMock(Appender.class);
+    // the next call will lock
     aai.addAppender(mockAppender2);
+    EasyMock.verify(mockAppender1);
   }
 
   @SuppressWarnings("unchecked")
-  @Test(timeout = 5000)
+  @Test(timeout = 1000)
   public void detachAppenderBoom() throws InterruptedException {
-    Appender<Integer> mockAppender = mock(Appender.class);
-    when(mockAppender.getName()).thenThrow(new OutOfMemoryError("oops"));
+    Appender<Integer> mockAppender = EasyMock.createStrictMock(Appender.class);
+    EasyMock.makeThreadSafe(mockAppender, true);
+    EasyMock.expect(mockAppender.getName()).andThrow(new OutOfMemoryError("oops"));
     mockAppender.doAppend(17);
+    EasyMock.replay(mockAppender);
 
     aai.addAppender(mockAppender);
     Thread t = new Thread(new Runnable() {
@@ -91,8 +95,9 @@ public class AppenderAttachableImplLockTest {
     t.start();
     t.join();
 
-    // the next call used to freeze with the earlier ReadWriteLock lock
-    // implementation
+    // the next call will lock
     aai.appendLoopOnAppenders(17);
+    EasyMock.verify(mockAppender);
   }
+
 }
diff --git a/logback-core/src/test/java/ch/qos/logback/core/spi/AppenderAttachableImplTest.java b/logback-core/src/test/java/ch/qos/logback/core/spi/AppenderAttachableImplTest.java
index 44e26f9..d9be061 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/spi/AppenderAttachableImplTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/spi/AppenderAttachableImplTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/spi/CyclicBufferTrackerTest.java b/logback-core/src/test/java/ch/qos/logback/core/spi/CyclicBufferTrackerImplTest.java
similarity index 55%
rename from logback-core/src/test/java/ch/qos/logback/core/spi/CyclicBufferTrackerTest.java
rename to logback-core/src/test/java/ch/qos/logback/core/spi/CyclicBufferTrackerImplTest.java
index f9c1606..85bbae2 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/spi/CyclicBufferTrackerTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/spi/CyclicBufferTrackerImplTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -14,6 +14,7 @@
 package ch.qos.logback.core.spi;
 
 import ch.qos.logback.core.helpers.CyclicBuffer;
+import ch.qos.logback.core.sift.AppenderTrackerImpl;
 import org.junit.Test;
 
 import static junit.framework.Assert.assertEquals;
@@ -22,28 +23,28 @@ import static junit.framework.Assert.assertNotNull;
 /**
  * @author Ceki Gücü
  */
-public class CyclicBufferTrackerTest {
+public class CyclicBufferTrackerImplTest {
 
 
-  CyclicBufferTracker<Object> tracker = new CyclicBufferTracker<Object>();
+  CyclicBufferTrackerImpl<Object> tracker = new CyclicBufferTrackerImpl<Object>();
   String key = "a";
 
   @Test
   public void empty0() {
     long now = 3000;
-    tracker.removeStaleComponents(now);
-    assertEquals(0, tracker.liveKeysAsOrderedList().size());
-    assertEquals(0, tracker.getComponentCount());
+    tracker.clearStaleBuffers(now);
+    assertEquals(0, tracker.keyList().size());
+    assertEquals(0, tracker.bufferCount);
   }
 
   @Test
   public void empty1() {
     long now = 3000;
     assertNotNull(tracker.getOrCreate(key, now++));
-    now += ComponentTracker.DEFAULT_TIMEOUT + 1000;
-    tracker.removeStaleComponents(now);
-    assertEquals(0, tracker.liveKeysAsOrderedList().size());
-    assertEquals(0, tracker.getComponentCount());
+    now += CyclicBufferTracker.THRESHOLD + 1000;
+    tracker.clearStaleBuffers(now);
+    assertEquals(0, tracker.keyList().size());
+    assertEquals(0, tracker.bufferCount);
 
     assertNotNull(tracker.getOrCreate(key, now++));
   }
@@ -53,10 +54,10 @@ public class CyclicBufferTrackerTest {
     long now = 3000;
     CyclicBuffer<Object> cb = tracker.getOrCreate(key, now);
     assertEquals(cb, tracker.getOrCreate(key, now++));
-    now += CyclicBufferTracker.DEFAULT_TIMEOUT + 1000;
-    tracker.removeStaleComponents(now);
-    assertEquals(0, tracker.liveKeysAsOrderedList().size());
-    assertEquals(0, tracker.getComponentCount());
+    now += AppenderTrackerImpl.THRESHOLD + 1000;
+    tracker.clearStaleBuffers(now);
+    assertEquals(0, tracker.keyList().size());
+    assertEquals(0, tracker.bufferCount);
   }
 
   @Test
@@ -65,11 +66,9 @@ public class CyclicBufferTrackerTest {
     CyclicBuffer<Object> cb = tracker.getOrCreate(key, now);
     cb.add(new Object());
     assertEquals(1, cb.length());
-    tracker.endOfLife(key);
-    now += CyclicBufferTracker.LINGERING_TIMEOUT + 10;
-    tracker.removeStaleComponents(now);
-    assertEquals(0, tracker.liveKeysAsOrderedList().size());
-    assertEquals(0, tracker.getComponentCount());
+    tracker.removeBuffer(key);
+    assertEquals(0, tracker.keyList().size());
+    assertEquals(0, tracker.bufferCount);
     assertEquals(0, cb.length());
   }
 
diff --git a/logback-core/src/test/java/ch/qos/logback/core/spi/CyclicBufferTrackerSimulator.java b/logback-core/src/test/java/ch/qos/logback/core/spi/CyclicBufferTrackerSimulator.java
index 7f1cac7..05be45b 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/spi/CyclicBufferTrackerSimulator.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/spi/CyclicBufferTrackerSimulator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,8 +13,6 @@
  */
 package ch.qos.logback.core.spi;
 
-import ch.qos.logback.core.helpers.CyclicBuffer;
-
 import java.util.*;
 
 /**
@@ -22,27 +20,21 @@ import java.util.*;
  */
 public class CyclicBufferTrackerSimulator {
 
-  static class Parameters {
-    public int keySpaceLen;
-    public int maxTimestampInc;
-    public int simulationLength;
-  }
-
-  CyclicBufferTracker<Object> realCBTracker = new CyclicBufferTracker<Object>();
-  CyclicBufferTrackerT<Object> t_CBTracker = new CyclicBufferTrackerT<Object>();
+  CyclicBufferTrackerImpl<Object> realCBTracker = new CyclicBufferTrackerImpl<Object>();
+  CyclicBufferTracker_TImpl<Object> t_CBTracker = new CyclicBufferTracker_TImpl<Object>();
 
   List<SimulationEvent> scenario = new ArrayList<SimulationEvent>();
   List<String> keySpace = new ArrayList<String>();
+  int maxTimestampInc;
   Random randomKeyGen = new Random(100);
   Random simulatorRandom = new Random(11234);
-  Parameters params;
 
-  int getToEndOfLifeRatio = 10;
+  int deleteToInsertRatio = 10;
 
-  CyclicBufferTrackerSimulator(Parameters params) {
-    this.params = params;
+  CyclicBufferTrackerSimulator(int keySpaceLen, int maxTimestampInc) {
+    this.maxTimestampInc = maxTimestampInc;
     Map<String, String> checkMap = new HashMap<String, String>();
-    for (int i = 0; i < params.keySpaceLen; i++) {
+    for (int i = 0; i < keySpaceLen; i++) {
       String k = getRandomKeyStr();
       if (checkMap.containsKey(k)) {
         System.out.println("random key collision occurred");
@@ -59,18 +51,19 @@ public class CyclicBufferTrackerSimulator {
     return String.format("%X", ri);
   }
 
-  void buildScenario() {
+  void buildScenario(int simLen) {
     long timestamp = 30000;
     int keySpaceLen = keySpace.size();
-    for (int i = 0; i < params.simulationLength; i++) {
-      int keyIndex = simulatorRandom.nextInt(keySpaceLen);
-      timestamp += simulatorRandom.nextInt(params.maxTimestampInc);
-      String key = keySpace.get(keyIndex);
-      scenario.add(new SimulationEvent(EventType.INSERT, key, timestamp));
-      if (simulatorRandom.nextInt(getToEndOfLifeRatio) == 0) {
-        scenario.add(new SimulationEvent(EventType.END_OF_LIFE, key, timestamp));
+    for (int i = 0; i < simLen; i++) {
+      int index = simulatorRandom.nextInt(keySpaceLen);
+      timestamp += simulatorRandom.nextInt(maxTimestampInc);
+      EventType eventType = EventType.INSERT;
+      if (simulatorRandom.nextInt(deleteToInsertRatio) == 0) {
+        eventType = EventType.DELETE;
       }
-      scenario.add(new SimulationEvent(EventType.REMOVE_STALE, key, timestamp));
+
+      String key = keySpace.get(index);
+      scenario.add(new SimulationEvent(eventType, key, timestamp));
     }
   }
 
@@ -82,7 +75,7 @@ public class CyclicBufferTrackerSimulator {
 
 
   void play(SimulationEvent simulationEvent,
-            ComponentTracker<CyclicBuffer<Object>> tracker) {
+            CyclicBufferTracker<Object> tracker) {
     String key = simulationEvent.key;
     long timestamp = simulationEvent.timestamp;
     EventType eventType = simulationEvent.eventType;
@@ -90,11 +83,8 @@ public class CyclicBufferTrackerSimulator {
       case INSERT:
         tracker.getOrCreate(key, timestamp);
         break;
-      case END_OF_LIFE:
-        tracker.endOfLife(key);
-        break;
-      case REMOVE_STALE:
-        tracker.removeStaleComponents(timestamp);
+      case DELETE:
+        tracker.removeBuffer(key);
         break;
     }
   }
@@ -108,7 +98,7 @@ public class CyclicBufferTrackerSimulator {
 
   // =========================================================================
   enum EventType {
-    INSERT, END_OF_LIFE, REMOVE_STALE;
+    INSERT, DELETE;
   }
 
   class SimulationEvent {
@@ -122,13 +112,8 @@ public class CyclicBufferTrackerSimulator {
       this.timestamp = timestamp;
     }
 
-    @Override
     public String toString() {
-      return "SimulationEvent{" +
-              "eventType=" + eventType +
-              ", key='" + key + '\'' +
-              ", timestamp=" + timestamp +
-              '}';
+      return "Event: k=" + key + ", timestamp=" + timestamp;
     }
   }
 }
diff --git a/logback-core/src/test/java/ch/qos/logback/core/spi/CyclicBufferTrackerT.java b/logback-core/src/test/java/ch/qos/logback/core/spi/CyclicBufferTrackerT.java
deleted file mode 100644
index 3ef6fd2..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/spi/CyclicBufferTrackerT.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.spi;
-
-import ch.qos.logback.core.CoreConstants;
-import ch.qos.logback.core.helpers.CyclicBuffer;
-
-import java.util.*;
-
-/**
- * Another tracker implementtion for testing purposes only.
- *
- * @author Ceki Gücü
- */
-public class CyclicBufferTrackerT<E> implements ComponentTracker<CyclicBuffer<E>> {
-
-  int bufferSize = CyclicBufferTracker.DEFAULT_BUFFER_SIZE;
-  int maxComponents = CyclicBufferTracker.DEFAULT_NUMBER_OF_BUFFERS;
-
-  List<TEntry<E>> liveList = new LinkedList<TEntry<E>>();
-  List<TEntry<E>> lingererList = new LinkedList<TEntry<E>>();
-
-  long lastCheck = 0;
-
-
-  private TEntry<E> getEntry(List<TEntry<E>> list,String k) {
-    for (int i = 0; i < list.size(); i++) {
-      TEntry<E> te = list.get(i);
-      if (te.key.equals(k)) {
-        return te;
-      }
-    }
-    return null;
-  }
-
-  private TEntry getFromEitherList(String key) {
-    TEntry entry = getEntry(liveList, key);
-    if(entry != null)
-      return entry;
-    else {
-      return getEntry(lingererList, key);
-    }
-  }
-
-  private List<String> keysAsOrderedList(List<TEntry<E>> list) {
-    Collections.sort(list);
-    List<String> result = new LinkedList<String>();
-    for (int i = 0; i < list.size(); i++) {
-      TEntry<E> te = list.get(i);
-      result.add(te.key);
-    }
-    return result;
-  }
-
-  List<String> liveKeysAsOrderedList() {
-    return keysAsOrderedList(liveList);
-  }
-  List<String> lingererKeysAsOrderedList() {
-    return keysAsOrderedList(lingererList);
-  }
-
-
-  public Set<String> allKeys() {
-    HashSet<String> allKeys = new HashSet<String>();
-    for (TEntry e : liveList)
-      allKeys.add(e.key);
-    for (TEntry e : lingererList)
-      allKeys.add(e.key);
-    return allKeys;
-  }
-
-
-  public Collection<CyclicBuffer<E>> allComponents() {
-    List<CyclicBuffer<E>> allComponents = new ArrayList<CyclicBuffer<E>>();
-    for (TEntry e : liveList)
-      allComponents.add(e.value);
-    for (TEntry e : lingererList)
-      allComponents.add(e.value);
-
-    return allComponents;
-  }
-
-  public CyclicBuffer<E> find(String key) {
-    TEntry<E> te = getFromEitherList(key);
-    if(te == null) return  null;
-    else return te.value;
-  }
-
-  public CyclicBuffer<E> getOrCreate(String key, long timestamp) {
-    TEntry<E> te = getFromEitherList(key);
-    if (te == null) {
-      CyclicBuffer<E> cb = new CyclicBuffer<E>(bufferSize);
-      te = new TEntry<E>(key, cb, timestamp);
-      liveList.add(te);
-      if (liveList.size() > maxComponents) {
-        Collections.sort(liveList);
-        liveList.remove(0);
-      }
-    } else {
-      te.timestamp = timestamp;
-      Collections.sort(liveList);
-    }
-    return te.value;
-  }
-
-  public void endOfLife(String k) {
-    TEntry<E> te = null;
-    boolean found = false;
-    for (int i = 0; i < liveList.size(); i++) {
-      te = liveList.get(i);
-      if (te.key.equals(k)) {
-        liveList.remove(i);
-        found = true;
-        break;
-      }
-    }
-    if(found) {
-      lingererList.add(te);
-    }
-  }
-
-  private boolean isEntryStale(TEntry<E> entry, long now) {
-    return ((entry.timestamp + DEFAULT_TIMEOUT) < now);
-  }
-  private boolean isEntryDoneLingering(TEntry<E> tEntry, long now) {
-    return ((tEntry.timestamp + AbstractComponentTracker.LINGERING_TIMEOUT) < now);
-  }
-
-  public void removeStaleComponents(long now) {
-    if (isTooSoonForRemovalIteration(now)) return;
-    // both list should be sorted before removal attempts
-    Collections.sort(liveList);
-    Collections.sort(lingererList);
-    removeComponentsInExcessFromMainList();
-    removeStaleComponentsFromMainList(now);
-    removeStaleComponentsFromLingerersList(now);
-  }
-
-  private void removeComponentsInExcessFromMainList() {
-    while (liveList.size() > maxComponents) {
-      liveList.remove(0);
-    }
-  }
-
-  private void removeStaleComponentsFromMainList(long now) {
-    while (liveList.size() != 0 && isEntryStale(liveList.get(0), now)) {
-      liveList.remove(0);
-    }
-  }
-
-  private void removeStaleComponentsFromLingerersList(long now) {
-    while (lingererList.size() != 0 && isEntryDoneLingering(lingererList.get(0), now)) {
-      lingererList.remove(0);
-    }
-  }
-
-  private boolean isTooSoonForRemovalIteration(long now) {
-    if (lastCheck + CoreConstants.MILLIS_IN_ONE_SECOND > now) {
-      return true;
-    }
-    lastCheck = now;
-    return false;
-  }
-
-  public int getComponentCount() {
-    return liveList.size() + lingererList.size();
-  }
-
-
-  // ==================================================================
-
-  private class TEntry<X> implements Comparable<TEntry<?>> {
-
-    String key;
-    CyclicBuffer<E> value;
-    long timestamp;
-
-    TEntry(String k, CyclicBuffer<E> v, long timestamp) {
-      this.key = k;
-      this.value = v;
-      this.timestamp = timestamp;
-    }
-
-    @Override
-    public int hashCode() {
-      final int prime = 31;
-      int result = 1;
-      result = prime * result + ((key == null) ? 0 : key.hashCode());
-      return result;
-    }
-
-    public int compareTo(TEntry<?> o) {
-      if (!(o instanceof TEntry)) {
-        throw new IllegalArgumentException("arguments must be of type " + TEntry.class);
-      }
-
-      TEntry<?> other = (TEntry<?>) o;
-      if (timestamp > other.timestamp) {
-        return 1;
-      }
-      if (timestamp == other.timestamp) {
-        return 0;
-      }
-      return -1;
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-      if (this == obj)
-        return true;
-      if (obj == null)
-        return false;
-      if (getClass() != obj.getClass())
-        return false;
-      @SuppressWarnings("unchecked")
-      final TEntry<?> other = (TEntry<?>) obj;
-      if (key == null) {
-        if (other.key != null)
-          return false;
-      } else if (!key.equals(other.key))
-        return false;
-      if (value == null) {
-        if (other.value != null)
-          return false;
-      } else if (!value.equals(other.value))
-        return false;
-      return true;
-    }
-
-    @Override
-    public String toString() {
-      return "(" + key + ", " + value + ")";
-    }
-  }
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/spi/CyclicBufferTracker_TImpl.java b/logback-core/src/test/java/ch/qos/logback/core/spi/CyclicBufferTracker_TImpl.java
new file mode 100644
index 0000000..dc6ec40
--- /dev/null
+++ b/logback-core/src/test/java/ch/qos/logback/core/spi/CyclicBufferTracker_TImpl.java
@@ -0,0 +1,189 @@
+/**
+ * Logback: the reliable, generic, fast and flexible logging framework.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
+ *
+ * This program and the accompanying materials are dual-licensed under
+ * either the terms of the Eclipse Public License v1.0 as published by
+ * the Eclipse Foundation
+ *
+ *   or (per the licensee's choosing)
+ *
+ * under the terms of the GNU Lesser General Public License version 2.1
+ * as published by the Free Software Foundation.
+ */
+package ch.qos.logback.core.spi;
+
+import ch.qos.logback.core.CoreConstants;
+import ch.qos.logback.core.helpers.CyclicBuffer;
+
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * @author Ceki Gücü
+ */
+public class CyclicBufferTracker_TImpl<E> implements CyclicBufferTracker<E> {
+
+  int bufferSize = DEFAULT_BUFFER_SIZE;
+  int maxNumBuffers = DEFAULT_NUMBER_OF_BUFFERS;
+
+  List<TEntry> entryList = new LinkedList<TEntry>();
+  long lastCheck = 0;
+
+  public int getBufferSize() {
+    return bufferSize;
+  }
+
+  public void setBufferSize(int size) {
+  }
+
+  public int getMaxNumberOfBuffers() {
+    return maxNumBuffers;
+  }
+
+  public void setMaxNumberOfBuffers(int maxNumBuffers) {
+    this.maxNumBuffers = maxNumBuffers;
+  }
+
+  private TEntry getEntry(String k) {
+    for (int i = 0; i < entryList.size(); i++) {
+      TEntry te = entryList.get(i);
+      if (te.key.equals(k)) {
+        return te;
+      }
+    }
+    return null;
+  }
+
+  List<String> keyList() {
+    Collections.sort(entryList);
+
+    List<String> result = new LinkedList<String>();
+    for (int i = 0; i < entryList.size(); i++) {
+      TEntry te = entryList.get(i);
+      result.add(te.key);
+    }
+    return result;
+  }
+
+
+  public CyclicBuffer<E> getOrCreate(String key, long timestamp) {
+    TEntry te = getEntry(key);
+    if (te == null) {
+      CyclicBuffer<E> cb = new CyclicBuffer<E>(bufferSize);
+      te = new TEntry<E>(key, cb, timestamp);
+      entryList.add(te);
+      if (entryList.size() >= maxNumBuffers) {
+        entryList.remove(0);
+      }
+      return cb;
+    } else {
+      te.timestamp = timestamp;
+      Collections.sort(entryList);
+      return te.value;
+    }
+
+  }
+
+  public void removeBuffer(String k) {
+    for (int i = 0; i < entryList.size(); i++) {
+      TEntry te = entryList.get(i);
+      if (te.key.equals(k)) {
+        entryList.remove(i);
+        return;
+      }
+    }
+  }
+
+  private boolean isEntryStale(TEntry entry, long now) {
+    return ((entry.timestamp + THRESHOLD) < now);
+  }
+
+  public void clearStaleBuffers(long now) {
+    if (lastCheck + CoreConstants.MILLIS_IN_ONE_SECOND > now) {
+      return;
+    }
+    lastCheck = now;
+    Collections.sort(entryList);
+    while (entryList.size() != 0 && isEntryStale(entryList.get(0), now)) {
+      entryList.remove(0);
+    }
+  }
+
+  public int size() {
+    return entryList.size();
+  }
+
+
+  // ==================================================================
+
+  private class TEntry<E> implements Comparable {
+    TEntry next;
+    TEntry prev;
+
+    String key;
+    CyclicBuffer<E> value;
+    long timestamp;
+
+    TEntry(String k, CyclicBuffer<E> v, long timestamp) {
+      this.key = k;
+      this.value = v;
+      this.timestamp = timestamp;
+    }
+
+    public void setTimestamp(long timestamp) {
+      this.timestamp = timestamp;
+    }
+
+    @Override
+    public int hashCode() {
+      final int prime = 31;
+      int result = 1;
+      result = prime * result + ((key == null) ? 0 : key.hashCode());
+      return result;
+    }
+
+    public int compareTo(Object o) {
+      if (!(o instanceof TEntry)) {
+        throw new IllegalArgumentException("arguments must be of type " + TEntry.class);
+      }
+
+      TEntry other = (TEntry) o;
+      if (timestamp > other.timestamp) {
+        return 1;
+      }
+      if (timestamp == other.timestamp) {
+        return 0;
+      }
+      return -1;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+      if (this == obj)
+        return true;
+      if (obj == null)
+        return false;
+      if (getClass() != obj.getClass())
+        return false;
+      final TEntry other = (TEntry) obj;
+      if (key == null) {
+        if (other.key != null)
+          return false;
+      } else if (!key.equals(other.key))
+        return false;
+      if (value == null) {
+        if (other.value != null)
+          return false;
+      } else if (!value.equals(other.value))
+        return false;
+      return true;
+    }
+
+    @Override
+    public String toString() {
+      return "(" + key + ", " + value + ")";
+    }
+  }
+}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/spi/PackageTest.java b/logback-core/src/test/java/ch/qos/logback/core/spi/PackageTest.java
index dd98a07..a8d2adc 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/spi/PackageTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/spi/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -19,7 +19,7 @@ import org.junit.runners.Suite;
 
 @RunWith(Suite.class)
 @Suite.SuiteClasses({AppenderAttachableImplTest.class, AppenderAttachableImplLockTest.class,
-        CyclicBufferTrackerTest.class, ScenarioBasedCyclicBufferTrackerTest.class})
+        CyclicBufferTrackerImplTest.class, ScenarioBasedCyclicBufferTrackerTest.class})
 
 public class PackageTest {
 }
diff --git a/logback-core/src/test/java/ch/qos/logback/core/spi/ScenarioBasedCyclicBufferTrackerTest.java b/logback-core/src/test/java/ch/qos/logback/core/spi/ScenarioBasedCyclicBufferTrackerTest.java
index a5da74e..3faf5ff 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/spi/ScenarioBasedCyclicBufferTrackerTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/spi/ScenarioBasedCyclicBufferTrackerTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,60 +13,43 @@
  */
 package ch.qos.logback.core.spi;
 
-import org.junit.Before;
 import org.junit.Test;
 
 import static junit.framework.Assert.assertEquals;
 
 /**
- * A
- *
  * @author Ceki Gücü
  */
 public class ScenarioBasedCyclicBufferTrackerTest {
 
   CyclicBufferTrackerSimulator simulator;
-  CyclicBufferTrackerSimulator.Parameters parameters = new CyclicBufferTrackerSimulator.Parameters();
 
   void verify() {
-    CyclicBufferTracker<Object> at = simulator.realCBTracker;
-    CyclicBufferTrackerT<Object> t_at = simulator.t_CBTracker;
-    assertEquals(t_at.liveKeysAsOrderedList(), at.liveKeysAsOrderedList());
-    assertEquals(t_at.lingererKeysAsOrderedList(), at.lingererKeysAsOrderedList());
-  }
-
-  @Before public void setUp() {
-    parameters.keySpaceLen = 128;
-    parameters.maxTimestampInc =  ComponentTracker.DEFAULT_TIMEOUT / 2;
+    CyclicBufferTrackerImpl<Object> at = simulator.realCBTracker;
+    CyclicBufferTracker_TImpl<Object> t_at = simulator.t_CBTracker;
+    assertEquals(t_at.keyList(), at.keyList());
   }
 
   @Test
   public void shortTest() {
-    parameters.keySpaceLen = 64;
-    parameters.maxTimestampInc = 500;
-    parameters.simulationLength = 70;
-
-    simulator = new CyclicBufferTrackerSimulator(parameters);
-    simulator.buildScenario();
+    simulator = new CyclicBufferTrackerSimulator(64, 500);
+    simulator.buildScenario(200);
     simulator.simulate();
     verify();
   }
 
   @Test
   public void mediumTest() {
-    parameters.simulationLength = 20000;
-
-    simulator = new CyclicBufferTrackerSimulator(parameters);
-    simulator.buildScenario();
+    simulator = new CyclicBufferTrackerSimulator(128, CyclicBufferTracker.THRESHOLD / 2);
+    simulator.buildScenario(20000);
     simulator.simulate();
     verify();
   }
 
   @Test
   public void longTest() {
-    parameters.simulationLength = 100*1000;
-    simulator = new CyclicBufferTrackerSimulator(parameters);
-    simulator.buildScenario();
+    simulator = new CyclicBufferTrackerSimulator(128, CyclicBufferTracker.THRESHOLD / 2);
+    simulator.buildScenario(200000);
     simulator.simulate();
     verify();
   }
diff --git a/logback-core/src/test/java/ch/qos/logback/core/status/PackageTest.java b/logback-core/src/test/java/ch/qos/logback/core/status/PackageTest.java
deleted file mode 100644
index 137ba69..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/status/PackageTest.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.status;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-
-
- at RunWith(Suite.class)
- at Suite.SuiteClasses({StatusBaseTest.class, StatusUtilTest.class})
-
-public class PackageTest {
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/status/StatusBaseTest.java b/logback-core/src/test/java/ch/qos/logback/core/status/StatusBaseTest.java
index 131d8db..4a82973 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/status/StatusBaseTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/status/StatusBaseTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/status/StatusChecker.java b/logback-core/src/test/java/ch/qos/logback/core/status/StatusChecker.java
deleted file mode 100644
index e26a33c..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/status/StatusChecker.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-
-package ch.qos.logback.core.status;
-
-import ch.qos.logback.core.Context;
-
-import static org.junit.Assert.assertTrue;
-
-/**
- * Extend  StatusUtil with assertions.
- */
-public class StatusChecker extends StatusUtil {
-
-  public StatusChecker(StatusManager sm) {
-    super(sm);
-  }
-
-  public StatusChecker(Context context) {
-    super(context);
-  }
-
-  public void assertContainsMatch(int level, String regex) {
-    assertTrue(containsMatch(level, regex));
-  }
-
-  public void assertContainsMatch(String regex) {
-    assertTrue(containsMatch(regex));
-  }
-
-  public void asssertContainsException(Class<?> scanExceptionClass) {
-    assertTrue(containsException(scanExceptionClass));
-  }
-
-  public void assertIsErrorFree() {
-    assertTrue(isErrorFree(0));
-  }
-
-
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/status/StatusUtilTest.java b/logback-core/src/test/java/ch/qos/logback/core/status/StatusCheckerTest.java
similarity index 50%
rename from logback-core/src/test/java/ch/qos/logback/core/status/StatusUtilTest.java
rename to logback-core/src/test/java/ch/qos/logback/core/status/StatusCheckerTest.java
index a246e7b..695edb2 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/status/StatusUtilTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/status/StatusCheckerTest.java
@@ -1,16 +1,3 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
 package ch.qos.logback.core.status;
 
 import ch.qos.logback.core.Context;
@@ -24,20 +11,20 @@ import static org.junit.Assert.assertTrue;
 /**
  * @author Ceki Gücü
  */
-public class StatusUtilTest {
+public class StatusCheckerTest {
 
   Context context = new ContextBase();
-  StatusUtil statusUtil = new StatusUtil(context);
+  StatusChecker checker = new StatusChecker(context);
 
   @Test
   public void emptyStatusListShouldResultInNotFound() {
-    assertEquals(-1, statusUtil.timeOfLastReset());
+    assertEquals(-1, checker.timeOfLastReset());
   }
 
   @Test
-  public void withoutResetsStatusUtilShouldReturnNotFound() {
+  public void withoutResetsCheckerShouldReturnNotFound() {
     context.getStatusManager().add(new InfoStatus("test", this));
-    assertEquals(-1, statusUtil.timeOfLastReset());
+    assertEquals(-1, checker.timeOfLastReset());
   }
 
   @Test
@@ -46,7 +33,7 @@ public class StatusUtilTest {
     long resetTime = System.currentTimeMillis();
     context.getStatusManager().add(new InfoStatus(CoreConstants.RESET_MSG_PREFIX, this));
     context.getStatusManager().add(new InfoStatus("bla", this));
-    assertTrue(resetTime <= statusUtil.timeOfLastReset());
+    assertTrue(resetTime <= checker.timeOfLastReset());
   }
 
 
diff --git a/logback-core/src/test/java/ch/qos/logback/core/status/TrivialStatusListener.java b/logback-core/src/test/java/ch/qos/logback/core/status/TrivialStatusListener.java
index 5a960ad..3dc34f7 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/status/TrivialStatusListener.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/status/TrivialStatusListener.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -16,30 +16,15 @@ package ch.qos.logback.core.status;
 import java.util.ArrayList;
 import java.util.List;
 
-import ch.qos.logback.core.spi.LifeCycle;
 import ch.qos.logback.core.status.Status;
 import ch.qos.logback.core.status.StatusListener;
 
-public class TrivialStatusListener implements StatusListener, LifeCycle {
+public class TrivialStatusListener implements StatusListener {
 
   public List<Status> list = new ArrayList<Status>();
-  boolean start = false;
-
+  
   public void addStatusEvent(Status status) {
-    if(!isStarted())
-      return;
     list.add(status);
   }
 
-  public void start() {
-    start = true;
-  }
-
-  public void stop() {
-    start = false;
-  }
-
-  public boolean isStarted() {
-    return start;
-  }
 }
diff --git a/logback-core/src/test/java/ch/qos/logback/core/subst/NodeToStringTransformerTest.java b/logback-core/src/test/java/ch/qos/logback/core/subst/NodeToStringTransformerTest.java
deleted file mode 100644
index 821dea6..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/subst/NodeToStringTransformerTest.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.subst;
-
-import ch.qos.logback.core.ContextBase;
-import ch.qos.logback.core.spi.ScanException;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-
-/**
- * @author Ceki Gücü
- */
-public class NodeToStringTransformerTest {
-
-  ContextBase propertyContainer0 = new ContextBase();
-
-
-  @Before
-  public void setUp() {
-    propertyContainer0.putProperty("k0", "v0");
-    propertyContainer0.putProperty("zero", "0");
-    propertyContainer0.putProperty("v0.jdbc.url", "http://..");
-    propertyContainer0.putProperty("host", "local");
-
-  }
-
-  private Node makeNode(String input) throws ScanException {
-    Tokenizer tokenizer = new Tokenizer(input);
-    Parser parser = new Parser(tokenizer.tokenize());
-    return parser.parse();
-  }
-
-  @Test
-  public void literal() throws ScanException {
-    String input = "abv";
-    Node node = makeNode(input);
-    NodeToStringTransformer nodeToStringTransformer = new NodeToStringTransformer(node, propertyContainer0);
-    assertEquals(input, nodeToStringTransformer.transform());
-  }
-
-
-  void checkInputEqualsOutput(String input) throws ScanException {
-    Node node = makeNode(input);
-    NodeToStringTransformer nodeToStringTransformer = new NodeToStringTransformer(node, propertyContainer0);
-    assertEquals(input, nodeToStringTransformer.transform());
-  }
-
-  @Test
-  public void literalWithNestedAccolades() throws ScanException {
-    checkInputEqualsOutput("%logger{35}");
-    checkInputEqualsOutput("%a{35} %b{35} c");
-    checkInputEqualsOutput("%replace(%msg){'\\d{14,16}', 'XXXX'}");
-    checkInputEqualsOutput("TEST %d{HHmmssSSS} [%thread] %-5level %logger{36} - %msg%n");
-  }
-
-
-  @Test
-  public void variable() throws ScanException {
-    String input = "${k0}";
-    Node node = makeNode(input);
-    NodeToStringTransformer nodeToStringTransformer = new NodeToStringTransformer(node, propertyContainer0);
-    assertEquals("v0", nodeToStringTransformer.transform());
-  }
-
-  @Test
-  public void literalVariableLiteral() throws ScanException {
-    String input = "a${k0}c";
-    Node node = makeNode(input);
-    NodeToStringTransformer nodeToStringTransformer = new NodeToStringTransformer(node, propertyContainer0);
-    assertEquals("av0c", nodeToStringTransformer.transform());
-  }
-
-  @Test
-  public void nestedVariable() throws ScanException {
-    String input = "a${k${zero}}b";
-    Node node = makeNode(input);
-    NodeToStringTransformer nodeToStringTransformer = new NodeToStringTransformer(node, propertyContainer0);
-    assertEquals("av0b", nodeToStringTransformer.transform());
-  }
-
-  @Test
-  public void LOGBACK729() throws ScanException {
-    String input = "${${k0}.jdbc.url}";
-    Node node = makeNode(input);
-    NodeToStringTransformer nodeToStringTransformer = new NodeToStringTransformer(node, propertyContainer0);
-    assertEquals("http://..", nodeToStringTransformer.transform());
-  }
-
-  @Test
-  public void LOGBACK744_withColon() throws ScanException {
-    String input = "%d{HH:mm:ss.SSS} host:${host} %logger{36} - %msg%n";
-    Node node = makeNode(input);
-    NodeToStringTransformer nodeToStringTransformer = new NodeToStringTransformer(node, propertyContainer0);
-    System.out.println(nodeToStringTransformer.transform());
-    assertEquals("%d{HH:mm:ss.SSS} host:local %logger{36} - %msg%n", nodeToStringTransformer.transform());
-  }
-
-  @Test
-  public void loneColonShouldReadLikeAnyOtherCharacter() throws ScanException {
-    String input = "java:comp/env/jdbc/datasource";
-    Node node = makeNode(input);
-    NodeToStringTransformer nodeToStringTransformer = new NodeToStringTransformer(node, propertyContainer0);
-    assertEquals(input, nodeToStringTransformer.transform());
-  }
-
-  @Test
-  public void withDefaultValue() throws ScanException {
-    String input = "${k67:-b}c";
-    Node node = makeNode(input);
-    NodeToStringTransformer nodeToStringTransformer = new NodeToStringTransformer(node, propertyContainer0);
-    assertEquals("bc", nodeToStringTransformer.transform());
-  }
-
-  @Test
-  public void defaultValueNestedAsVar() throws ScanException {
-    String input = "a${k67:-x${k0}}c";
-    Node node = makeNode(input);
-    NodeToStringTransformer nodeToStringTransformer = new NodeToStringTransformer(node, propertyContainer0);
-    assertEquals("axv0c", nodeToStringTransformer.transform());
-  }
-
-
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/subst/PackageTest.java b/logback-core/src/test/java/ch/qos/logback/core/subst/PackageTest.java
deleted file mode 100644
index af66f3a..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/subst/PackageTest.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.subst;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-
-
- at RunWith(Suite.class)
- at Suite.SuiteClasses({TokenizerTest.class, ParserTest.class, NodeToStringTransformerTest.class})
-
-public class PackageTest {
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/subst/ParserTest.java b/logback-core/src/test/java/ch/qos/logback/core/subst/ParserTest.java
deleted file mode 100644
index d8a404b..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/subst/ParserTest.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.subst;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.ArrayList;
-
-import org.junit.Test;
-
-import ch.qos.logback.core.spi.ScanException;
-
-/**
- * Created with IntelliJ IDEA.
- * User: ceki
- * Date: 05.08.12
- * Time: 00:15
- * To change this template use File | Settings | File Templates.
- */
-public class ParserTest {
-
-
-  @Test
-  public void literal() throws ScanException {
-    Tokenizer tokenizer = new Tokenizer("abc");
-    Parser parser = new Parser(tokenizer.tokenize());
-    Node node = parser.parse();
-    Node witness = new Node(Node.Type.LITERAL, "abc");
-    assertEquals(witness, node);
-  }
-
-  @Test
-  public void literalWithAccolade0() throws ScanException {
-    Tokenizer tokenizer = new Tokenizer("{}");
-    Parser parser = new Parser(tokenizer.tokenize());
-    Node node = parser.parse();
-    Node witness = new Node(Node.Type.LITERAL, "{");
-    witness.next = new Node(Node.Type.LITERAL, "}");
-    assertEquals(witness, node);
-  }
-
-  @Test
-  public void literalWithAccolade1() throws ScanException {
-    Tokenizer tokenizer = new Tokenizer("%x{a}");
-    Parser parser = new Parser(tokenizer.tokenize());
-    Node node = parser.parse();
-    Node witness = new Node(Node.Type.LITERAL, "%x");
-    Node t = witness.next = new Node(Node.Type.LITERAL, "{");
-    t.next = new Node(Node.Type.LITERAL, "a");
-    t = t.next;
-    t.next = new Node(Node.Type.LITERAL, "}");
-    assertEquals(witness, node);
-  }
-
-  @Test
-  public void literalWithTwoAccolades() throws ScanException {
-    Tokenizer tokenizer = new Tokenizer("%x{y} %a{b} c");
-
-    Parser parser = new Parser(tokenizer.tokenize());
-    Node node = parser.parse();
-    Node witness = new Node(Node.Type.LITERAL, "%x");
-
-    Node t = witness.next = new Node(Node.Type.LITERAL, "{");
-    t.next = new Node(Node.Type.LITERAL, "y");
-    t = t.next;
-
-    t.next = new Node(Node.Type.LITERAL, "}");
-    t = t.next;
-
-    t.next = new Node(Node.Type.LITERAL, " %a");
-    t = t.next;
-
-    t.next = new Node(Node.Type.LITERAL, "{");
-    t = t.next;
-
-    t.next = new Node(Node.Type.LITERAL, "b");
-    t = t.next;
-
-    t.next = new Node(Node.Type.LITERAL, "}");
-    t = t.next;
-
-    t.next = new Node(Node.Type.LITERAL, " c");
-
-    node.dump();
-    System.out.println("");
-    assertEquals(witness, node);
-  }
-
-  @Test
-  public void variable() throws ScanException {
-    Tokenizer tokenizer = new Tokenizer("${abc}");
-    Parser parser = new Parser(tokenizer.tokenize());
-    Node node = parser.parse();
-    Node witness = new Node(Node.Type.VARIABLE, new Node(Node.Type.LITERAL, "abc"));
-    assertEquals(witness, node);
-  }
-
-  @Test
-  public void literalVariableLiteral() throws ScanException {
-    Tokenizer tokenizer = new Tokenizer("a${b}c");
-    Parser parser = new Parser(tokenizer.tokenize());
-    Node node = parser.parse();
-    Node witness = new Node(Node.Type.LITERAL, "a");
-    witness.next = new Node(Node.Type.VARIABLE, new Node(Node.Type.LITERAL, "b"));
-    witness.next.next = new Node(Node.Type.LITERAL, "c");
-    assertEquals(witness, node);
-  }
-
-
-  // /LOGBACK-744
-  @Test
-  public void withColon() throws ScanException {
-    Tokenizer tokenizer = new Tokenizer("a:${b}");
-    Parser parser = new Parser(tokenizer.tokenize());
-    Node node = parser.parse();
-    Node witness = new Node(Node.Type.LITERAL, "a");
-    Node t = witness.next = new Node(Node.Type.LITERAL, ":");
-    t.next = new Node(Node.Type.VARIABLE, new Node(Node.Type.LITERAL, "b"));
-    assertEquals(witness, node);
-  }
-
-  @Test
-  public void nested() throws ScanException {
-    Tokenizer tokenizer = new Tokenizer("a${b${c}}d");
-    Parser parser = new Parser(tokenizer.tokenize());
-    Node node = parser.parse();
-    Node witness = new Node(Node.Type.LITERAL, "a");
-    Node bLiteralNode = new Node(Node.Type.LITERAL, "b");
-    Node cLiteralNode = new Node(Node.Type.LITERAL, "c");
-    Node bVariableNode = new Node(Node.Type.VARIABLE, bLiteralNode);
-    Node cVariableNode = new Node(Node.Type.VARIABLE, cLiteralNode);
-    bLiteralNode.next = cVariableNode;
-
-    witness.next = bVariableNode;
-    witness.next.next = new Node(Node.Type.LITERAL, "d");
-    assertEquals(witness, node);
-  }
-
-  @Test
-  public void withDefault() throws ScanException {
-    Tokenizer tokenizer = new Tokenizer("${b:-c}");
-    Parser parser = new Parser(tokenizer.tokenize());
-    Node node = parser.parse();
-    Node witness = new Node(Node.Type.VARIABLE, new Node(Node.Type.LITERAL, "b"));
-    witness.defaultPart = new Node(Node.Type.LITERAL, "c");
-    assertEquals(witness, node);
-  }
-
-  @Test
-  public void defaultSeparatorOutsideOfAVariable() throws ScanException {
-    Tokenizer tokenizer = new Tokenizer("{a:-b}");
-    Parser parser = new Parser(tokenizer.tokenize());
-    Node node = parser.parse();
-
-    dump(node);
-    Node witness = new Node(Node.Type.LITERAL, "{");
-    Node t = witness.next = new Node(Node.Type.LITERAL, "a");
-
-
-    t.next = new Node(Node.Type.LITERAL, ":-");
-    t = t.next;
-
-    t.next = new Node(Node.Type.LITERAL, "b");
-    t = t.next;
-
-    t.next = new Node(Node.Type.LITERAL, "}");
-
-    assertEquals(witness, node);
-  }
-
-  @Test
-  public void emptyTokenListDoesNotThrowNullPointerException() throws ScanException {
-    // An empty token list would be returned from Tokenizer.tokenize()
-    // if it were constructed with an empty string. The parser should
-    // be able to handle this.
-    Parser parser = new Parser(new ArrayList<Token>());
-    parser.parse();
-  }
-
-  private void dump(Node node) {
-    while (node != null) {
-      System.out.println(node.toString());
-      node = node.next;
-    }
-  }
-
-
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/subst/TokenizerTest.java b/logback-core/src/test/java/ch/qos/logback/core/subst/TokenizerTest.java
deleted file mode 100644
index e7e382f..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/subst/TokenizerTest.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.subst;
-
-import ch.qos.logback.core.spi.ScanException;
-import org.junit.Test;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-
-public class TokenizerTest {
-
-  List<Token> witnessList = new ArrayList<Token>();
-
-  @Test
-  public void literalOnly() throws ScanException {
-    String input = "abc";
-    Tokenizer tokenizer = new Tokenizer(input);
-    List<Token> tokenList = tokenizer.tokenize();
-    witnessList.add(new Token(Token.Type.LITERAL, input));
-    assertEquals(witnessList, tokenList);
-  }
-
-  @Test
-  public void literalWithAccolades() throws ScanException {
-    String input0 = "%logger";
-    String input1 = "24";
-   String input2 = " - %m";
-    String input = input0+"{"+input1+"}"+input2;
-    Tokenizer tokenizer = new Tokenizer(input);
-    List<Token> tokenList = tokenizer.tokenize();
-    witnessList.add(new Token(Token.Type.LITERAL, input0));
-    witnessList.add(Token.CURLY_LEFT_TOKEN);
-    witnessList.add(new Token(Token.Type.LITERAL, input1));
-
-    witnessList.add(Token.CURLY_RIGHT_TOKEN);
-    witnessList.add(new Token(Token.Type.LITERAL, input2));
-    assertEquals(witnessList, tokenList);
-  }
-
-
-  @Test
-  public void simleVariable() throws ScanException {
-    String input = "${abc}";
-    Tokenizer tokenizer = new Tokenizer(input);
-    List<Token> tokenList = tokenizer.tokenize();
-    witnessList.add(Token.START_TOKEN);
-    witnessList.add(new Token(Token.Type.LITERAL, "abc"));
-    witnessList.add(Token.CURLY_RIGHT_TOKEN);
-    assertEquals(witnessList, tokenList);
-  }
-
-  @Test
-  public void mix() throws ScanException {
-    String input = "a${b}c";
-    Tokenizer tokenizer = new Tokenizer(input);
-    List<Token> tokenList = tokenizer.tokenize();
-    witnessList.add(new Token(Token.Type.LITERAL, "a"));
-    witnessList.add(Token.START_TOKEN);
-    witnessList.add(new Token(Token.Type.LITERAL, "b"));
-    witnessList.add(Token.CURLY_RIGHT_TOKEN);
-    witnessList.add(new Token(Token.Type.LITERAL, "c"));
-    assertEquals(witnessList, tokenList);
-  }
-
-  @Test
-  public void nested() throws ScanException {
-    String input = "a${b${c}}";
-    Tokenizer tokenizer = new Tokenizer(input);
-    List<Token> tokenList = tokenizer.tokenize();
-    witnessList.add(new Token(Token.Type.LITERAL, "a"));
-    witnessList.add(Token.START_TOKEN);
-    witnessList.add(new Token(Token.Type.LITERAL, "b"));
-    witnessList.add(Token.START_TOKEN);
-    witnessList.add(new Token(Token.Type.LITERAL, "c"));
-    witnessList.add(Token.CURLY_RIGHT_TOKEN);
-    witnessList.add(Token.CURLY_RIGHT_TOKEN);
-    assertEquals(witnessList, tokenList);
-  }
-
-
-  @Test
-  public void basicDefaultSeparator() throws ScanException {
-    String input = "${a:-b}";
-    Tokenizer tokenizer = new Tokenizer(input);
-    List<Token> tokenList = tokenizer.tokenize();
-    witnessList.add(Token.START_TOKEN);
-    witnessList.add(new Token(Token.Type.LITERAL, "a"));
-    witnessList.add(Token.DEFAULT_SEP_TOKEN);
-    witnessList.add(new Token(Token.Type.LITERAL, "b"));
-    witnessList.add(Token.CURLY_RIGHT_TOKEN);
-    assertEquals(witnessList, tokenList);
-  }
-
-  @Test
-  public void colon() throws ScanException {
-    String input = "a:b";
-    Tokenizer tokenizer = new Tokenizer(input);
-    List<Token> tokenList = tokenizer.tokenize();
-    witnessList.add(new Token(Token.Type.LITERAL, "a"));
-    witnessList.add(new Token(Token.Type.LITERAL, ":b"));
-    assertEquals(witnessList, tokenList);
-  }
-
-
-  // /LOGBACK-744
-  @Test
-  public void colonFollowedByDollar() throws ScanException {
-    String input = "a:${b}";
-    Tokenizer tokenizer = new Tokenizer(input);
-    List<Token> tokenList = tokenizer.tokenize();
-    witnessList.add(new Token(Token.Type.LITERAL, "a"));
-    witnessList.add(new Token(Token.Type.LITERAL, ":"));
-    witnessList.add(Token.START_TOKEN);
-    witnessList.add(new Token(Token.Type.LITERAL, "b"));
-    witnessList.add(Token.CURLY_RIGHT_TOKEN);
-    assertEquals(witnessList, tokenList);
-  }
-
-  @Test
-  public void defaultSeparatorOutsideVariable() throws ScanException {
-
-    String input = "{a:-b}";
-    Tokenizer tokenizer = new Tokenizer(input);
-    List<Token> tokenList = tokenizer.tokenize();
-    witnessList.add(Token.CURLY_LEFT_TOKEN);
-    witnessList.add(new Token(Token.Type.LITERAL, "a"));
-    witnessList.add(Token.DEFAULT_SEP_TOKEN);
-    witnessList.add(new Token(Token.Type.LITERAL, "b"));
-    witnessList.add(Token.CURLY_RIGHT_TOKEN);
-    assertEquals(witnessList, tokenList);
-  }
-
-
-  }
diff --git a/logback-core/src/test/java/ch/qos/logback/core/testUtil/DelayingListAppender.java b/logback-core/src/test/java/ch/qos/logback/core/testUtil/DelayingListAppender.java
index 02ff18f..ce2f3d2 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/testUtil/DelayingListAppender.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/testUtil/DelayingListAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2012, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -11,6 +11,7 @@
  * under the terms of the GNU Lesser General Public License version 2.1
  * as published by the Free Software Foundation.
  */
+
 package ch.qos.logback.core.testUtil;
 
 import ch.qos.logback.core.read.ListAppender;
@@ -23,9 +24,7 @@ public class DelayingListAppender<E> extends ListAppender<E> {
   @Override
   public void append(E e) {
     try {
-      Thread.yield();
       Thread.sleep(delay);
-      Thread.yield();
     } catch (InterruptedException ie) {
       interrupted = true;
     }
diff --git a/logback-core/src/test/java/ch/qos/logback/core/testUtil/EnvUtilForTests.java b/logback-core/src/test/java/ch/qos/logback/core/testUtil/Env.java
similarity index 75%
rename from logback-core/src/test/java/ch/qos/logback/core/testUtil/EnvUtilForTests.java
rename to logback-core/src/test/java/ch/qos/logback/core/testUtil/Env.java
index 14b317d..1883af1 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/testUtil/EnvUtilForTests.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/testUtil/Env.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -15,12 +15,10 @@ package ch.qos.logback.core.testUtil;
 
 import java.net.InetAddress;
 import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.List;
 
 import ch.qos.logback.core.util.CoreTestConstants;
 
-public class EnvUtilForTests {
+public class Env {
 
   static public boolean isWindows() {
     return System.getProperty("os.name").indexOf("Windows") != -1;
@@ -34,12 +32,18 @@ public class EnvUtilForTests {
     return System.getProperty("os.name").indexOf("Linux") != -1;
   }
 
-
-  static public boolean isRunningOnSlowJenkins() {
-    return System.getProperty(CoreTestConstants.SLOW_JENKINS) != null;
+  static public boolean isJDK6OrHigher() {
+    String javaVersion = System.getProperty("java.version");
+    if (javaVersion == null) {
+      return false;
+    }
+    if (javaVersion.startsWith("1.6") || javaVersion.startsWith("1.7")) {
+      return true;
+    } else {
+      return false;
+    }
   }
 
-
   static public String getLocalHostName() {
     InetAddress localhostIA;
     try {
@@ -62,13 +66,13 @@ public class EnvUtilForTests {
     }
     return false;
   }
-
+  
 
   public static String getPathToBash() {
-    if (EnvUtilForTests.isLinux()) {
+    if(Env.isLinux()) {
       return CoreTestConstants.BASH_PATH_ON_LINUX;
     }
-    if (EnvUtilForTests.isLocalHostNameInList(new String[]{"hetz", "het"})) {
+    if(Env.isLocalHostNameInList(new String[] {"hetz"})) {
       return CoreTestConstants.BASH_PATH_ON_CYGWIN;
     }
     return null;
diff --git a/logback-core/src/test/java/ch/qos/logback/core/testUtil/FileTestUtil.java b/logback-core/src/test/java/ch/qos/logback/core/testUtil/FileTestUtil.java
index aec6472..e4d66f5 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/testUtil/FileTestUtil.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/testUtil/FileTestUtil.java
@@ -1,16 +1,3 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
 package ch.qos.logback.core.testUtil;
 
 import ch.qos.logback.core.util.CoreTestConstants;
diff --git a/logback-core/src/test/java/ch/qos/logback/core/testUtil/FileToBufferUtil.java b/logback-core/src/test/java/ch/qos/logback/core/testUtil/FileToBufferUtil.java
index a09e6c5..1e87d41 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/testUtil/FileToBufferUtil.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/testUtil/FileToBufferUtil.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/testUtil/NPEAppender.java b/logback-core/src/test/java/ch/qos/logback/core/testUtil/NPEAppender.java
index 0017cca..4b4a621 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/testUtil/NPEAppender.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/testUtil/NPEAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/testUtil/RandomUtil.java b/logback-core/src/test/java/ch/qos/logback/core/testUtil/RandomUtil.java
index 5554c96..977b43d 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/testUtil/RandomUtil.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/testUtil/RandomUtil.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/testUtil/StringListAppender.java b/logback-core/src/test/java/ch/qos/logback/core/testUtil/StringListAppender.java
index 58cf487..cfd2e09 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/testUtil/StringListAppender.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/testUtil/StringListAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/util/Compare.java b/logback-core/src/test/java/ch/qos/logback/core/util/Compare.java
index 5b643b6..304b247 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/util/Compare.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/util/Compare.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/util/ContentTypeUtilTest.java b/logback-core/src/test/java/ch/qos/logback/core/util/ContentTypeUtilTest.java
index 5303108..216d6a8 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/util/ContentTypeUtilTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/util/ContentTypeUtilTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/util/CoreTestConstants.java b/logback-core/src/test/java/ch/qos/logback/core/util/CoreTestConstants.java
index 250d084..bb010f2 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/util/CoreTestConstants.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/util/CoreTestConstants.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -15,20 +15,16 @@ package ch.qos.logback.core.util;
 
 public class CoreTestConstants {
 
-  public static final String TEST_SRC_PREFIX = "src/test/";
-  public static final String TEST_INPUT_PREFIX = TEST_SRC_PREFIX + "input/";
-  public static final String JORAN_INPUT_PREFIX = TEST_INPUT_PREFIX
-          + "joran/";
+  public static final String TEST_DIR_PREFIX = "src/test/";
+  public static final String JORAN_INPUT_PREFIX = TEST_DIR_PREFIX
+      + "input/joran/";
 
   public static final String TARGET_DIR = "target/";
-  public static final String OUTPUT_DIR_PREFIX = TARGET_DIR + "test-output/";
+  public static final String OUTPUT_DIR_PREFIX = TARGET_DIR+"test-output/";
 
   public static final int SUCCESSFUL_EXIT_CODE = 8;
   public static final int FAILURE_EXIT_CODE = 1;
 
   public static final String BASH_PATH_ON_CYGWIN = "c:/cygwin/bin/bash";
   public static final String BASH_PATH_ON_LINUX = "bash";
-
-
-  public static final String SLOW_JENKINS = "slowJenkins";
 }
diff --git a/logback-core/src/test/java/ch/qos/logback/core/util/DatePatternToRegexTest.java b/logback-core/src/test/java/ch/qos/logback/core/util/DatePatternToRegexTest.java
index 545f23e..f0854eb 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/util/DatePatternToRegexTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/util/DatePatternToRegexTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/util/DurationTest.java b/logback-core/src/test/java/ch/qos/logback/core/util/DurationTest.java
index fd547c0..a34f3bf 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/util/DurationTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/util/DurationTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/util/FileSizeTest.java b/logback-core/src/test/java/ch/qos/logback/core/util/FileSizeTest.java
index 0f56078..e27af5f 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/util/FileSizeTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/util/FileSizeTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/util/FileUtilTest.java b/logback-core/src/test/java/ch/qos/logback/core/util/FileUtilTest.java
index b3ec832..89da8a7 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/util/FileUtilTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/util/FileUtilTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -18,26 +18,18 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
 import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Random;
 
-import ch.qos.logback.core.Context;
-import ch.qos.logback.core.ContextBase;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
 public class FileUtilTest {
 
-  Context context = new ContextBase();
-  FileUtil fileUtil = new FileUtil(context);
   List<File> cleanupList = new ArrayList<File>();
-  // test-output folder is not always clean
-  int diff =  new Random().nextInt(10000);
-
+  
   @Before
   public void setUp() throws Exception {
     
@@ -50,8 +42,10 @@ public class FileUtilTest {
     }
   }
 
+  
   @Test
-  public void checkParentCreationInquiryAndSubsequentCreation() {
+  public void smoke() {
+    int diff =  new Random().nextInt(100);
     File file = new File(CoreTestConstants.OUTPUT_DIR_PREFIX+"/fu"+diff+"/testing.txt");
     // these will be deleted later
     cleanupList.add(file);
@@ -63,8 +57,8 @@ public class FileUtilTest {
   }
   
   @Test
-  public void checkDeeperParentCreationInquiryAndSubsequentCreation() {
-
+  public void smokeII() {
+    int diff =  new Random().nextInt(100);
     File file = new File(CoreTestConstants.OUTPUT_DIR_PREFIX+"/fu"+diff+"/bla/testing.txt");
     // these will be deleted later
     cleanupList.add(file);
@@ -75,20 +69,4 @@ public class FileUtilTest {
     assertTrue(FileUtil.createMissingParentDirectories(file));
     assertFalse(FileUtil.isParentDirectoryCreationRequired(file));
   }
-
-  @Test
-  public void basicCopyingWorks() throws IOException {
-    String dir = CoreTestConstants.OUTPUT_DIR_PREFIX+"/fu"+diff;
-
-    File dirFile  = new File(dir);
-    dirFile.mkdir();
-
-    String src = CoreTestConstants.TEST_INPUT_PREFIX + "compress1.copy";
-    String target = CoreTestConstants.OUTPUT_DIR_PREFIX+"/fu"+diff+"/copyingWorks.txt";
-
-    fileUtil.copy(src, target);
-    Compare.compare(src, target);
-  }
-
-
 }
diff --git a/logback-core/src/test/java/ch/qos/logback/core/util/LocationUtilTest.java b/logback-core/src/test/java/ch/qos/logback/core/util/LocationUtilTest.java
deleted file mode 100644
index 991d69a..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/util/LocationUtilTest.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.util;
-
-import static org.junit.Assert.assertEquals;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.PrintWriter;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.junit.Test;
-
-import ch.qos.logback.core.util.LocationUtil;
-
-/**
- * Unit tests for {@link LocationUtil}.
- *
- * @author Carl Harris
- */
-public class LocationUtilTest {
-
-  private static final String TEST_CLASSPATH_RESOURCE = "util/testResource.txt";
-  private static final String TEST_PATTERN = "TEST RESOURCE";
-  
-  @Test
-  public void testImplicitClasspathUrl() throws Exception {
-    URL url = LocationUtil.urlForResource(TEST_CLASSPATH_RESOURCE);
-    validateResource(url);
-  }
-  
-  @Test
-  public void testExplicitClasspathUrl() throws Exception {
-    URL url = LocationUtil.urlForResource(
-        LocationUtil.CLASSPATH_SCHEME + TEST_CLASSPATH_RESOURCE);
-    validateResource(url);
-  }
-  
-  @Test
-  public void testExplicitClasspathUrlWithLeadingSlash() throws Exception {
-    URL url = LocationUtil.urlForResource(
-        LocationUtil.CLASSPATH_SCHEME + "/" + TEST_CLASSPATH_RESOURCE);
-    validateResource(url);
-  }
-
-  @Test(expected = MalformedURLException.class)
-  public void testExplicitClasspathUrlEmptyPath() throws Exception {
-    LocationUtil.urlForResource(LocationUtil.CLASSPATH_SCHEME);
-  }
-
-  @Test(expected = MalformedURLException.class)
-  public void testExplicitClasspathUrlWithRootPath() throws Exception {
-    LocationUtil.urlForResource(LocationUtil.CLASSPATH_SCHEME + "/");
-  }
-
-  @Test
-  public void testFileUrl() throws Exception {
-    File file = File.createTempFile("testResource", ".txt");
-    file.deleteOnExit();
-    PrintWriter writer = new PrintWriter(file);
-    writer.println(TEST_PATTERN);
-    writer.close();
-    URL url = file.toURI().toURL();
-    validateResource(url);
-  }
-  
-  private void validateResource(URL url) throws IOException {
-    InputStream inputStream = url.openStream();
-    try {
-      BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
-      String line = reader.readLine();
-      assertEquals(TEST_PATTERN, line);
-    }
-    finally {
-      try {
-        inputStream.close();
-      }
-      catch (IOException ex) {
-        // ignore close exception
-        ex.printStackTrace(System.err);
-      }
-    }
-  }
-  
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/util/OptionHelperTest.java b/logback-core/src/test/java/ch/qos/logback/core/util/OptionHelperTest.java
index 6585e63..253eecc 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/util/OptionHelperTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/util/OptionHelperTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -19,22 +19,16 @@ import static org.junit.Assert.fail;
 import java.util.HashMap;
 import java.util.Map;
 
-import ch.qos.logback.core.joran.spi.InterpretationContext;
 import org.junit.Before;
-import org.junit.Rule;
+import org.junit.Ignore;
 import org.junit.Test;
-import org.junit.rules.ExpectedException;
 
 import ch.qos.logback.core.Context;
 import ch.qos.logback.core.ContextBase;
-import ch.qos.logback.core.joran.spi.JoranException;
 
 
 public class OptionHelperTest  {
 
-  @Rule
-  public ExpectedException expectedException = ExpectedException.none();
-
   String text = "Testing ${v1} variable substitution ${v2}";
   String expected = "Testing if variable substitution works";
   Context context = new ContextBase();
@@ -115,127 +109,8 @@ public class OptionHelperTest  {
     assertEquals(expected, result); 
   }
 
-  @Test
-  public void testSubstVarsTwoLevelsDeep() {
-    context.putProperty("v1", "if");
-    context.putProperty("v2", "${v3}");
-    context.putProperty("v3", "${v4}");
-    context.putProperty("v4", "works");
-
-    String result = OptionHelper.substVars(text, context);
-    assertEquals(expected, result);
-  }
-
-  @Test
-  public void testSubstVarsTwoLevelsWithDefault() {
-    // Example input taken from LOGBCK-943 bug report
-    context.putProperty("APP_NAME", "LOGBACK");
-    context.putProperty("ARCHIVE_SUFFIX", "archive.log");
-    context.putProperty("LOG_HOME", "${logfilepath.default:-logs}");
-    context.putProperty("ARCHIVE_PATH", "${LOG_HOME}/archive/${APP_NAME}");
-
-    String result = OptionHelper.substVars("${ARCHIVE_PATH}_trace_${ARCHIVE_SUFFIX}", context);
-    assertEquals("logs/archive/LOGBACK_trace_archive.log", result);
-  }
-
-
-  @Test(timeout = 1000)
-  public void stubstVarsShouldNotGoIntoInfiniteLoop() {
-    context.putProperty("v1", "if");
-    context.putProperty("v2", "${v3}");
-    context.putProperty("v3", "${v4}");
-    context.putProperty("v4", "${v2}c");
-
-    expectedException.expect(Exception.class);
-    OptionHelper.substVars(text, context);
-  }
-
-  @Test
-  public void nonCircularGraphShouldWork() {
-    context.putProperty("A", "${B} and ${C}");
-    context.putProperty("B", "${B1}");
-    context.putProperty("B1", "B1-value");
-    context.putProperty("C", "${C1} and ${B}");
-    context.putProperty("C1", "C1-value");
-
-    String result = OptionHelper.substVars("${A}", context);
-    assertEquals("B1-value and C1-value and B1-value", result);
-  }
-
-  @Test(timeout = 1000)
-  public void detectCircularReferences0() {
-    context.putProperty("A", "${A}");
-
-    expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Circular variable reference detected while parsing input [${A} --> ${A}]");
-    OptionHelper.substVars("${A}", context);
-  }
-
-  @Test(timeout = 1000)
-  public void detectCircularReferences1() {
-    context.putProperty("A", "${A}a");
-
-    expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Circular variable reference detected while parsing input [${A} --> ${A}]");
-    OptionHelper.substVars("${A}", context);
-  }
-
-  @Test(timeout = 1000)
-  public void detectCircularReferences2() {
-    context.putProperty("A", "${B}");
-    context.putProperty("B", "${C}");
-    context.putProperty("C", "${A}");
-
-    expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Circular variable reference detected while parsing input [${A} --> ${B} --> ${C} --> ${A}]");
-    OptionHelper.substVars("${A}", context);
-  }
-
-
-  @Test
-  public void detectCircularReferencesInDefault() {
-    context.putProperty("A", "${B:-${A}}");
-    expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Circular variable reference detected while parsing input [${A} --> ${B} --> ${A}]");
-    OptionHelper.substVars("${A}", context);
-  }
-
-  @Test(timeout = 1000)
-  public void detectCircularReferences3() {
-    context.putProperty("A", "${B}");
-    context.putProperty("B", "${C}");
-    context.putProperty("C", "${A}");
-
-    expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Circular variable reference detected while parsing input [${B} --> ${C} --> ${A} --> ${B}]");
-    OptionHelper.substVars("${B} ", context);
-  }
-
-  @Test(timeout = 1000)
-  public void detectCircularReferences4() {
-    context.putProperty("A", "${B}");
-    context.putProperty("B", "${C}");
-    context.putProperty("C", "${A}");
-
-    expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Circular variable reference detected while parsing input [${C} --> ${A} --> ${B} --> ${C}]");
-    OptionHelper.substVars("${C} and ${A}", context);
-  }
-
-  @Test
-  public void detectCircularReferences5() {
-    context.putProperty("A", "${B} and ${C}");
-    context.putProperty("B", "${B1}");
-    context.putProperty("B1", "B1-value");
-    context.putProperty("C", "${C1}");
-    context.putProperty("C1", "here's the loop: ${A}");
-
-    expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Circular variable reference detected while parsing input [${A} --> ${C} --> ${C1} --> ${A}]");
-    String result = OptionHelper.substVars("${A}", context);
-    System.err.println(result);
-  }
 
+  @Ignore
   @Test
   public void defaultValueReferencingAVariable() {
     context.putProperty("v1", "k1");
@@ -243,17 +118,7 @@ public class OptionHelperTest  {
     assertEquals("k1", result);
   }
 
-  @Test
-  public void jackrabbit_standalone() {
-    String r = OptionHelper.substVars("${jackrabbit.log:-${repo:-jackrabbit}/log/jackrabbit.log}", context);
-    assertEquals("jackrabbit/log/jackrabbit.log", r);
-  }
-
-  @Test
-  public void doesNotThrowNullPointerExceptionForEmptyVariable() throws JoranException {
-    context.putProperty("var", "");
-    OptionHelper.substVars("${var}", context);
 
-  }
 
+  
 }
diff --git a/logback-core/src/test/java/ch/qos/logback/core/util/PackageTest.java b/logback-core/src/test/java/ch/qos/logback/core/util/PackageTest.java
index 926e28f..c805fa6 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/util/PackageTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/util/PackageTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/util/ResilienceUtil.java b/logback-core/src/test/java/ch/qos/logback/core/util/ResilienceUtil.java
index 585040f..f96fd77 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/util/ResilienceUtil.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/util/ResilienceUtil.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/util/StatusPrinterTest.java b/logback-core/src/test/java/ch/qos/logback/core/util/StatusPrinterTest.java
index 13f30ad..2a4375d 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/util/StatusPrinterTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/util/StatusPrinterTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/java/ch/qos/logback/core/util/StringCollectionUtilTest.java b/logback-core/src/test/java/ch/qos/logback/core/util/StringCollectionUtilTest.java
deleted file mode 100644
index a99ba75..0000000
--- a/logback-core/src/test/java/ch/qos/logback/core/util/StringCollectionUtilTest.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.core.util;
-
-import static org.junit.Assert.assertTrue;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
-import org.junit.Test;
-
-
-/**
- * Unit tests for {@link StringCollectionUtil}.
- *
- * @author Carl Harris
- */
-public class StringCollectionUtilTest {
-
-  @Test
-  public void testRetainMatchingWithNoPatterns() throws Exception {
-    Collection<String> values = stringToList("A");
-    StringCollectionUtil.retainMatching(values);
-    assertTrue(values.contains("A"));
-  }
-
-  @Test
-  public void testRetainMatchingWithMatchingPattern() throws Exception {
-    Collection<String> values = stringToList("A");
-    StringCollectionUtil.retainMatching(values, "A");
-    assertTrue(values.contains("A"));
-  }
-
-  @Test
-  public void testRetainMatchingWithNoMatchingPattern() throws Exception {
-    Collection<String> values = stringToList("A");
-    StringCollectionUtil.retainMatching(values, "B");
-    assertTrue(values.isEmpty());
-  }
-
-  @Test
-  public void testRemoveMatchingWithNoPatterns() throws Exception {
-    Collection<String> values = stringToList("A");
-    StringCollectionUtil.removeMatching(values);
-    assertTrue(values.contains("A"));
-  }
-
-  @Test
-  public void testRemoveMatchingWithMatchingPattern() throws Exception {
-    Collection<String> values = stringToList("A");
-    StringCollectionUtil.removeMatching(values, "A");
-    assertTrue(values.isEmpty());
-  }
-
-  @Test
-  public void testRemoveMatchingWithNoMatchingPattern() throws Exception {
-    Collection<String> values = stringToList("A");
-    StringCollectionUtil.removeMatching(values, "B");
-    assertTrue(values.contains("A"));
-  }
-
-  @SuppressWarnings("unchecked")
-  private List<String> stringToList(String... values) {
-    List<String> result = new ArrayList<String>(values.length);
-    result.addAll(Arrays.asList(values));
-    return result;
-  }
-
-}
diff --git a/logback-core/src/test/java/ch/qos/logback/core/util/TeeOutputStream.java b/logback-core/src/test/java/ch/qos/logback/core/util/TeeOutputStream.java
index 0184262..b0223c7 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/util/TeeOutputStream.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/util/TeeOutputStream.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -28,7 +28,7 @@ import java.io.PrintStream;
 public class TeeOutputStream extends OutputStream {
 
   final PrintStream targetPS;
-  public final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+  final ByteArrayOutputStream baos = new ByteArrayOutputStream();
 
   public TeeOutputStream(PrintStream targetPS) {
     // allow for null arguments
@@ -38,7 +38,7 @@ public class TeeOutputStream extends OutputStream {
   public void write(int b) throws IOException {
     baos.write(b);
     if(targetPS != null) {
-      targetPS.write(b);
+    targetPS.write(b);
     }
   }
 
diff --git a/logback-core/src/test/java/ch/qos/logback/core/util/TimeUtilTest.java b/logback-core/src/test/java/ch/qos/logback/core/util/TimeUtilTest.java
index 8eb1fc0..bba8e45 100644
--- a/logback-core/src/test/java/ch/qos/logback/core/util/TimeUtilTest.java
+++ b/logback-core/src/test/java/ch/qos/logback/core/util/TimeUtilTest.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-core/src/test/resources/net/ssl/README b/logback-core/src/test/resources/net/ssl/README
deleted file mode 100644
index c1710d9..0000000
--- a/logback-core/src/test/resources/net/ssl/README
+++ /dev/null
@@ -1,11 +0,0 @@
-These resources are used by the SSL support tests in package
-ch.qos.logback.classic.net.ssl.
-
-The key.pem and cert.pem are a private key and corresponding self-signed
-certificate.  The keystore.jks and keystore.p12 files are keystores of type
-JKS and PKCS12, respectively, containing the private key and self-signed
-certificates given in key.pem and cert.pem.  The passphrase for both keystore
-files is "changeit".
- 
-NOTE: The resources in this directory MUST be excluded from maven resource
-filtering, if it is enabled in the build.
diff --git a/logback-core/src/test/resources/net/ssl/cert.pem b/logback-core/src/test/resources/net/ssl/cert.pem
deleted file mode 100644
index 8eff019..0000000
--- a/logback-core/src/test/resources/net/ssl/cert.pem
+++ /dev/null
@@ -1,19 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDGzCCAgOgAwIBAgIJAJDzlHEYMHIxMA0GCSqGSIb3DQEBBQUAMCMxITAfBgNV
-BAMMGGxvZ2JhY2stY2xhc3NpYy1zc2wtdGVzdDAgFw0xMzAzMjQyMDAyMjZaGA8y
-MTAwMDMwMzIwMDIyNlowIzEhMB8GA1UEAwwYbG9nYmFjay1jbGFzc2ljLXNzbC10
-ZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtjNYyr0YvlRlaHla
-HrjCi08RkgZv9G6uWT+DRkLGPXu+DgrcAy/jZTCaiFGrOk9eEs73FEyHqKR1w4cF
-AmQRj1knGvAvjqmZsmUQey2ClJhaIiGgIYtrapcCSBu97SP/EndGLh3h9rmchnsy
-nq75HwngoHObM34soY47lOjVO//dgWBAr56j7QxaO0cgHEoVEYrloG2n2r9ku+lF
-X7yuO9O9oG5qU523rmFd2guEHkb9zS8+1w/WRUbnOjPzrYC6XXqvgPN5VCOOk0ob
-igI19FNY3mTDM5ehL3Ao6fvRVzSLtbkNa8j0CluoY1BGDqwWzQWB7QCJyKGe39IC
-xILgiQIDAQABo1AwTjAdBgNVHQ4EFgQUN5xnuFcG2aAge/xrAp/aqT+YZRcwHwYD
-VR0jBBgwFoAUN5xnuFcG2aAge/xrAp/aqT+YZRcwDAYDVR0TBAUwAwEB/zANBgkq
-hkiG9w0BAQUFAAOCAQEAKD1sQcUGKXQW+GPjO8qrf5yDpIOxeast7D/7iT4k5cOG
-iE8EBKx1vQBZ1B2PZHWp1364HSSHbk3TrAhrBjuRhP77n52zo/sypB59NyC8/OF1
-8QUFnNBo5r6xPYPAP1sfszKBsy7v8pIaA2ITrDYSy/YZwe01aYN245kzN3yzvhUt
-d6I2Taiuj3wwm8x77hbsl+8ZXBNx1UVTsLyvtE0zhOoK8FdjBqzF4rxV3zFQJFzz
-7HBw/s34USYaq4mf1nBhxpRQzhkmmdwvIMfN4FQ5sZyLnik8mnogm1/+1X6ZQTXq
-8BAu4QmjMo6JIKW7FQYbqtLuzJlPoz0WD8Vkaua+KA==
------END CERTIFICATE-----
diff --git a/logback-core/src/test/resources/net/ssl/key.pem b/logback-core/src/test/resources/net/ssl/key.pem
deleted file mode 100644
index 6fda923..0000000
--- a/logback-core/src/test/resources/net/ssl/key.pem
+++ /dev/null
@@ -1,27 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEogIBAAKCAQEAtjNYyr0YvlRlaHlaHrjCi08RkgZv9G6uWT+DRkLGPXu+Dgrc
-Ay/jZTCaiFGrOk9eEs73FEyHqKR1w4cFAmQRj1knGvAvjqmZsmUQey2ClJhaIiGg
-IYtrapcCSBu97SP/EndGLh3h9rmchnsynq75HwngoHObM34soY47lOjVO//dgWBA
-r56j7QxaO0cgHEoVEYrloG2n2r9ku+lFX7yuO9O9oG5qU523rmFd2guEHkb9zS8+
-1w/WRUbnOjPzrYC6XXqvgPN5VCOOk0obigI19FNY3mTDM5ehL3Ao6fvRVzSLtbkN
-a8j0CluoY1BGDqwWzQWB7QCJyKGe39ICxILgiQIDAQABAoIBADMpmf5cOS2A/3Tl
-1rOXyDFcQ5/QpPFrfxParN828vni3IyO6hcPBHiuvEYZQM6/6Le5XFJb5yApBlSg
-fnycYv3w1/VNit0xrNIWZRlhvzBA09aPwKqKvuAQhXiAKcYEfKTPz2o1w/UHS/fL
-cnxyv8vCd0w3ClbcUGYRTZPUCcSt7DYFfnGgFZtFNFyDusKjMaCbhMeIGRNwlcZh
-gnJguICUGw+Ah2hvW1MdrZ3Nt5FLxAmDJMxYnmRxBEPrrAEHwtgGfHKC/8vyihtC
-C86vYDJ6XqKpoZV2tMoUlS+5TSbYuYdUXv7QMdYzKpAQuv5mE+gmA/A9jc1l9BtA
-IUTNyr0CgYEA4j0N6wVj03N2NckS0zaYJF1R+jdGXhjeGOD7iL24y373fv7JHxh5
-yGgw8s55Iv1aVZJ7nPFIrNE45VkXe13FdnAHFf42vLIFUM8Awm2DxxwF38vhLGEU
-+CjeieQ+s4wS6moNhf5rLILfwcmbWgS9thqdyVwOxdaHMHFw1MNvL78CgYEAzis+
-ndioFIyiCoxT1RCRmBE6TiYT0Yhu6z7N14KTEitYXJKn066sMa16AobfTQNxYA5r
-0hdykvrJ7p0hT9zxa/c560OsakvPnegsl/bD60BDjY/8Sh3xyjhAwQ7NQS4xFGgQ
-Ne9xfu/0MMiKTHBMsENtE014ZK91ylKqgpUoAbcCgYAwbBbthZLPMDhN3MKNuHKp
-3dts7aW/AB2RP542rzy9OWiposjTQf7W2Q4Y+f5NceKCzD5u4enHK2S9Get/uRtJ
-dULe/zEiBAxFNnkYJC5/UE0lkFKamBDP6Jdw9gxBi6qEx7wrQMAZn81agdchVkBw
-mJPLBEwZJgh7YtxefZHvqwKBgB4GHjBOhOu5Lz/p/6tfplRG7f7DfM9e1whbNQ7V
-bSWQOmYA1X/2SA1T/hiwG4TTo4chkoId+Al/jDi7mUZQHrhiYITqbgls0OdmEFhx
-D0cLLMtI1KzWf4e7eXKj/TAo0ezu2q2AGT8rIpyYF8vZ7tEcgJ33Ajlnc/fq4fny
-TskxAoGAN6WfZrwhytFVai77cJHl9hkL/dzj73LzCFv+yXopNWNRHv1GJg1Czcds
-/2RpPO7sUnNT2KsRP6d2UcZC+JSngXpNjYEm5ApVeeMqvsggCpOMw9FxsDcwf61y
-0jMbJPxQghVXlk9AON3zFs6Mea/gk9hMTjMxMs4um/XnPqzGqlE=
------END RSA PRIVATE KEY-----
diff --git a/logback-core/src/test/resources/net/ssl/keystore.jks b/logback-core/src/test/resources/net/ssl/keystore.jks
deleted file mode 100644
index 274e4d1..0000000
Binary files a/logback-core/src/test/resources/net/ssl/keystore.jks and /dev/null differ
diff --git a/logback-core/src/test/resources/net/ssl/keystore.p12 b/logback-core/src/test/resources/net/ssl/keystore.p12
deleted file mode 100644
index efb20a6..0000000
Binary files a/logback-core/src/test/resources/net/ssl/keystore.p12 and /dev/null differ
diff --git a/logback-core/src/test/resources/util/README b/logback-core/src/test/resources/util/README
deleted file mode 100644
index f1eaee6..0000000
--- a/logback-core/src/test/resources/util/README
+++ /dev/null
@@ -1,2 +0,0 @@
-These resources are used by the LocationUtil unit tests in package
-ch.qos.logback.classic.util.
diff --git a/logback-core/src/test/resources/util/testResource.txt b/logback-core/src/test/resources/util/testResource.txt
deleted file mode 100644
index 8f5c0da..0000000
--- a/logback-core/src/test/resources/util/testResource.txt
+++ /dev/null
@@ -1 +0,0 @@
-TEST RESOURCE
diff --git a/logback-core/src/test/scala/ch/qos/logback/core/rolling/TimeBasedRolling_STest.scala b/logback-core/src/test/scala/ch/qos/logback/core/rolling/TimeBasedRolling_STest.scala
index 2429013..64c7cad 100644
--- a/logback-core/src/test/scala/ch/qos/logback/core/rolling/TimeBasedRolling_STest.scala
+++ b/logback-core/src/test/scala/ch/qos/logback/core/rolling/TimeBasedRolling_STest.scala
@@ -19,7 +19,7 @@ import org.junit.Test
 import ch.qos.logback.core.encoder.EchoEncoder
 import java.io.{FileOutputStream, File}
 import ch.qos.logback.core.util.{StatusPrinter, Compare, CoreTestConstants}
-import ch.qos.logback.core.testUtil.EnvUtilForTests
+import ch.qos.logback.core.testUtil.Env
 import java.security.PrivateKey
 
 class TimeBasedRolling_STest extends RollingScaffolding {
@@ -99,7 +99,7 @@ class TimeBasedRolling_STest extends RollingScaffolding {
     var i = 0;
     for (fn <- expectedFilenameList) {
       val suffix: String = if (withCompression) addGZIfNotLast(i, compressionSuffix) else ""
-      val witnessFileName: String = CoreTestConstants.TEST_SRC_PREFIX + "witness/rolling/tbr-" + testId + "." + i.toString + suffix
+      val witnessFileName: String = CoreTestConstants.TEST_DIR_PREFIX + "witness/rolling/tbr-" + testId + "." + i.toString + suffix
       assertTrue(Compare.compare(fn, witnessFileName));
       i += 1
     }
@@ -107,7 +107,7 @@ class TimeBasedRolling_STest extends RollingScaffolding {
 
   def zCheck(testId: String, withCompression: Boolean, compressionSuffix:String) = {
     val lastFile = expectedFilenameList.last
-    val witnessFileName: String = CoreTestConstants.TEST_SRC_PREFIX + "witness/rolling/tbr-" + testId
+    val witnessFileName: String = CoreTestConstants.TEST_DIR_PREFIX + "witness/rolling/tbr-" + testId
     println(lastFile+"  "+witnessFileName)
     assertTrue(Compare.compare(lastFile, witnessFileName));
   }
@@ -187,7 +187,7 @@ class TimeBasedRolling_STest extends RollingScaffolding {
 
   @Test
   def failed_rename: Unit = {
-    if(!EnvUtilForTests.isWindows) return
+    if(!Env.isWindows) return
 
     var fos: FileOutputStream = null
     try {
diff --git a/logback-examples/pom.xml b/logback-examples/pom.xml
index adeaf40..8757ad8 100644
--- a/logback-examples/pom.xml
+++ b/logback-examples/pom.xml
@@ -5,7 +5,7 @@
   <parent>
     <groupId>ch.qos.logback</groupId>
     <artifactId>logback-parent</artifactId>
-    <version>1.1.2</version>
+    <version>1.0.4</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
@@ -67,12 +67,6 @@
       <optional>true</optional>
     </dependency>
 
-    <dependency>
-      <groupId>org.fusesource.jansi</groupId>
-      <artifactId>jansi</artifactId>
-      <optional>true</optional>
-    </dependency>
-
   </dependencies>
 
   <build>
diff --git a/logback-examples/setClasspath.sh b/logback-examples/setClasspath.sh
index 5180c1c..4ac7f4b 100644
--- a/logback-examples/setClasspath.sh
+++ b/logback-examples/setClasspath.sh
@@ -6,10 +6,10 @@
 
 LB_HOME=/SET/THIS/PARAMETER/TO/THE/DIRECTORY/WHERE/YOU/INSTALLED/LOGBACK
 
-CLASSPATH="${CLASSPATH}:${LB_HOME}/logback-classic-1.1.2.jar"
-CLASSPATH="${CLASSPATH}:${LB_HOME}/logback-core-1.1.2.jar"
-CLASSPATH="${CLASSPATH}:${LB_HOME}/logback-examples/logback-examples-1.1.2.jar"
-CLASSPATH="${CLASSPATH}:${LB_HOME}/logback-examples/lib/slf4j-api-1.7.6.jar"
+CLASSPATH="${CLASSPATH}:${LB_HOME}/logback-classic-1.0.4.jar"
+CLASSPATH="${CLASSPATH}:${LB_HOME}/logback-core-1.0.4.jar"
+CLASSPATH="${CLASSPATH}:${LB_HOME}/logback-examples/logback-examples-1.0.4.jar"
+CLASSPATH="${CLASSPATH}:${LB_HOME}/logback-examples/lib/slf4j-api-1.6.4.jar"
 
 export CLASSPATH
 
diff --git a/logback-examples/src/main/java/chapters/appenders/ConfigurationTester.java b/logback-examples/src/main/java/chapters/appenders/ConfigurationTester.java
index 10d9c67..4785559 100644
--- a/logback-examples/src/main/java/chapters/appenders/ConfigurationTester.java
+++ b/logback-examples/src/main/java/chapters/appenders/ConfigurationTester.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/appenders/CountingConsoleAppender.java b/logback-examples/src/main/java/chapters/appenders/CountingConsoleAppender.java
index abe40c7..f5d03e0 100644
--- a/logback-examples/src/main/java/chapters/appenders/CountingConsoleAppender.java
+++ b/logback-examples/src/main/java/chapters/appenders/CountingConsoleAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -38,7 +38,7 @@ public class CountingConsoleAppender extends AppenderBase<ILoggingEvent> {
   @Override
   public void start() {
     if (this.encoder == null) {
-      addError("No encoder set for the appender named ["+ name +"].");
+      addError("No layout set for the appender named ["+ name +"].");
       return;
     }
     
@@ -53,13 +53,13 @@ public class CountingConsoleAppender extends AppenderBase<ILoggingEvent> {
     if (counter >= limit) {
       return;
     }
-    // output the events as formatted by the wrapped layout
+    // output the events as formatted by our layout
     try {
       this.encoder.doEncode(event);
     } catch (IOException e) {
     }
 
-   // prepare for next event
+    // prepare for next event
     counter++;
   }
 
@@ -70,4 +70,6 @@ public class CountingConsoleAppender extends AppenderBase<ILoggingEvent> {
   public void setEncoder(PatternLayoutEncoder encoder) {
     this.encoder = encoder;
   }
+  
+  
 }
diff --git a/logback-examples/src/main/java/chapters/appenders/IO.java b/logback-examples/src/main/java/chapters/appenders/IO.java
index 2213fbb..b699d91 100644
--- a/logback-examples/src/main/java/chapters/appenders/IO.java
+++ b/logback-examples/src/main/java/chapters/appenders/IO.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -120,7 +120,7 @@ public class IO extends Thread {
       threads[i].start();
     }
 
-    // wait for them to processPriorToRemoval, compute the average throughput
+    // wait for them to stop, compute the average throughput
     double sum = 0;
 
     for (int i = 0; i < numThreads; i++) {
@@ -129,7 +129,7 @@ public class IO extends Thread {
     }
 
     if (scarceCPU) {
-      // setting the interrupted field will cause counterThread to processPriorToRemoval
+      // setting the interrupted field will cause counterThread to stop
       counterThread.interrupted = true;
       counterThread.join();
     }
diff --git a/logback-examples/src/main/java/chapters/appenders/IOPerformance.java b/logback-examples/src/main/java/chapters/appenders/IOPerformance.java
index ec355cc..c7acc90 100644
--- a/logback-examples/src/main/java/chapters/appenders/IOPerformance.java
+++ b/logback-examples/src/main/java/chapters/appenders/IOPerformance.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -109,7 +109,7 @@ public class IOPerformance extends Thread {
       threads[i].start();
     }
 
-    // wait for them to processPriorToRemoval, compute the average throughput
+    // wait for them to stop, compute the average throughput
     double sum = 0;
 
     for (int i = 0; i < NUM_THREADS; i++) {
@@ -117,7 +117,7 @@ public class IOPerformance extends Thread {
       sum += threads[i].throughput;
     }
 
-    // setting the interrupted field will cause counterThread to processPriorToRemoval
+    // setting the interrupted field will cause counterThread to stop
     otherIOThread.interrupted = true;
     otherIOThread.join();
 
diff --git a/logback-examples/src/main/java/chapters/appenders/db/append-and-share-with-jndi.xml b/logback-examples/src/main/java/chapters/appenders/db/append-and-share-with-jndi.xml
index 0a190f5..1086cb8 100644
--- a/logback-examples/src/main/java/chapters/appenders/db/append-and-share-with-jndi.xml
+++ b/logback-examples/src/main/java/chapters/appenders/db/append-and-share-with-jndi.xml
@@ -1,39 +1,36 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-
-<!-- WARNING -->
-<!-- WARNING BindDataSourceToJNDIAction is both untested and undocumented.  -->
-<!-- WARNING Just ignore this configuration file. -->
-<!-- WARNING -->
-
+	  
 <configuration>
   <!-- We create a joran rule that will instance and bind the appropriate
-       data source instance to JNDI. -->
-  <newRule pattern="configuration/bindDataSourceToJNDI"
+       data source instance to JNDI. -->   
+  <newRule pattern="configuration/bindDataSourceToJNDI" 
            actionClass="ch.qos.logback.core.db.BindDataSourceToJNDIAction"/>
-
-  <bindDataSourceToJNDI/>
-
+  	    
+  <bindDataSourceToJNDI />
+  
   <appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
-    <connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">
-
-      <dataSource class="${dataSourceClass}">
-        <!-- Joran cannot handle element names which are variables themselves. In order to let  -->
-        <!-- the property name vary, we use the <param> element.-->
-        <param name="${url-key:-url}" value="${url}"/>
-        <serverName>${serverName}</serverName>
-        <databaseName>${databaseName}</databaseName>
-      </dataSource>
-
-      <user>${user}</user>
-      <password>${password}</password>>
-    </connectionSource>
+     <connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">
+       
+       <dataSource class="${dataSourceClass}">
+          <!-- Joran cannot substitute variables
+       	 that are not attribute values. Therefore, we cannot
+       	 declare the next parameter like the others. 
+       	 -->
+         <param name="${url-key:-url}" value="${url}"/>
+         <serverName>${serverName}</serverName>
+         <databaseName>${databaseName}</databaseName>   
+       </dataSource>
+       
+       <user>${user}</user>
+       <password>${password}</password>>
+     </connectionSource>
   </appender>
-
+  
   <root>
-    <level value="debug"/>
-    <appender-ref ref="DB"/>
-  </root>
-
+    <level value ="debug"/>
+    <appender-ref ref="DB" />
+  </root>  
+  
 </configuration>
 
 
diff --git a/logback-examples/src/main/java/chapters/appenders/db/append-toMySQL-with-datasource-and-pooling.xml b/logback-examples/src/main/java/chapters/appenders/db/append-toMySQL-with-datasource-and-pooling.xml
index 0bc0999..c2dcbac 100644
--- a/logback-examples/src/main/java/chapters/appenders/db/append-toMySQL-with-datasource-and-pooling.xml
+++ b/logback-examples/src/main/java/chapters/appenders/db/append-toMySQL-with-datasource-and-pooling.xml
@@ -1,17 +1,19 @@
 <configuration>
 
-  <appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
-    <connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">
-      <dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">
-        <driverClass>com.mysql.jdbc.Driver</driverClass>
-        <jdbcUrl>jdbc:mysql://localhost:3306/logbackdb</jdbcUrl>
-        <user>logback</user>
-        <password>logback</password>
-      </dataSource>
-    </connectionSource>
-  </appender>
+	<appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
+		<connectionSource
+			class="ch.qos.logback.core.db.DataSourceConnectionSource">
+			<dataSource
+				class="com.mchange.v2.c3p0.ComboPooledDataSource">
+				<driverClass>com.mysql.jdbc.Driver</driverClass>
+				<jdbcUrl>jdbc:mysql://localhost:3306/logbackdb</jdbcUrl>
+				<user>logback</user>
+				<password>logback</password>
+			</dataSource>
+		</connectionSource>
+	</appender>
 
-  <root level="debug">
-    <appender-ref ref="DB"/>
-  </root>
+	<root level="debug">
+		<appender-ref ref="DB" />
+	</root>
 </configuration>
\ No newline at end of file
diff --git a/logback-examples/src/main/java/chapters/appenders/db/append-via-jndi.xml b/logback-examples/src/main/java/chapters/appenders/db/append-via-jndi.xml
deleted file mode 100644
index 687d58c..0000000
--- a/logback-examples/src/main/java/chapters/appenders/db/append-via-jndi.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<configuration debug="true">
-  <appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
-    <connectionSource class="ch.qos.logback.core.db.JNDIConnectionSource">
-      <!-- please note the "java:comp/env/" prefix -->
-      <jndiLocation>java:comp/env/jdbc/logging</jndiLocation>
-    </connectionSource>
-  </appender>
-  <root level="DEBUG">
-    <appender-ref ref="DB"/>
-  </root>
-</configuration>
\ No newline at end of file
diff --git a/logback-examples/src/main/java/chapters/appenders/db/append-with-c3p0.xml b/logback-examples/src/main/java/chapters/appenders/db/append-with-c3p0.xml
index 513701c..7289b12 100644
--- a/logback-examples/src/main/java/chapters/appenders/db/append-with-c3p0.xml
+++ b/logback-examples/src/main/java/chapters/appenders/db/append-with-c3p0.xml
@@ -11,6 +11,14 @@
          <databaseName>${databaseName}</databaseName>
          <user>${user}</user>
          <password>${password}</password>
+         <!--
+         <param name="initialConnections" value="10"/>
+         <param name="maxConnections" value="10"/>
+       
+         <param name="max-connections" value="100"/>                                                    
+         <param name="min-connections" value="5" />                                                     
+         <param name="inactivity-timeout" value="200"/>        
+         -->                                         
        </dataSource>
 
      </connectionSource>
diff --git a/logback-examples/src/main/java/chapters/appenders/db/append-with-drivermanager.xml b/logback-examples/src/main/java/chapters/appenders/db/append-with-drivermanager.xml
index f5e568e..980f37a 100644
--- a/logback-examples/src/main/java/chapters/appenders/db/append-with-drivermanager.xml
+++ b/logback-examples/src/main/java/chapters/appenders/db/append-with-drivermanager.xml
@@ -2,18 +2,19 @@
 
 <configuration>
 
-  <appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
-    <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
-      <driverClass>${driverClass}</driverClass>
-      <url>${url}</url>
-      <user>${user}</user>
-      <password>${password}</password>
-    </connectionSource>
-  </appender>
+	<appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
+		<connectionSource
+			class="ch.qos.logback.core.db.DriverManagerConnectionSource">
+			<driverClass>${driverClass}</driverClass>
+			<url>${url}</url>
+			<user>${user}</user>
+			<password>${password}</password>
+		</connectionSource>
+	</appender>
 
-  <root level="debug">
-    <appender-ref ref="DB"/>
-  </root>
+	<root level="debug">
+		<appender-ref ref="DB" />
+	</root>
 </configuration>
 
 
diff --git a/logback-examples/src/main/java/chapters/appenders/db/append-with-pooled-datasource.xml b/logback-examples/src/main/java/chapters/appenders/db/append-with-pooled-datasource.xml
index 0a9237b..4eb1a2a 100644
--- a/logback-examples/src/main/java/chapters/appenders/db/append-with-pooled-datasource.xml
+++ b/logback-examples/src/main/java/chapters/appenders/db/append-with-pooled-datasource.xml
@@ -6,8 +6,10 @@
      <connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">
        
        <dataSource class="${pooledDataSourceClass}">
-         <!-- Joran cannot handle element names which are variables themselves. In order to let  -->
-         <!-- the property name vary, we use the <param> element.-->
+         <!-- Joran cannot substitute variables
+       	 that are not attribute values. Therefore, we cannot
+       	 declare the next parameter like the others. 
+       	 -->
          <param name="${url-key:-url}" value="${url}"/>
          <serverName>${serverName}</serverName>
          <databaseName>${databaseName}</databaseName>
diff --git a/logback-examples/src/main/java/chapters/appenders/mail/CounterBasedEvaluator.java b/logback-examples/src/main/java/chapters/appenders/mail/CounterBasedEvaluator.java
index 9a6a227..a22ca5d 100644
--- a/logback-examples/src/main/java/chapters/appenders/mail/CounterBasedEvaluator.java
+++ b/logback-examples/src/main/java/chapters/appenders/mail/CounterBasedEvaluator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/appenders/mail/EMail.java b/logback-examples/src/main/java/chapters/appenders/mail/EMail.java
index ad6d6a7..7f423f8 100644
--- a/logback-examples/src/main/java/chapters/appenders/mail/EMail.java
+++ b/logback-examples/src/main/java/chapters/appenders/mail/EMail.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/appenders/mail/Marked_EMail.java b/logback-examples/src/main/java/chapters/appenders/mail/Marked_EMail.java
index 466eef0..583a089 100644
--- a/logback-examples/src/main/java/chapters/appenders/mail/Marked_EMail.java
+++ b/logback-examples/src/main/java/chapters/appenders/mail/Marked_EMail.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/appenders/mail/customBufferSize.xml b/logback-examples/src/main/java/chapters/appenders/mail/customBufferSize.xml
index 143c6ee..4cd70b6 100644
--- a/logback-examples/src/main/java/chapters/appenders/mail/customBufferSize.xml
+++ b/logback-examples/src/main/java/chapters/appenders/mail/customBufferSize.xml
@@ -9,7 +9,7 @@
     <layout class="ch.qos.logback.classic.html.HTMLLayout"/>
 
 
-    <CyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker">
+    <CyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTrackerImpl">
       <BufferSize>1</BufferSize>
     </CyclicBufferTracker>
   </appender>
diff --git a/logback-examples/src/main/java/chapters/appenders/sift/SiftExample.java b/logback-examples/src/main/java/chapters/appenders/sift/SiftExample.java
index d4503e8..57e0e23 100644
--- a/logback-examples/src/main/java/chapters/appenders/sift/SiftExample.java
+++ b/logback-examples/src/main/java/chapters/appenders/sift/SiftExample.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/appenders/socket/ConsolePluginClient.java b/logback-examples/src/main/java/chapters/appenders/socket/ConsolePluginClient.java
deleted file mode 100644
index edf7d31..0000000
--- a/logback-examples/src/main/java/chapters/appenders/socket/ConsolePluginClient.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package chapters.appenders.socket;
-
-import ch.qos.logback.core.util.Duration;
-import org.slf4j.LoggerFactory;
-
-import ch.qos.logback.classic.Logger;
-
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.net.SocketAppender;
-import ch.qos.logback.core.status.OnConsoleStatusListener;
-import ch.qos.logback.core.util.StatusPrinter;
-import static org.slf4j.Logger.ROOT_LOGGER_NAME;
-
-/**
- * Created with IntelliJ IDEA. User: ceki Date: 27.06.12 Time: 19:35 To change
- * this template use File | Settings | File Templates.
- */
-public class ConsolePluginClient {
-
-	static String LONG_TEXT = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum lectus augue, pulvinar quis cursus nec, imperdiet nec ante. Cras sit amet arcu et enim adipiscing pellentesque. Suspendisse mi felis, dictum a lobortis nec, placerat in diam. Proin lobortis tortor at nunc facilisis aliquet. Praesent eget dignissim orci. Ut iaculis bibendum.";
-
-	static String LOGGER_NAME = "com.acme.myapp.foo";
-	static String UGLY_BETTY_LOGGER_NAME = "com.acme.myapp.UglyBetty";
-	static long SLEEP = 1;
-	static long RUN_LENGTH = 200 * 1000;
-
-	static public void main(String[] args) throws Exception {
-		// Create a SocketAppender connected to hostname:port with a
-		// reconnection delay of 10000 seconds.
-		String hostname = "localhost";
-		int port = 4321;
-		SocketAppender socketAppender = new SocketAppender();
-		socketAppender.setRemoteHost(hostname);
-		socketAppender.setPort(port);
-		socketAppender.setIncludeCallerData(true);
-        socketAppender.setReconnectionDelay(new Duration(10000));
-
-		LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
-
-		socketAppender.setContext(lc);
-
-		lc.reset();
-
-		lc.getStatusManager().add(new OnConsoleStatusListener());
-		// SocketAppender options become active only after the execution
-		// of the next statement.
-		socketAppender.start();
-
-		Logger rootLogger = (Logger) LoggerFactory.getLogger(ROOT_LOGGER_NAME);
-		rootLogger.addAppender(socketAppender);
-
-		org.slf4j.Logger logger = LoggerFactory.getLogger(LOGGER_NAME);
-
-		UglyBetty ub = new UglyBetty("ugly-betty-thread-234");
-		ub.start();
-		for (int i = 0; i < RUN_LENGTH; i++) {
-			if (i % 3 == 0) {
-				logger.warn(i + " is divisible by 3");
-			} else {
-				toto(logger, i);
-			}
-			Thread.sleep(SLEEP);
-		}
-		ub.join();
-
-		StatusPrinter.print(lc);
-	}
-
-	/**
-	 * @param logger
-	 * @param i
-	 */
-	/**
-	 * @param logger
-	 * @param i
-	 */
-	static void toto(org.slf4j.Logger logger, int i) {
-		logger.debug("this is message number " + i);
-	}
-
-	static class UglyBetty extends Thread {
-		org.slf4j.Logger logger = LoggerFactory
-				.getLogger(UGLY_BETTY_LOGGER_NAME);
-
-		public UglyBetty(String name) {
-			super(name);
-		}
-
-		public void run() {
-			for (int i = 0; i < RUN_LENGTH; i++) {
-				if (i % 23 == 0) {
-					logger.warn(LONG_TEXT);
-				} else if (i % 47 == 0) {
-					logger.error("this is an exception", new Exception("test"));
-				} else {
-					count(logger, i);
-				}
-				try {
-					Thread.sleep(SLEEP);
-				} catch (InterruptedException e) {
-					e.printStackTrace();
-				}
-			}
-		}
-
-		void count(org.slf4j.Logger logger, int i) {
-			logger.debug("Betty counts to " + i);
-		}
-	}
-}
diff --git a/logback-examples/src/main/java/chapters/appenders/socket/SocketClient1.java b/logback-examples/src/main/java/chapters/appenders/socket/SocketClient1.java
index be02e10..37f3112 100644
--- a/logback-examples/src/main/java/chapters/appenders/socket/SocketClient1.java
+++ b/logback-examples/src/main/java/chapters/appenders/socket/SocketClient1.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -17,7 +17,6 @@ package chapters.appenders.socket;
 import java.io.BufferedReader;
 import java.io.InputStreamReader;
 
-import ch.qos.logback.core.util.Duration;
 import org.slf4j.LoggerFactory;
 
 import ch.qos.logback.classic.Logger;
@@ -52,7 +51,7 @@ public class SocketClient1 {
     SocketAppender socketAppender = new SocketAppender();
     socketAppender.setRemoteHost(hostName);
     socketAppender.setPort(port);
-    socketAppender.setReconnectionDelay(new Duration(10000));
+    socketAppender.setReconnectionDelay(10000);
     LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
     socketAppender.setContext(lc);
 
diff --git a/logback-examples/src/main/java/chapters/appenders/socket/SocketClient2.java b/logback-examples/src/main/java/chapters/appenders/socket/SocketClient2.java
index a0b1782..1b2cbaf 100644
--- a/logback-examples/src/main/java/chapters/appenders/socket/SocketClient2.java
+++ b/logback-examples/src/main/java/chapters/appenders/socket/SocketClient2.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/appenders/socket/client2.xml b/logback-examples/src/main/java/chapters/appenders/socket/client2.xml
deleted file mode 100644
index 4882f0d..0000000
--- a/logback-examples/src/main/java/chapters/appenders/socket/client2.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<!-- ==================================================================== -->
-<!-- Sample SocketReceiver configuration.                                 -->
-<!-- ==================================================================== -->
-
-<configuration debug="true">
-	  
-  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">    
-    <encoder>
-      <pattern>%date %-5level [%thread] %logger - %message%n</pattern>
-    </encoder>
-  </appender>
-
-  <root level="DEBUG">
-    <appender-ref ref="CONSOLE" />
-  </root>  
-  
-  <receiver class="ch.qos.logback.classic.net.SocketReceiver">
-    <host>${host}</host>
-    <port>${port}</port>
-    <reconnectionDelay>10000</reconnectionDelay>
-  </receiver>
-  
-</configuration>
-
-
-
diff --git a/logback-examples/src/main/java/chapters/appenders/socket/ssl/client.xml b/logback-examples/src/main/java/chapters/appenders/socket/ssl/client.xml
deleted file mode 100644
index f038fe5..0000000
--- a/logback-examples/src/main/java/chapters/appenders/socket/ssl/client.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<!-- ==================================================================== -->
-<!-- Sample SSLSocketAppender configuration.                              -->
-<!-- ==================================================================== -->
-
-<configuration debug="true">
-	  
-  <appender name="SOCKET" class="ch.qos.logback.classic.net.SSLSocketAppender">
-    <remoteHost>${host}</remoteHost>
-    <port>${port}</port>
-    <reconnectionDelay>10000</reconnectionDelay>
-    <ssl>
-      <trustStore>
-        <location>${truststore}</location>
-        <password>${password}</password>
-      </trustStore>
-    </ssl>
-  </appender>
-
-  <root level="debug">
-    <appender-ref ref="SOCKET" />
-  </root>  
-
-</configuration>
-
-
-
diff --git a/logback-examples/src/main/java/chapters/appenders/socket/ssl/keystore.jks b/logback-examples/src/main/java/chapters/appenders/socket/ssl/keystore.jks
deleted file mode 100644
index 274e4d1..0000000
Binary files a/logback-examples/src/main/java/chapters/appenders/socket/ssl/keystore.jks and /dev/null differ
diff --git a/logback-examples/src/main/java/chapters/appenders/socket/ssl/server.xml b/logback-examples/src/main/java/chapters/appenders/socket/ssl/server.xml
deleted file mode 100644
index 9348677..0000000
--- a/logback-examples/src/main/java/chapters/appenders/socket/ssl/server.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<!-- ==================================================================== -->
-<!-- Sample SimpleSSLSocketServer configuration.                          -->
-<!-- ==================================================================== -->
-
-<configuration debug="true">
-
-  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
-    <encoder>
-      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
-    </encoder>
-  </appender>
-  
-  <root level="debug">
-    <appender-ref ref="CONSOLE" />
-  </root>
-  
-</configuration>
-
-
-
diff --git a/logback-examples/src/main/java/chapters/appenders/socket/ssl/truststore.jks b/logback-examples/src/main/java/chapters/appenders/socket/ssl/truststore.jks
deleted file mode 100644
index 93498fb..0000000
Binary files a/logback-examples/src/main/java/chapters/appenders/socket/ssl/truststore.jks and /dev/null differ
diff --git a/logback-examples/src/main/java/chapters/appenders/sub/sample/Bar.java b/logback-examples/src/main/java/chapters/appenders/sub/sample/Bar.java
index d34ddb1..da81e69 100644
--- a/logback-examples/src/main/java/chapters/appenders/sub/sample/Bar.java
+++ b/logback-examples/src/main/java/chapters/appenders/sub/sample/Bar.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/architecture/Bar.java b/logback-examples/src/main/java/chapters/architecture/Bar.java
index 3fa0fbc..6c54119 100644
--- a/logback-examples/src/main/java/chapters/architecture/Bar.java
+++ b/logback-examples/src/main/java/chapters/architecture/Bar.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/architecture/MyAppWithConfigFile.java b/logback-examples/src/main/java/chapters/architecture/MyAppWithConfigFile.java
index 828104c..84e4a48 100644
--- a/logback-examples/src/main/java/chapters/architecture/MyAppWithConfigFile.java
+++ b/logback-examples/src/main/java/chapters/architecture/MyAppWithConfigFile.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/architecture/SelectionRule.java b/logback-examples/src/main/java/chapters/architecture/SelectionRule.java
index f656c04..7dbcc52 100644
--- a/logback-examples/src/main/java/chapters/architecture/SelectionRule.java
+++ b/logback-examples/src/main/java/chapters/architecture/SelectionRule.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/configuration/AddStatusListenerApp.java b/logback-examples/src/main/java/chapters/configuration/AddStatusListenerApp.java
index 4c70f6d..4846358 100644
--- a/logback-examples/src/main/java/chapters/configuration/AddStatusListenerApp.java
+++ b/logback-examples/src/main/java/chapters/configuration/AddStatusListenerApp.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/configuration/Foo.java b/logback-examples/src/main/java/chapters/configuration/Foo.java
index 174fc5f..ba2ea4d 100644
--- a/logback-examples/src/main/java/chapters/configuration/Foo.java
+++ b/logback-examples/src/main/java/chapters/configuration/Foo.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/configuration/MyApp1.java b/logback-examples/src/main/java/chapters/configuration/MyApp1.java
index 498bdac..3465f66 100644
--- a/logback-examples/src/main/java/chapters/configuration/MyApp1.java
+++ b/logback-examples/src/main/java/chapters/configuration/MyApp1.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/configuration/MyApp2.java b/logback-examples/src/main/java/chapters/configuration/MyApp2.java
index 3af3687..c73cc41 100644
--- a/logback-examples/src/main/java/chapters/configuration/MyApp2.java
+++ b/logback-examples/src/main/java/chapters/configuration/MyApp2.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/configuration/MyApp3.java b/logback-examples/src/main/java/chapters/configuration/MyApp3.java
index 802bb0f..9035007 100644
--- a/logback-examples/src/main/java/chapters/configuration/MyApp3.java
+++ b/logback-examples/src/main/java/chapters/configuration/MyApp3.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/configuration/contextScopedVariable.xml b/logback-examples/src/main/java/chapters/configuration/contextScopedVariable.xml
deleted file mode 100644
index cc5d22b..0000000
--- a/logback-examples/src/main/java/chapters/configuration/contextScopedVariable.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<configuration>
-
-  <property scope="context" name="nodeId" value="firstNode"/>
-
-  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
-    <file>/opt/${noteId}/myApp.log</file>
-    <encoder>
-      <pattern>%msg%n</pattern>
-    </encoder>
-  </appender>
-
-  <root level="debug">
-    <appender-ref ref="FILE"/>
-  </root>
-</configuration>
\ No newline at end of file
diff --git a/logback-examples/src/main/java/chapters/filters/FilterEvents.java b/logback-examples/src/main/java/chapters/filters/FilterEvents.java
index 0b9ab54..48186fa 100644
--- a/logback-examples/src/main/java/chapters/filters/FilterEvents.java
+++ b/logback-examples/src/main/java/chapters/filters/FilterEvents.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/filters/GoMDC.java b/logback-examples/src/main/java/chapters/filters/GoMDC.java
index cb7a3da..7f35ce1 100644
--- a/logback-examples/src/main/java/chapters/filters/GoMDC.java
+++ b/logback-examples/src/main/java/chapters/filters/GoMDC.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/filters/SampleFilter.java b/logback-examples/src/main/java/chapters/filters/SampleFilter.java
index 8983d28..d96eb41 100644
--- a/logback-examples/src/main/java/chapters/filters/SampleFilter.java
+++ b/logback-examples/src/main/java/chapters/filters/SampleFilter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/filters/SampleTurboFilter.java b/logback-examples/src/main/java/chapters/filters/SampleTurboFilter.java
index 39fb641..897d2a5 100644
--- a/logback-examples/src/main/java/chapters/filters/SampleTurboFilter.java
+++ b/logback-examples/src/main/java/chapters/filters/SampleTurboFilter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/introduction/HelloWorld1.java b/logback-examples/src/main/java/chapters/introduction/HelloWorld1.java
index bc2f2b4..1178561 100644
--- a/logback-examples/src/main/java/chapters/introduction/HelloWorld1.java
+++ b/logback-examples/src/main/java/chapters/introduction/HelloWorld1.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/introduction/HelloWorld2.java b/logback-examples/src/main/java/chapters/introduction/HelloWorld2.java
index cb3d533..2b4558a 100644
--- a/logback-examples/src/main/java/chapters/introduction/HelloWorld2.java
+++ b/logback-examples/src/main/java/chapters/introduction/HelloWorld2.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/layouts/CallerEvaluatorExample.java b/logback-examples/src/main/java/chapters/layouts/CallerEvaluatorExample.java
index 98f87e5..14b0f72 100644
--- a/logback-examples/src/main/java/chapters/layouts/CallerEvaluatorExample.java
+++ b/logback-examples/src/main/java/chapters/layouts/CallerEvaluatorExample.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/layouts/ExceptionEvaluatorExample.java b/logback-examples/src/main/java/chapters/layouts/ExceptionEvaluatorExample.java
index f46ce69..d18a689 100644
--- a/logback-examples/src/main/java/chapters/layouts/ExceptionEvaluatorExample.java
+++ b/logback-examples/src/main/java/chapters/layouts/ExceptionEvaluatorExample.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/layouts/MySampleConverter.java b/logback-examples/src/main/java/chapters/layouts/MySampleConverter.java
index f3bbbb0..43f3fa5 100644
--- a/logback-examples/src/main/java/chapters/layouts/MySampleConverter.java
+++ b/logback-examples/src/main/java/chapters/layouts/MySampleConverter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -19,11 +19,32 @@ import ch.qos.logback.classic.spi.ILoggingEvent;
 
 public class MySampleConverter extends ClassicConverter {
 
-  long start = System.nanoTime();
+  private static final String END_COLOR = "\u001b[m";
+
+  private static final String ERROR_COLOR = "\u001b[0;31m";
+  private static final String WARN_COLOR = "\u001b[0;33m";
 
   @Override
   public String convert(ILoggingEvent event) {
-    long nowInNanos = System.nanoTime();
-    return Long.toString(nowInNanos-start);
+    StringBuffer sbuf = new StringBuffer();
+    sbuf.append(getColor(event.getLevel()));
+    sbuf.append(event.getLevel());
+    sbuf.append(END_COLOR);
+    return sbuf.toString();
+  }
+
+  /**
+   * Returns the appropriate characters to change the color for the specified
+   * logging level.
+   */
+  private String getColor(Level level) {
+    switch (level.toInt()) {
+    case Level.ERROR_INT:
+      return ERROR_COLOR;
+    case Level.WARN_INT:
+      return WARN_COLOR;
+    default:
+      return "";
+    }
   }
 }
diff --git a/logback-examples/src/main/java/chapters/layouts/MySampleLayout.java b/logback-examples/src/main/java/chapters/layouts/MySampleLayout.java
index 1117508..c12e814 100644
--- a/logback-examples/src/main/java/chapters/layouts/MySampleLayout.java
+++ b/logback-examples/src/main/java/chapters/layouts/MySampleLayout.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -20,7 +20,7 @@ import ch.qos.logback.core.LayoutBase;
 public class MySampleLayout extends LayoutBase<ILoggingEvent>  {
 
   public String doLayout(ILoggingEvent event) {
-    StringBuilder sbuf = new StringBuilder(128);
+    StringBuffer sbuf = new StringBuffer(128);
     sbuf.append(event.getTimeStamp() - event.getLoggerContextVO().getBirthTime());
     sbuf.append(" ");
     sbuf.append(event.getLevel());
diff --git a/logback-examples/src/main/java/chapters/layouts/MySampleLayout2.java b/logback-examples/src/main/java/chapters/layouts/MySampleLayout2.java
index 05248c9..26a25ba 100644
--- a/logback-examples/src/main/java/chapters/layouts/MySampleLayout2.java
+++ b/logback-examples/src/main/java/chapters/layouts/MySampleLayout2.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -31,7 +31,7 @@ public class MySampleLayout2 extends LayoutBase<ILoggingEvent> {
   }
 
   public String doLayout(ILoggingEvent event) {
-    StringBuilder sbuf = new StringBuilder(128);
+    StringBuffer sbuf = new StringBuffer(128);
     if (prefix != null) {
       sbuf.append(prefix + ": ");
     }
diff --git a/logback-examples/src/main/java/chapters/layouts/PatternSample.java b/logback-examples/src/main/java/chapters/layouts/PatternSample.java
index 4b8127a..94016f7 100644
--- a/logback-examples/src/main/java/chapters/layouts/PatternSample.java
+++ b/logback-examples/src/main/java/chapters/layouts/PatternSample.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/layouts/SampleLogging.java b/logback-examples/src/main/java/chapters/layouts/SampleLogging.java
index 87f44e1..756bc86 100644
--- a/logback-examples/src/main/java/chapters/layouts/SampleLogging.java
+++ b/logback-examples/src/main/java/chapters/layouts/SampleLogging.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/layouts/TestException.java b/logback-examples/src/main/java/chapters/layouts/TestException.java
index f8abf1c..0231072 100644
--- a/logback-examples/src/main/java/chapters/layouts/TestException.java
+++ b/logback-examples/src/main/java/chapters/layouts/TestException.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/layouts/TrivialMain.java b/logback-examples/src/main/java/chapters/layouts/TrivialMain.java
index e8d1a80..c2960f4 100644
--- a/logback-examples/src/main/java/chapters/layouts/TrivialMain.java
+++ b/logback-examples/src/main/java/chapters/layouts/TrivialMain.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -39,8 +39,6 @@ public class TrivialMain {
     for (int i = 0; i < 6; i++) {
       if (i % 5 == 0) {
         logger.warn("a warning message " + i);
-      } else if(i % 3 == 0) {
-        logger.info("hello world number" + i);
       } else {
         logger.debug("hello world number" + i);
       }
diff --git a/logback-examples/src/main/java/chapters/layouts/highlighted.xml b/logback-examples/src/main/java/chapters/layouts/highlighted.xml
deleted file mode 100644
index a1a9859..0000000
--- a/logback-examples/src/main/java/chapters/layouts/highlighted.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<configuration debug="true">
-  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-    <!-- On Windows machines setting withJansi to true enables ANSI
-         color code interpretation by the Jansi library. This requires
-         org.fusesource.jansi:jansi:1.9 on the class path.  Note that
-         Unix-based operating systems such as Linux and Mac OS X
-         support ANSI color codes by default.  codes.-->
-    <withJansi>true</withJansi>
-    <encoder>
-      <pattern>%date [%thread] %highlight(%-5level) %cyan(%-15logger{15}) %X - %msg %n</pattern>
-    </encoder>
-  </appender>
-  <root level="DEBUG">
-    <appender-ref ref="STDOUT" />
-  </root>
-</configuration>
\ No newline at end of file
diff --git a/logback-examples/src/main/java/chapters/layouts/mySampleConverterConfig.xml b/logback-examples/src/main/java/chapters/layouts/mySampleConverterConfig.xml
index b6ee515..c380b9a 100644
--- a/logback-examples/src/main/java/chapters/layouts/mySampleConverterConfig.xml
+++ b/logback-examples/src/main/java/chapters/layouts/mySampleConverterConfig.xml
@@ -1,11 +1,11 @@
 <configuration>
 
-	<conversionRule conversionWord="nano" 
+	<conversionRule conversionWord="sample" 
                   converterClass="chapters.layouts.MySampleConverter" />
 	
   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
     <encoder>
-      <pattern>%-6nano [%thread] %level - %msg%n</pattern>
+      <pattern>%-4relative [%thread] %sample - %msg%n</pattern>
     </encoder>
   </appender>
 
diff --git a/logback-examples/src/main/java/chapters/mdc/NumberCruncher.java b/logback-examples/src/main/java/chapters/mdc/NumberCruncher.java
index 8f18b5b..09789fc 100644
--- a/logback-examples/src/main/java/chapters/mdc/NumberCruncher.java
+++ b/logback-examples/src/main/java/chapters/mdc/NumberCruncher.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/mdc/NumberCruncherClient.java b/logback-examples/src/main/java/chapters/mdc/NumberCruncherClient.java
index d929858..b8911fa 100644
--- a/logback-examples/src/main/java/chapters/mdc/NumberCruncherClient.java
+++ b/logback-examples/src/main/java/chapters/mdc/NumberCruncherClient.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/mdc/NumberCruncherServer.java b/logback-examples/src/main/java/chapters/mdc/NumberCruncherServer.java
index e763116..aabde36 100644
--- a/logback-examples/src/main/java/chapters/mdc/NumberCruncherServer.java
+++ b/logback-examples/src/main/java/chapters/mdc/NumberCruncherServer.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/mdc/SimpleMDC.java b/logback-examples/src/main/java/chapters/mdc/SimpleMDC.java
index 574ac6e..7b5bb0e 100644
--- a/logback-examples/src/main/java/chapters/mdc/SimpleMDC.java
+++ b/logback-examples/src/main/java/chapters/mdc/SimpleMDC.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/mdc/UserServletFilter.java b/logback-examples/src/main/java/chapters/mdc/UserServletFilter.java
index 2bb242e..78c5e85 100644
--- a/logback-examples/src/main/java/chapters/mdc/UserServletFilter.java
+++ b/logback-examples/src/main/java/chapters/mdc/UserServletFilter.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/migrationFromLog4j/Log4jMain.java b/logback-examples/src/main/java/chapters/migrationFromLog4j/Log4jMain.java
index 9919c48..7c855b3 100644
--- a/logback-examples/src/main/java/chapters/migrationFromLog4j/Log4jMain.java
+++ b/logback-examples/src/main/java/chapters/migrationFromLog4j/Log4jMain.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/migrationFromLog4j/LogbackMain.java b/logback-examples/src/main/java/chapters/migrationFromLog4j/LogbackMain.java
index 55ced34..ac4e57f 100644
--- a/logback-examples/src/main/java/chapters/migrationFromLog4j/LogbackMain.java
+++ b/logback-examples/src/main/java/chapters/migrationFromLog4j/LogbackMain.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/migrationFromLog4j/TrivialLog4jAppender.java b/logback-examples/src/main/java/chapters/migrationFromLog4j/TrivialLog4jAppender.java
index ddf294d..bd256f3 100644
--- a/logback-examples/src/main/java/chapters/migrationFromLog4j/TrivialLog4jAppender.java
+++ b/logback-examples/src/main/java/chapters/migrationFromLog4j/TrivialLog4jAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/migrationFromLog4j/TrivialLog4jLayout.java b/logback-examples/src/main/java/chapters/migrationFromLog4j/TrivialLog4jLayout.java
index 52024f0..b86bd14 100644
--- a/logback-examples/src/main/java/chapters/migrationFromLog4j/TrivialLog4jLayout.java
+++ b/logback-examples/src/main/java/chapters/migrationFromLog4j/TrivialLog4jLayout.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/migrationFromLog4j/TrivialLogbackAppender.java b/logback-examples/src/main/java/chapters/migrationFromLog4j/TrivialLogbackAppender.java
index af37abf..2ea6cd6 100644
--- a/logback-examples/src/main/java/chapters/migrationFromLog4j/TrivialLogbackAppender.java
+++ b/logback-examples/src/main/java/chapters/migrationFromLog4j/TrivialLogbackAppender.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/migrationFromLog4j/TrivialLogbackLayout.java b/logback-examples/src/main/java/chapters/migrationFromLog4j/TrivialLogbackLayout.java
index 9a000b9..71441d6 100644
--- a/logback-examples/src/main/java/chapters/migrationFromLog4j/TrivialLogbackLayout.java
+++ b/logback-examples/src/main/java/chapters/migrationFromLog4j/TrivialLogbackLayout.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/onJoran/SimpleConfigurator.java b/logback-examples/src/main/java/chapters/onJoran/SimpleConfigurator.java
index bf1b4db..e849215 100644
--- a/logback-examples/src/main/java/chapters/onJoran/SimpleConfigurator.java
+++ b/logback-examples/src/main/java/chapters/onJoran/SimpleConfigurator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -19,9 +19,8 @@ import java.util.Map;
 import ch.qos.logback.core.joran.GenericConfigurator;
 import ch.qos.logback.core.joran.action.Action;
 import ch.qos.logback.core.joran.action.ImplicitAction;
-import ch.qos.logback.core.joran.spi.ElementPath;
 import ch.qos.logback.core.joran.spi.Interpreter;
-import ch.qos.logback.core.joran.spi.ElementSelector;
+import ch.qos.logback.core.joran.spi.Pattern;
 import ch.qos.logback.core.joran.spi.RuleStore;
 
 /**
@@ -32,23 +31,23 @@ import ch.qos.logback.core.joran.spi.RuleStore;
  */
 public class SimpleConfigurator extends GenericConfigurator {
 
-  final Map<ElementSelector, Action> ruleMap;
+  final Map<Pattern, Action> ruleMap;
   final List<ImplicitAction> iaList;
 
-  public SimpleConfigurator(Map<ElementSelector, Action> ruleMap) {
+  public SimpleConfigurator(Map<Pattern, Action> ruleMap) {
     this(ruleMap, null);
   }
 
-  public SimpleConfigurator(Map<ElementSelector, Action> ruleMap, List<ImplicitAction> iaList) {
+  public SimpleConfigurator(Map<Pattern, Action> ruleMap, List<ImplicitAction> iaList) {
     this.ruleMap = ruleMap;
     this.iaList = iaList;
   }
 
   @Override
   protected void addInstanceRules(RuleStore rs) {
-    for (ElementSelector elementSelector : ruleMap.keySet()) {
-      Action action = ruleMap.get(elementSelector);
-      rs.addRule(elementSelector, action);
+    for (Pattern pattern : ruleMap.keySet()) {
+      Action action = ruleMap.get(pattern);
+      rs.addRule(pattern, action);
     }
   }
 
@@ -61,4 +60,5 @@ public class SimpleConfigurator extends GenericConfigurator {
       interpreter.addImplicitAction(ia);
     }
   }
+
 }
diff --git a/logback-examples/src/main/java/chapters/onJoran/calculator/AddAction.java b/logback-examples/src/main/java/chapters/onJoran/calculator/AddAction.java
index d098ecd..fd2509a 100644
--- a/logback-examples/src/main/java/chapters/onJoran/calculator/AddAction.java
+++ b/logback-examples/src/main/java/chapters/onJoran/calculator/AddAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/onJoran/calculator/Calculator1.java b/logback-examples/src/main/java/chapters/onJoran/calculator/Calculator1.java
index f632552..c059b46 100644
--- a/logback-examples/src/main/java/chapters/onJoran/calculator/Calculator1.java
+++ b/logback-examples/src/main/java/chapters/onJoran/calculator/Calculator1.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -19,7 +19,7 @@ import java.util.Map;
 import ch.qos.logback.core.Context;
 import ch.qos.logback.core.ContextBase;
 import ch.qos.logback.core.joran.action.Action;
-import ch.qos.logback.core.joran.spi.ElementSelector;
+import ch.qos.logback.core.joran.spi.Pattern;
 import ch.qos.logback.core.util.StatusPrinter;
 import chapters.onJoran.SimpleConfigurator;
 
@@ -34,15 +34,15 @@ public class Calculator1 {
   public static void main(String[] args) throws Exception {
     Context context = new ContextBase();
 
-    Map<ElementSelector, Action> ruleMap = new HashMap<ElementSelector, Action>();
+    Map<Pattern, Action> ruleMap = new HashMap<Pattern, Action>();
 
     // Associate "/computation" pattern with ComputationAction1
-    ruleMap.put(new ElementSelector("/computation"), new ComputationAction1());
+    ruleMap.put(new Pattern("/computation"), new ComputationAction1());
 
     // Other associations
-    ruleMap.put(new ElementSelector("/computation/literal"), new LiteralAction());
-    ruleMap.put(new ElementSelector("/computation/add"), new AddAction());
-    ruleMap.put(new ElementSelector("/computation/multiply"), new MultiplyAction());
+    ruleMap.put(new Pattern("/computation/literal"), new LiteralAction());
+    ruleMap.put(new Pattern("/computation/add"), new AddAction());
+    ruleMap.put(new Pattern("/computation/multiply"), new MultiplyAction());
 
     SimpleConfigurator simpleConfigurator = new SimpleConfigurator(ruleMap);
     // link the configurator with its context
diff --git a/logback-examples/src/main/java/chapters/onJoran/calculator/Calculator2.java b/logback-examples/src/main/java/chapters/onJoran/calculator/Calculator2.java
index b1ef676..799955b 100644
--- a/logback-examples/src/main/java/chapters/onJoran/calculator/Calculator2.java
+++ b/logback-examples/src/main/java/chapters/onJoran/calculator/Calculator2.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -19,8 +19,8 @@ import java.util.Map;
 import ch.qos.logback.core.Context;
 import ch.qos.logback.core.ContextBase;
 import ch.qos.logback.core.joran.action.Action;
-import ch.qos.logback.core.joran.spi.ElementSelector;
 import ch.qos.logback.core.joran.spi.JoranException;
+import ch.qos.logback.core.joran.spi.Pattern;
 import ch.qos.logback.core.util.StatusPrinter;
 import chapters.onJoran.SimpleConfigurator;
 
@@ -38,16 +38,16 @@ import chapters.onJoran.SimpleConfigurator;
  */
 public class Calculator2 {
   public static void main(String[] args) throws Exception {
-    Map<ElementSelector, Action> ruleMap = new HashMap<ElementSelector, Action>();
+    Map<Pattern, Action> ruleMap = new HashMap<Pattern, Action>();
    
     
     // Note the wild card character '*', in the paterns, signifying any level 
     // of nesting.
-    ruleMap.put(new ElementSelector("*/computation"), new ComputationAction2());
+    ruleMap.put(new Pattern("*/computation"), new ComputationAction2());
 
-    ruleMap.put(new ElementSelector("*/computation/literal"), new LiteralAction());
-    ruleMap.put(new ElementSelector("*/computation/add"), new AddAction());
-    ruleMap.put(new ElementSelector("*/computation/multiply"), new MultiplyAction());
+    ruleMap.put(new Pattern("*/computation/literal"), new LiteralAction());
+    ruleMap.put(new Pattern("*/computation/add"), new AddAction());
+    ruleMap.put(new Pattern("*/computation/multiply"), new MultiplyAction());
     
     Context context = new ContextBase();
     SimpleConfigurator simpleConfigurator = new SimpleConfigurator(ruleMap);
diff --git a/logback-examples/src/main/java/chapters/onJoran/calculator/ComputationAction1.java b/logback-examples/src/main/java/chapters/onJoran/calculator/ComputationAction1.java
index ed040fc..dbf1df5 100644
--- a/logback-examples/src/main/java/chapters/onJoran/calculator/ComputationAction1.java
+++ b/logback-examples/src/main/java/chapters/onJoran/calculator/ComputationAction1.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -31,7 +31,7 @@ import ch.qos.logback.core.util.OptionHelper;
  * @author Ceki Gülcü
  */
 public class ComputationAction1 extends Action {
-  public static final String NAME_ATR = "name";
+  public static String NAME_ATR = "name";
 
   String nameStr;
 
diff --git a/logback-examples/src/main/java/chapters/onJoran/calculator/ComputationAction2.java b/logback-examples/src/main/java/chapters/onJoran/calculator/ComputationAction2.java
index 150b10a..41d3b69 100644
--- a/logback-examples/src/main/java/chapters/onJoran/calculator/ComputationAction2.java
+++ b/logback-examples/src/main/java/chapters/onJoran/calculator/ComputationAction2.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -59,7 +59,7 @@ import ch.qos.logback.core.util.OptionHelper;
  * @author Ceki Gülcü
  */
 public class ComputationAction2 extends Action {
-  public static final String NAME_ATR = "name";
+  public static String NAME_ATR = "name";
 
   Stack<String> nameStrStack = new Stack<String>();
   
diff --git a/logback-examples/src/main/java/chapters/onJoran/calculator/LiteralAction.java b/logback-examples/src/main/java/chapters/onJoran/calculator/LiteralAction.java
index f33627f..150ff44 100644
--- a/logback-examples/src/main/java/chapters/onJoran/calculator/LiteralAction.java
+++ b/logback-examples/src/main/java/chapters/onJoran/calculator/LiteralAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -29,7 +29,7 @@ import ch.qos.logback.core.util.OptionHelper;
  * @author Ceki Gülcü
  */
 public class LiteralAction extends Action {
-  public static final String VALUE_ATR = "value";
+  public static String VALUE_ATR = "value";
 
   public void begin(InterpretationContext ic, String name, Attributes attributes) {
     String valueStr = attributes.getValue(VALUE_ATR);
diff --git a/logback-examples/src/main/java/chapters/onJoran/calculator/MultiplyAction.java b/logback-examples/src/main/java/chapters/onJoran/calculator/MultiplyAction.java
index 4ed7624..d1ac114 100644
--- a/logback-examples/src/main/java/chapters/onJoran/calculator/MultiplyAction.java
+++ b/logback-examples/src/main/java/chapters/onJoran/calculator/MultiplyAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/onJoran/helloWorld/HelloWorld.java b/logback-examples/src/main/java/chapters/onJoran/helloWorld/HelloWorld.java
index 93fdb12..8653d22 100644
--- a/logback-examples/src/main/java/chapters/onJoran/helloWorld/HelloWorld.java
+++ b/logback-examples/src/main/java/chapters/onJoran/helloWorld/HelloWorld.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -19,7 +19,7 @@ import java.util.Map;
 import ch.qos.logback.core.Context;
 import ch.qos.logback.core.ContextBase;
 import ch.qos.logback.core.joran.action.Action;
-import ch.qos.logback.core.joran.spi.ElementSelector;
+import ch.qos.logback.core.joran.spi.Pattern;
 import ch.qos.logback.core.util.StatusPrinter;
 import chapters.onJoran.SimpleConfigurator;
 
@@ -31,10 +31,10 @@ import chapters.onJoran.SimpleConfigurator;
  */
 public class HelloWorld {
   public static void main(String[] args) throws Exception {
-    Map<ElementSelector, Action> ruleMap = new HashMap<ElementSelector, Action>();
+    Map<Pattern, Action> ruleMap = new HashMap<Pattern, Action>();
 
     // Associate "hello-world" pattern with HelloWorldAction
-    ruleMap.put(new ElementSelector("hello-world"), new HelloWorldAction());
+    ruleMap.put(new Pattern("hello-world"), new HelloWorldAction());
 
     // Joran needs to work within a context.
     Context context = new ContextBase();
diff --git a/logback-examples/src/main/java/chapters/onJoran/helloWorld/HelloWorldAction.java b/logback-examples/src/main/java/chapters/onJoran/helloWorld/HelloWorldAction.java
index 9ed9936..c687248 100644
--- a/logback-examples/src/main/java/chapters/onJoran/helloWorld/HelloWorldAction.java
+++ b/logback-examples/src/main/java/chapters/onJoran/helloWorld/HelloWorldAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/onJoran/implicit/NOPAction.java b/logback-examples/src/main/java/chapters/onJoran/implicit/NOPAction.java
index f531398..2a1188b 100644
--- a/logback-examples/src/main/java/chapters/onJoran/implicit/NOPAction.java
+++ b/logback-examples/src/main/java/chapters/onJoran/implicit/NOPAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
diff --git a/logback-examples/src/main/java/chapters/onJoran/implicit/PrintMe.java b/logback-examples/src/main/java/chapters/onJoran/implicit/PrintMe.java
index 09b887f..d31891b 100644
--- a/logback-examples/src/main/java/chapters/onJoran/implicit/PrintMe.java
+++ b/logback-examples/src/main/java/chapters/onJoran/implicit/PrintMe.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -22,7 +22,7 @@ import ch.qos.logback.core.Context;
 import ch.qos.logback.core.ContextBase;
 import ch.qos.logback.core.joran.action.Action;
 import ch.qos.logback.core.joran.action.ImplicitAction;
-import ch.qos.logback.core.joran.spi.ElementSelector;
+import ch.qos.logback.core.joran.spi.Pattern;
 import ch.qos.logback.core.util.StatusPrinter;
 import chapters.onJoran.SimpleConfigurator;
 
@@ -40,10 +40,10 @@ public class PrintMe {
   public static void main(String[] args) throws Exception {
     Context context = new ContextBase();
 
-    Map<ElementSelector, Action> ruleMap = new HashMap<ElementSelector, Action>();
+    Map<Pattern, Action> ruleMap = new HashMap<Pattern, Action>();
 
     // we start with the rule for the top-most (root) element
-    ruleMap.put(new ElementSelector("*/foo"), new NOPAction());
+    ruleMap.put(new Pattern("*/foo"), new NOPAction());
 
     // Add an implicit action. 
     List<ImplicitAction> iaList = new ArrayList<ImplicitAction>();
diff --git a/logback-examples/src/main/java/chapters/onJoran/implicit/PrintMeImplicitAction.java b/logback-examples/src/main/java/chapters/onJoran/implicit/PrintMeImplicitAction.java
index 6d096c0..c4ca389 100644
--- a/logback-examples/src/main/java/chapters/onJoran/implicit/PrintMeImplicitAction.java
+++ b/logback-examples/src/main/java/chapters/onJoran/implicit/PrintMeImplicitAction.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -13,11 +13,11 @@
  */
 package chapters.onJoran.implicit;
 
-import ch.qos.logback.core.joran.spi.ElementPath;
 import org.xml.sax.Attributes;
 
 import ch.qos.logback.core.joran.action.ImplicitAction;
 import ch.qos.logback.core.joran.spi.InterpretationContext;
+import ch.qos.logback.core.joran.spi.Pattern;
 
 /**
  * 
@@ -28,7 +28,7 @@ import ch.qos.logback.core.joran.spi.InterpretationContext;
  */
 public class PrintMeImplicitAction extends ImplicitAction {
 
-  public boolean isApplicable(ElementPath elementPath, Attributes attributes,
+  public boolean isApplicable(Pattern pattern, Attributes attributes,
       InterpretationContext ec) {
     String printmeStr = attributes.getValue("printme");
 
diff --git a/logback-examples/src/main/java/chapters/onJoran/newRule/NewRuleCalculator.java b/logback-examples/src/main/java/chapters/onJoran/newRule/NewRuleCalculator.java
index e69d372..5f49669 100644
--- a/logback-examples/src/main/java/chapters/onJoran/newRule/NewRuleCalculator.java
+++ b/logback-examples/src/main/java/chapters/onJoran/newRule/NewRuleCalculator.java
@@ -1,6 +1,6 @@
 /**
  * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+ * Copyright (C) 1999-2011, QOS.ch. All rights reserved.
  *
  * This program and the accompanying materials are dual-licensed under
  * either the terms of the Eclipse Public License v1.0 as published by
@@ -20,7 +20,7 @@ import ch.qos.logback.core.Context;
 import ch.qos.logback.core.ContextBase;
 import ch.qos.logback.core.joran.action.Action;
 import ch.qos.logback.core.joran.action.NewRuleAction;
-import ch.qos.logback.core.joran.spi.ElementSelector;
+import ch.qos.logback.core.joran.spi.Pattern;
 import ch.qos.logback.core.util.StatusPrinter;
 import chapters.onJoran.SimpleConfigurator;
 import chapters.onJoran.calculator.ComputationAction1;
@@ -39,16 +39,16 @@ public class NewRuleCalculator {
 
     Context context = new ContextBase();
 
-    Map<ElementSelector, Action> ruleMap = new HashMap<ElementSelector, Action>();
+    Map<Pattern, Action> ruleMap = new HashMap<Pattern, Action>();
 
     // we start with the rule for the top-most (root) element
-    ruleMap.put(new ElementSelector("*/computation"), new ComputationAction1());
+    ruleMap.put(new Pattern("*/computation"), new ComputationAction1());
 
     // Associate "/new-rule" pattern with NewRuleAction from the
     // org.apache.joran.action package.
     // 
     // We will let the XML file to teach the Joran interpreter about new rules
-    ruleMap.put(new ElementSelector("/computation/newRule"), new NewRuleAction());
+    ruleMap.put(new Pattern("/computation/new-rule"), new NewRuleAction());
 
     SimpleConfigurator simpleConfigurator = new SimpleConfigurator(ruleMap);
     // link the configurator with its context
diff --git a/logback-examples/src/main/java/chapters/onJoran/newRule/newRule.xml b/logback-examples/src/main/java/chapters/onJoran/newRule/new-rule.xml
similarity index 100%
rename from logback-examples/src/main/java/chapters/onJoran/newRule/newRule.xml
rename to logback-examples/src/main/java/chapters/onJoran/newRule/new-rule.xml
diff --git a/logback-examples/src/main/java/chapters/receivers/socket/AppenderExample.java b/logback-examples/src/main/java/chapters/receivers/socket/AppenderExample.java
deleted file mode 100644
index 2ebb6ac..0000000
--- a/logback-examples/src/main/java/chapters/receivers/socket/AppenderExample.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package chapters.receivers.socket;
-
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.joran.JoranConfigurator;
-
-/**
- * This application loads a configuration containing some form of 
- * socket appender and then allows the user to enter messages
- * which will be relayed to remote clients via the appender.
- */
-public class AppenderExample {
-
-  static void usage(String msg) {
-    System.err.println(msg);
-    System.err.println("Usage: java " + AppenderExample.class.getName() +
-      " configFile\n" +
-      "   configFile a logback configuration file" +
-      "   in XML format.");
-    System.exit(1);
-  }
-
-  static public void main(String[] args) throws Exception {
-    if (args.length != 1) {
-      usage("Wrong number of arguments.");
-    }
-
-    String configFile = args[0];
-
-    if (configFile.endsWith(".xml")) {
-      LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
-      lc.reset();
-      JoranConfigurator configurator = new JoranConfigurator();
-      configurator.setContext(lc);
-      configurator.doConfigure(configFile);
-    }
-
-    Logger logger = LoggerFactory.getLogger(AppenderExample.class);
-
-    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
-
-    while (true) {
-      System.out.println(
-        "Type a message to send to remote clients. Type 'q' to quit.");
-
-      String s = reader.readLine();
-
-      if (s.equals("q")) {
-        break;
-      } else {
-        logger.debug(s);
-      }
-    }
-    
-    ((LoggerContext) LoggerFactory.getILoggerFactory()).stop();
-  }
-
-}
diff --git a/logback-examples/src/main/java/chapters/receivers/socket/ReceiverExample.java b/logback-examples/src/main/java/chapters/receivers/socket/ReceiverExample.java
deleted file mode 100644
index 84c1dad..0000000
--- a/logback-examples/src/main/java/chapters/receivers/socket/ReceiverExample.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2013, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- *   or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package chapters.receivers.socket;
-
-import org.slf4j.LoggerFactory;
-
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.joran.JoranConfigurator;
-
-/**
- * This application loads a configuration containing a 
- * receiver component and logs events received from the remote
- * appender according to the local configuration.
- */
-public class ReceiverExample {
-
-  static void usage(String msg) {
-    System.err.println(msg);
-    System.err.println("Usage: java " + ReceiverExample.class.getName() +
-      " configFile\n" +
-      "   configFile a logback configuration file" +
-      "   in XML format.");
-    System.exit(1);
-  }
-
-  static public void main(String[] args) throws Exception {
-    if (args.length != 1) {
-      usage("Wrong number of arguments.");
-    }
-
-    String configFile = args[0];
-
-    if (configFile.endsWith(".xml")) {
-      LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
-      lc.reset();
-      JoranConfigurator configurator = new JoranConfigurator();
-      configurator.setContext(lc);
-      configurator.doConfigure(configFile);
-    }
-
-    Thread.sleep(Long.MAX_VALUE);
-  }
-
-}
diff --git a/logback-examples/src/main/java/chapters/receivers/socket/appender1.xml b/logback-examples/src/main/java/chapters/receivers/socket/appender1.xml
deleted file mode 100644
index 7ac3121..0000000
--- a/logback-examples/src/main/java/chapters/receivers/socket/appender1.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<!-- ==================================================================== -->
-<!-- Sample SocketAppender configuration.                                 -->
-<!-- ==================================================================== -->
-
-<configuration debug="true">
-	  
-  <appender name="SERVER" class="ch.qos.logback.classic.net.SocketAppender">
-    <remoteHost>${host}</remoteHost>
-    <port>${port}</port>
-    <reconnectionDelay>10000</reconnectionDelay>
-  </appender>
-
-  <root level="debug">
-    <appender-ref ref="SERVER" />
-  </root>  
-
-</configuration>
-
-
-
diff --git a/logback-examples/src/main/java/chapters/receivers/socket/appender2.xml b/logback-examples/src/main/java/chapters/receivers/socket/appender2.xml
deleted file mode 100644
index 5cf9bb1..0000000
--- a/logback-examples/src/main/java/chapters/receivers/socket/appender2.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<!-- ==================================================================== -->
-<!-- Sample SSLSocketAppender configuration.                              -->
-<!-- ==================================================================== -->
-
-<configuration debug="true">
-	  
-  <appender name="SERVER" class="ch.qos.logback.classic.net.SSLSocketAppender">
-    <remoteHost>${host}</remoteHost>
-    <port>${port}</port>
-    <reconnectionDelay>10000</reconnectionDelay>
-    <ssl>
-      <trustStore>
-        <location>${truststore}</location>
-        <password>${password}</password>
-      </trustStore>
-    </ssl>
-  </appender>
-
-  <root level="debug">
-    <appender-ref ref="SERVER" />
-  </root>  
-
-</configuration>
-
-
-
diff --git a/logback-examples/src/main/java/chapters/receivers/socket/appender3.xml b/logback-examples/src/main/java/chapters/receivers/socket/appender3.xml
deleted file mode 100644
index 8fcdb69..0000000
--- a/logback-examples/src/main/java/chapters/receivers/socket/appender3.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<!-- ==================================================================== -->
-<!-- Sample ServerSocketAppender configuration.                           -->
-<!-- ==================================================================== -->
-
-<configuration debug="true">
-	  
-  <appender name="SERVER" 
-    class="ch.qos.logback.classic.net.server.ServerSocketAppender">
-    <port>${port}</port>
-  </appender>
-
-  <root level="debug">
-    <appender-ref ref="SERVER" />
-  </root>  
-
-</configuration>
-
-
-
diff --git a/logback-examples/src/main/java/chapters/receivers/socket/appender4.xml b/logback-examples/src/main/java/chapters/receivers/socket/appender4.xml
deleted file mode 100644
index 5c7318f..0000000
--- a/logback-examples/src/main/java/chapters/receivers/socket/appender4.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<!-- ==================================================================== -->
-<!-- Sample SSLServerSocketAppender configuration.                        -->
-<!-- ==================================================================== -->
-
-<configuration debug="true">
-	  
-  <appender name="SERVER" 
-    class="ch.qos.logback.classic.net.server.SSLServerSocketAppender">
-    <port>${port}</port>
-    <ssl>
-      <keyStore>
-        <location>${keystore}</location>
-        <password>${password}</password>
-      </keyStore>
-    </ssl>
-  </appender>
-
-  <root level="debug">
-    <appender-ref ref="SERVER" />
-  </root>  
-
-</configuration>
-
-
-
diff --git a/logback-examples/src/main/java/chapters/receivers/socket/receiver1.xml b/logback-examples/src/main/java/chapters/receivers/socket/receiver1.xml
deleted file mode 100644
index aff9f96..0000000
--- a/logback-examples/src/main/java/chapters/receivers/socket/receiver1.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<!-- ==================================================================== -->
-<!-- Sample ServerSocketReceiver configuration.                           -->
-<!-- ==================================================================== -->
-
-<configuration debug="true">
-  
-  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
-    <encoder>
-      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
-    </encoder>
-  </appender>
-  
-  <root level="DEBUG">
-    <appender-ref ref="CONSOLE" />
-  </root>
-
-  <receiver class="ch.qos.logback.classic.net.server.ServerSocketReceiver">
-    <port>${port}</port>
-  </receiver>
-  
-</configuration>
-
-
-
diff --git a/logback-examples/src/main/java/chapters/receivers/socket/receiver2.xml b/logback-examples/src/main/java/chapters/receivers/socket/receiver2.xml
deleted file mode 100644
index 9891d50..0000000
--- a/logback-examples/src/main/java/chapters/receivers/socket/receiver2.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<!-- ==================================================================== -->
-<!-- Sample SSLServerSocketReceiver configuration.                        -->
-<!-- ==================================================================== -->
-
-<configuration debug="true">
-  
-  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
-    <encoder>
-      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
-    </encoder>
-  </appender>
-  
-  <root level="DEBUG">
-    <appender-ref ref="CONSOLE" />
-  </root>
-
-  <receiver class="ch.qos.logback.classic.net.server.SSLServerSocketReceiver">
-    <port>${port}</port>
-    <ssl>
-      <keyStore>
-        <location>${keystore}</location>
-        <password>${password}</password>
-      </keyStore>
-    </ssl>
-  </receiver>
-  
-</configuration>
-
-
-
diff --git a/logback-examples/src/main/java/chapters/receivers/socket/receiver3.xml b/logback-examples/src/main/java/chapters/receivers/socket/receiver3.xml
deleted file mode 100644
index 00db540..0000000
--- a/logback-examples/src/main/java/chapters/receivers/socket/receiver3.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<!-- ==================================================================== -->
-<!-- Sample SocketReceiver configuration.                                 -->
-<!-- ==================================================================== -->
-
-<configuration debug="true">
-  
-  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
-    <encoder>
-      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
-    </encoder>
-  </appender>
-  
-  <root level="DEBUG">
-    <appender-ref ref="CONSOLE" />
-  </root>
-
-  <receiver class="ch.qos.logback.classic.net.SocketReceiver">
-    <remoteHost>${host}</remoteHost>
-    <port>${port}</port>
-    <reconnectionDelay>10000</reconnectionDelay>
-  </receiver>
-  
-</configuration>
-
-
-
diff --git a/logback-examples/src/main/java/chapters/receivers/socket/receiver4.xml b/logback-examples/src/main/java/chapters/receivers/socket/receiver4.xml
deleted file mode 100644
index b2955a8..0000000
--- a/logback-examples/src/main/java/chapters/receivers/socket/receiver4.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<!-- ==================================================================== -->
-<!-- Sample SSLSocketReceiver configuration.                              -->
-<!-- ==================================================================== -->
-
-<configuration debug="true">
-  
-  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
-    <encoder>
-      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
-    </encoder>
-  </appender>
-  
-  <root level="DEBUG">
-    <appender-ref ref="CONSOLE" />
-  </root>
-
-  <receiver class="ch.qos.logback.classic.net.SSLSocketReceiver">
-    <remoteHost>${host}</remoteHost>
-    <port>${port}</port>
-    <reconnectionDelay>10000</reconnectionDelay>
-    <ssl>
-      <trustStore>
-        <location>${truststore}</location>
-        <password>${password}</password>
-      </trustStore>
-    </ssl>
-  </receiver>
-  
-</configuration>
-
-
-
diff --git a/logback-site/pom.xml b/logback-site/pom.xml
index 85d5181..ffcc8a7 100644
--- a/logback-site/pom.xml
+++ b/logback-site/pom.xml
@@ -5,7 +5,7 @@
   <parent>
     <groupId>ch.qos.logback</groupId>
     <artifactId>logback-parent</artifactId>
-    <version>1.1.2</version>
+    <version>1.0.4</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
diff --git a/logback-site/src/site/images.src/serverSocketReceiver.odg b/logback-site/src/site/images.src/serverSocketReceiver.odg
deleted file mode 100644
index bb7fcd3..0000000
Binary files a/logback-site/src/site/images.src/serverSocketReceiver.odg and /dev/null differ
diff --git a/logback-site/src/site/images.src/socketReceiver.odg b/logback-site/src/site/images.src/socketReceiver.odg
deleted file mode 100644
index 9b7dffd..0000000
Binary files a/logback-site/src/site/images.src/socketReceiver.odg and /dev/null differ
diff --git a/logback-site/src/site/pages/.htaccess b/logback-site/src/site/pages/.htaccess
index 5280beb..3e59922 100644
--- a/logback-site/src/site/pages/.htaccess
+++ b/logback-site/src/site/pages/.htaccess
@@ -1,3 +1,2 @@
-Redirect permanent /jmxConfig.html http://logback.qos.ch/manual/jmxConfig.html
-Redirect permanent /joran.html http://logback.qos.ch/manual/onJoran.html
-Redirect permanent /consolePlugin.html http://logback.qos.ch/beagle/
\ No newline at end of file
+Redirect jmxConfig.html http://logback.qos.ch/manual/jmxConfig.html
+Redirect joran.html http://logback.qos.ch/manual/onJoran.html
\ No newline at end of file
diff --git a/logback-site/src/site/pages/access.html b/logback-site/src/site/pages/access.html
index 57afaf8..3cbd655 100644
--- a/logback-site/src/site/pages/access.html
+++ b/logback-site/src/site/pages/access.html
@@ -317,13 +317,13 @@
 <pattern>clf</pattern></pre>
 
   <p>The so called "combined" format is also widely recognized. It is
-  defined as the '%h %l %u [%t] "%r" %s %b "%i{Referer}"
+  defined as the '%h %l %u %t "%r" %s %b "%i{Referer}"
   "%i{User-Agent}"' pattern. As a facilitator, you can use the
   "combined" as a shorthand. Thus, the following directive
   </p>
 
   <pre class="prettyprint source"><encoder>
-  <pattern>%h %l %u [%t] "%r" %s %b "%i{Referer}" "%i{User-Agent}"</pattern>
+  <pattern>%h %l %u %t "%r" %s %b "%i{Referer}" "%i{User-Agent}"</pattern>
 </encoder></pre>
 
   <p>is equivalent to:</p>
diff --git a/logback-site/src/site/pages/beagle/index.html b/logback-site/src/site/pages/beagle/index.html
deleted file mode 100644
index e88e254..0000000
--- a/logback-site/src/site/pages/beagle/index.html
+++ /dev/null
@@ -1,193 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
-    <title>Logback-beagle</title>
-    <link rel="stylesheet" type="text/css" href="../css/common.css" />
-    <link rel="stylesheet" type="text/css" href="../css/screen.css" media="screen" />
-    <link rel="stylesheet" type="text/css" href="../css/_print.css" media="print" />
-    <link rel="stylesheet" type="text/css" href="../css/prettify.css" media="screen" />
-    
-  </head>
-  <body onload="prettyPrint(); decorate();">
-    <script type="text/javascript">prefix='../';</script>
-    <script type="text/javascript" src="../js/prettify.js"></script>
-    <script type="text/javascript" src="../templates/header.js"></script>
-    <script type="text/javascript" src="../js/dsl.js"></script>
-    <script type="text/javascript" src="../js/jquery-min.js"></script>
-    <script type="text/javascript" src="../js/decorator.js"></script>
-
-    <div id="left">
-      <noscript>Please turn on Javascript to view this menu</noscript>
-      <script src="../templates/left.js" type="text/javascript"></script>
-    </div>
-
-    <div id="content">
-
-    <img style="float:left; margin-right: 1em;" src="images/sailing-ship-128x128.png" alt=""/>             
-      <h1>Logback-beagle</h1>
-	
-
-      <script src="../templates/creative.js" type="text/javascript"></script>
-
-
-
-
-
-		<h2 class="doAnchor">Logback-beagle: an Eclipse plug-in for
-		viewing logs</h2>
-
-
-    <p>During the development process, it is common for developers to
-    print logging events on the console. Typically, the developer will
-    also customize the format of the log output by setting an
-    appropriate layout pattern.  Logback-beagle is intended as a
-    replacement for viewing logs via the console. It offers several
-    advantages over the plain-old console:
-    </p>
-    
-    <ul>
-
-      <li>Events of level WARN and ERROR are marked by an orange flag
-      and respectively a red flag.</li>
-
-      <li>Quickly jump to the class and line where a given logging
-      request originated
-      </li>
-
-      <li>Easly view and jump to the callers of any log statement upto
-      eight levels deep</li>
-  
-      <li>Change the output format on-the-fly</li>
-
-      <li>quickly filter-out events by setting the level of existing
-      loggers</li>
-
-      <li>Measure the time elapsed between any two lines of log</li>
-    </ul>
-
-
-    <h2 class="doAnchor">Plug-in Installation</h2>
-
-    <p>The logback-beagle plug-in requires the Nebula Grid plug-in
-    which must be installed first.</p>
-
-    <dl>
-      <dt>Step 1: Nebula Grid</dt>
-      
-      <dd>
-      <p>The Nebula Grid plug-in which can be installed from
-      <b>http://download.eclipse.org/technology/nebula/snapshot/</b>. Only
-      the "Nebula Grid Feature" needs to be installed.</p>
-      
-      <p><img src="images/nebulaFeature.png" alt=""/></p>
-      
-      </dd>
-
-      <dt>Step 2: Logbak-beagle</dt>
-      
-      <dd><p>The logback-beagle plug-in can be installed from
-      <b>http://logback.qos.ch/p2/</b>. You need to select "Logback",
-      "Logback Beagle" and "SLF4J" bundles for installation as shown
-      below.</p>
-
-      <p><img src="images/beagleFeature.png" alt=""/></p>
-      </dd>
-    </dl>
-        
-    
-    <p>Restarting Eclipse should load the plugin. To access the Beagle
-    View, either type A"lt-Shift-Q, Q" or select: <em>Window > Show
-    view > Other... </em>. You should see the <em>Beagle</em> view
-    nested in the <em>Logback</em> category. Selecting this view will
-    add it to your workspace. It shouls looks as follows:</p>
-
-    <p><img src="images/beagleView0.png" alt=""/></p>
-
-    <h3>Configuring the client (logback.xml)</h3>
-    
-    <p>A single additional configuration line in <em>logback.xml</em>
-    is sufficient to send log events from your application to
-    logback-beagle.
-    </p>
-    
-    <pre class="prettyprint source"><configuration debug="true">
-  <!-- sends logs to logback-beagle -->
-  <b><consolePlugin /></b>
-</configuration></pre>
-  
-	
-   <p>Under the hood, <code><consolePlugin></code> element creates
-   a <code>SocketAppender</code> which will send logging events to a
-   TCP socket on <code>localhost</code> port
-   <em>4321</em>. Logback-beagle launches the corresponding server
-   listening on this port on localhost.
-   </p>
-
-
-   <h2 class="doAnchor" name="using">Using logback-beagle</h2>
-
-   <p>Logback-beagle displays the events it receives in a table
-   according to the layout format chosen by the user. Here is a screen
-   shot of the Beagle View containing logging events.
-   </p>
-
-   <img src="images/beagleSample.png" alt=""/>
-
-   <p>Clicking on any log line will scroll-lock (freeze) the
-   view. Double clicking on that same line will release the scroll
-   lock (unfreeze) the view. You can also release the scroll lock by
-   clicking on <img src="images/play_doc.gif" alt="" style="display:
-   inline;"/>. This icon becomes active (clickable) when the view is
-   frozen.
-   </p>
-
-   <h3 class="doAnchor" name="using">Jump to caller/Expand caller data</h3>
-   
-   <p>Right-clicking on any line will reveal the following menu:</p>
-   
-   <p><img src="images/menu.png" alt=""/></p>
-
-   <p>Selecting "Jump to caller" will move the edit cursor to the file
-   and line number whence the logging statement issued.</p>
-
-   <p>Selecting "Expand caller data" will reveal the stack trace of
-   method calls upto eight levels deep. Here is a sample
-   screen-shot:</p>
-
-    <p><img src="images/callerData.png" alt=""/></p>
-
-    <p>Not only are the callers of the log statement revealed, it
-    becomes possible to jump to any of the listed callers. Right-click
-    on a caller line. A menu will appear. Select "Jump to caller" in
-    the menu to jump to the caller of your choice.
-    </p>
-
-    <p><img src="images/callerData-jump.png" alt=""/></p>
-
-    <p>Caller data can be collapsed by selecting "Collapse caller
-    data" from the said menu.</p>
-
-    <h2 class="doAnchor">Preferences</h2>
-    
-    <p>Logback-beagle preferences can be found under the "Beagle"
-    label nested under "Run/Debug" category. You can customize the
-    output pattern to best suit your preferences. Changes take effect
-    immediately.
-    </p>
-
-    <p><img src="images/preferences.png" alt=""/></p>
-
-
-    <p>You may also change the font type and size used for displaying
-    the log events via the Eclipse's preferences dialog as shown
-    below:</p>
-
-     <p><img src="images/font.png" alt=""/></p>
-    
-    <script src="templates/footer.js" type="text/javascript"></script>
-    </div>
-  </body>
-</html>
diff --git a/logback-site/src/site/pages/codes.html b/logback-site/src/site/pages/codes.html
index 36d0468..7aeabb4 100644
--- a/logback-site/src/site/pages/codes.html
+++ b/logback-site/src/site/pages/codes.html
@@ -10,23 +10,12 @@
     <link rel="stylesheet" type="text/css" href="css/screen.css" media="screen" />
     <link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
     <link rel="stylesheet" type="text/css" href="css/prettify.css" />
-    <style type="text/css">
-      h3.doAnchor {
-        border-top: 2px solid #888888;
-        /*color: #333;*/
-        padding-bottom: 1ex;
-        padding-top: 1ex;
-      }
-    </style>
   </head>
   
-  <body  onload="prettyPrint(); decorate();">
+  <body  onload="prettyPrint()">
     <script type="text/javascript" src="js/prettify.js"></script>
     <script type="text/javascript">prefix='';</script>
-    <script type="text/javascript" src="templates/header.js"></script>
-    <script type="text/javascript" src="js/jquery-min.js"></script>
-    <script type="text/javascript" src="js/decorator.js"></script>
-    
+    <script src="templates/header.js" type="text/javascript"></script>
 
   <div id="left">
     <script src="templates/left.js" type="text/javascript"></script>
@@ -36,9 +25,10 @@
   <h2><a name="top">Logback error messages and their meanings</a></h2>
   
 
-  <h3 class="doAnchor" name="null_CS">The contextSelector cannot be
-  null in <code>StaticLoggerBinder</code>.  
-  </h3>
+  <p><a name="null_CS" href="#null_CS"> The contextSelector cannot be
+  null in <code>StaticLoggerBinder</code>.
+  </a>
+  </p>
 
   <p>An <code>IllegalStateException</code> is thrown when no
   ContextSelector could be set for logback's
@@ -50,12 +40,14 @@
   <p>It should not happen when you are using the default or JNDI
   context selectors.
   </p>
-  
+  <hr/>
 
   <!-- =========================================================== -->
-  <h3 class="doAnchor" name="layoutInsteadOfEncoder">This appender no
-  longer admits a layout as a sub-component, set an encoder instead.
-  </h3>
+  <p>
+    <a name="layoutInsteadOfEncoder"
+    href="#layoutInsteadOfEncoder">This appender no longer admits a
+    layout as a sub-component, set an encoder instead.</a>
+  </p>
 
   <p>As of logback version 0.9.19, the <code>WriterAppender</code>
   class has been renamed as <code>OutputStreamAppender</code>, with
@@ -148,15 +140,16 @@
   layout instead of encoder) will continue to work unmodified.</b>
   </p>
 
-  
+  <hr/>
   
 
   <!-- =========================================================== -->
 
-  <h3 class="doAnchor" name="socket_no_host">No remote host or address
-  is set for <code>SocketAppender</code>
-    
-  </h3>
+  <p>
+    <a name="socket_no_host" href="#socket_no_host">No remote host or
+    address is set for <code>SocketAppender</code>
+    </a>
+  </p>
 
   <p>A remote host or address is mandatory for SocketAppender. </p>
   <p>You can specify the remote host in the configuration file
@@ -171,13 +164,13 @@
 </appender></pre>
 
 
-  
+  <hr />
 
-  <!-- ============================================================= -->
-
-  <h3 class="doAnchor" name="socket_no_port">No remote port is set for
-  <code>SocketAppender</code>    
-  </h3>
+  <p>
+    <a name="socket_no_port" href="#socket_no_port">No remote port is set for
+    <code>SocketAppender</code> 
+    </a>
+  </p>
     
   <p>A remote port is mandatory for SocketAppender.</p>
       
@@ -192,14 +185,13 @@
 </appender></pre>
 				
 
+  <hr />
 
   
-
-  <!-- ============================================================= -->
-
-  <h3 class="doAnchor" name="smtp_no_layout">No <code>Layout</code> is
-  set for SMTPAppender
-  </h3>
+  <p>
+    <a name="smtp_no_layout" href="#smtp_no_layout">
+      No <code>Layout</code> is set for SMTPAppender</a>
+  </p>
 
   <p>A <code>Layout</code> is mandatory for
   <code>SMTPAppender</code>. It allows SMTPAppender to format logging
@@ -225,13 +217,13 @@
   </p>
 
 
-  
+  <hr />
       
-  <!-- ============================================================= -->
-
-  <h3 class="doAnchor" name="sbtp_size_format">Specified number is not
-  in proper int form, or not expected format.    
-  </h3>
+  <p>
+    <a name="sbtp_size_format" href="#sbtp_size_format">Specified number is not in proper
+    int form, or not expected format.  
+    </a>
+  </p>
     
   <p>When you specify the MaxFileSize to be used by the
   SizeBasedRollingPolicy, logback expects a rather precise
@@ -246,15 +238,14 @@
       
   <p>Here are some correct values: 500KB, 15MB, 2GB.</p>
   
-  
+  <hr />
       
-  <!-- ============================================================= -->
-
-  <h3 class="doAnchor" name="rfa_no_tp">No
-  <code>TriggeringPolicy</code> was set for the
-  <code>RollingFileAppender</code>.
-    
-  </h3>
+  <p>
+    <a name="rfa_no_tp" href="#rfa_no_tp">No
+    <code>TriggeringPolicy</code> was set for the
+    <code>RollingFileAppender</code>.
+    </a>
+  </p>
     
   <p>The <code>RollingFileAppender</code> must be set up with a
   <code>TriggeringPolicy</code>. It permits the Appender to know when
@@ -283,13 +274,14 @@
   <code>RollingPolicy</code> at the same time.
   </p>
       
-  
+  <hr />
       
-  <!-- ============================================================= -->
 
-  <h3 class="doAnchor" name="rfa_no_rp">No <code>RollingPolicy</code>
-  was set for the <code>RollingFileAppender</code>.    
-  </h3>
+  <p>
+    <a name="rfa_no_rp" href="#rfa_no_rp">No <code>RollingPolicy</code> was set
+    for the <code>RollingFileAppender</code>.
+    </a>
+  </p>
   
   <p>The <code>RollingFileAppender</code> must be set up with
   a <code>RollingPolicy</code>. It permits the Appender to
@@ -319,14 +311,15 @@
   </p>
   
   
+  <hr/>
   
-
-  <!-- ============================================================= -->
-  <h3 class="doAnchor" name="tbr_fnp_not_set">The <span
-  class="option">FileNamePattern</span> property is mandatory for both
-  <code>TimeBasedRollingPolicy</code> and
-  <code>FixedWindowRollingPolicy</code>.    
-  </h3>
+  <p>
+    <a name="tbr_fnp_not_set" href="#tbr_fnp_not_set">
+      The <span class="option">FileNamePattern</span> property is mandatory for both
+      <code>TimeBasedRollingPolicy</code> and
+      <code>FixedWindowRollingPolicy</code>.
+    </a>
+  </p>
 
   
   <p>The <span class="option">FileNamePattern</span> property for both
@@ -342,14 +335,14 @@
   </p>
 
 
-  
+  <hr/>
 
-  <!-- ============================================================= -->
-  <h3 class="doAnchor" name="rfa_file_after">The <span
-  class="option">File</span> property must be set before any rolling
-  policy or triggering policy.
-    
-  </h3>
+  <p>
+    <a name="rfa_file_after" href="#rfa_file_after">
+      The <span class="option">File</span> property must be set before
+      any rolling policy or triggering policy.
+    </a>
+  </p>
 
   <p>The <span class="option">File</span> property, if present, must
   be placed before any rolling policy or triggering policy. Thus, in a
@@ -358,46 +351,23 @@
   triggering policy declarations.
   </p>
 
-  <!-- ============================================================= -->  
-
-  <h3 class="doAnchor" name="rfa_collision"><span
-  class="option">File</span> property collides with <span
-  class="option">fileNamePattern</span>. Aborting.
-  </h3>
+  <hr/>
 
-  <p>When the <span class="option">file</span> property matches the
-  regular expression defined by <span
-  class="option">fileNamePattern</span>, there is a risk of
-  collision. A collision occurs when the active log file as defined by
-  the <span class="option">file</span> property has the same path as
-  an existing log archive. Such a collision will result in the log
-  archive being overwritten.
+  <p><a name="renamingError" href="#renamingError">Failed to rename file [x] to [y].</a>
   </p>
 
-  <p>As such, in case <span class="option">file</span> property
-  matches the regular expression defined by <span
-  class="option">fileNamePattern</span>, in order to avoid data loss,
-  <code>RollingFileAppender</code> will emit an error message and
-  refuse to start.</p>
-
-  <!-- ============================================================= -->
-  <h3 class="doAnchor" name="renamingError">Failed to rename file [x]
-  as [y].</h3>
-
-  <b>On Windows</b>
-
-  <p>On the Windows platform a log file cannot be renamed if there are
-  handles referencing it. For example, when the file is read by
-  another process such as <code>less</code>, <code>tail</code>,
-  etc. During application hot-redeployment, the old instance of the
-  application will have open references to log files until the old
-  instance is completely shutdown or until the <code>stop()</code>
-  method on its <a
+  <p>A log file cannot be renamed if there are handles referencing
+  that file. For example, when the file is read by another process
+  such as <code>less</code>, <code>tail</code>, etc. During
+  application hot-redeployment, the old instance of the application
+  will have open references to log files until the old instance is
+  completely shutdown or until the <code>stop()</code> method on its
+  <a
   href="apidocs/ch/qos/logback/classic/LoggerContext.html"><code>LoggerContext</code></a>
   is invoked.
   </p>
 
-  <p><a
+  <p>On the Windows platform, <a
   href="http://technet.microsoft.com/en-us/sysinternals/bb896653">Process
   Explorer</a> can help you locate the processes which reference a
   given file (Find -> Find Handle or DLL). On Linux, you can use
@@ -405,23 +375,20 @@
   <em>pathToFile</em></code> command to find which process has the
   file given by <em>pathToFile</em> open. </p>
 
-  <p>Rolling might also fail due to incorrect file permission
-  settings. On windows, renaming a file requires the "modify"
-  permission which is different than the permission to "write" to the
-  file.</p>
-
-
-  <p>In practice, it can be hard to set the right permissions or to
-  ensure that there are no file handle references to log files. Under
-  such circumstances, it can be easier to avoid file renaming
-  altogether. File renaming can be avoided by omitting the <span
-  class="option">file</span> property in
-  <code>TimeBasedRollingPolicy</code>, as shown in the next
-  configuration snippet.
+  <p>In practice, it can be hard to ensure that there are no file
+  handle references to log files. It can be easier to avoid file
+  renaming altogether. As a first step, let us note that for
+  <code>TimeBasedRollingPolicy</code>, the <span
+  class="option">file</span> option can be omitted. If omitted, no
+  file renaming will be performed during roll over. Thus, in order to
+  avoid file renaming errors just leave blank the <span
+  class="option">file</span> option of
+  <code>RollingFileAppender</code>, as shown in the next configuration
+  snippet.
   </p>
 
   <pre class="prettyprint source"><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
-  <!-- <span class="option">file</span> property left unset/blank -->
+  <!-- <span class="option">file</span> option left unset/blank -->
   <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
     <fileNamePattern>mylog.%d{yyyy-MM-dd}.log</fileNamePattern>
   </rollingPolicy>
@@ -435,32 +402,16 @@
    class="option">file</span> property is mandatory.
    </p>
  
-   <h4 class="doAnchor" name="renamingErrorOnUnix">On Unix-*</h4>
   
-   <p>On the Unix platform, the basic/quick rename method supplied by
-   the JDK does not work if the source and target files are located on
-   different file systems. In order to deal with this contingency,
-   logback will resort to renaming by copying if all following three
-   conditions are met:</p>
-
-   <ol>
-     <li>quick renaming fails, </li>
-     <li>source and destination files for the rename are on different
-     file systems,
-     </li>
-
-     <li>the host JVM platform runs Java 7 or later.</li>
-   </ol>
-
-   <p>The code for determining the file system of a file requires Java
-   7. No rename by copying will be performed on Java 6 or earlier.</p>
-   
+  <hr/>
 
-  <!-- ============================================================= -->
-  <h3 class="doAnchor" name="fwrp_parentFileName_not_set">The <span
-  class="option">File</span> property must be set before
-  <code>FixedWindowRollingPolicy</code>    
-  </h3>
+
+  <p>
+    <a name="fwrp_parentFileName_not_set" href="#fwrp_parentFileName_not_set">
+      The <span class="option">File</span> property must be set before
+      <code>FixedWindowRollingPolicy</code>
+    </a>
+  </p>
 
   <p>The <span class="option">File</span> property is mandatory with
   <code>FixedWindowRollingPolicy</code>. Moreover, the <span
@@ -473,11 +424,12 @@
     FixedWindowRollingPolicy </a> for more information.
   </p>
 			
-  
-  <!-- ============================================================= -->
-  <h3 class="doAnchor" name="tbr_fnp_prudent_unsupported">Prudent mode
-  is not supported with <code>FixedWindowRollingPolicy</code>.
-  </h3>
+  <hr />
+  <p>
+    <a name="tbr_fnp_prudent_unsupported"
+    href="#tbr_fnp_prudent_unsupported">Prudent mode is not supported
+    with <code>FixedWindowRollingPolicy</code>.</a>
+  </p>
 
   <p>Given that <code>FixedWindowRollingPolicy</code> performs
   multiple file rename operations during roll over, and that these
@@ -486,12 +438,12 @@
   <code>FixedWindowRollingPolicy</code>.
   </p>
 
-  
+  <hr />
   
   <!-- ============================================================= -->
-  <h3 class="doAnchor" name="syslog_layout">SyslogAppender does not
-  admit a layout.
-  </h3>
+  <p><a name="syslog_layout" href="#syslog_layout"> SyslogAppender
+  does not admit a layout.</a>
+  </p>
 
 
   <p>Given that the format of a syslog request follows strict rules,
@@ -505,34 +457,24 @@
   href="manual/appenders.html#SyslogAppender">its documentation.</a>
   </p>
 
-  
+  <hr/>
 
   <!-- ============================================================= -->
-  <h3 class="doAnchor" name="1andOnly1">Only and only one appender can
-  be nested the <sift> element in
-  <code>SiftingAppender</code>.</h3>
+  <p><a name="1andOnly1" href="#1andOnly1">Only and only one appender
+  can be nested the <sift> element in
+  <code>SiftingAppender</code>.</a>
+  </p>
   
   <p>SiftingAppender admits one and only one nested appender. 
   </p>
   
+  <hr/>
 
   <!-- ============================================================= -->
-  <h3 class="doAnchor" name="ifJanino">Could not find Janino library
-  on the class path. Skipping conditional processing.
-  </h3>
-  
-  <p><a href="manual/configuration.html#conditional">Conditional
-  processing</a> in configuration files requires the <a
-  href="http://docs.codehaus.org/display/JANINO/Home">Janino
-  library</a>.  See the <a href="setup.html#janino">setup
-  instructions</a> for adding Janino to your class path.
+  <p><a name="block" href="#block">As of logback version 0.9.28,
+  JaninoEventEvaluator expects Java blocks.</a>
   </p>
 
-  <!-- ============================================================= -->
-  <h3 class="doAnchor" name="block">As of logback version 0.9.28,
-  JaninoEventEvaluator expects Java blocks.
-  </h3>
-
   <p>As of logback version 0.9.28, JaninoEvaluator expects Java
   "block", i.e. the body of a method. In previous versions only
   boolean expressions were allowed. For backward compatibility
@@ -576,11 +518,12 @@ return false;</pre>
 
    <p>
    </p>
-   
+   <hr/>
    <!-- ============================================================= -->
-   <h3 class="doAnchor" name="missingRightParenthesis">In a conversion
-   pattern, opened parenthesis must be closed.
-   </h3>
+   <p><a name="missingRightParenthesis"
+   href="#missingRightParenthesis">In a conversion pattern, opened
+   parenthesis must be closed.</a>
+   </p>
    
    <p>In conversion patterns, <a
    href="manual/layouts.html#Parentheses">parentheses are special</a>
@@ -591,10 +534,13 @@ return false;</pre>
    </p>
   
 
+  <p>
+   </p>
+   <hr/>
    <!-- ============================================================= -->
-   <h3 class="doAnchor" name="appender_order">Appenders must be
-   definied before they are referenced.
-   </h3>
+   <p><a name="appender_order" href="#appender_order">Appenders must
+   be definied before they are referenced.</a>
+   </p>
    
    <p>In a configuration file, at the point where an appender is
    referenced by name, it must be defined earlier in the configuration
@@ -643,47 +589,6 @@ return false;</pre>
 </configuration>
    </pre>
 
-  <!-- =========================================================== -->
-
-  <h3 class="doAnchor" name="remote_no_host">No remote host or address
-  is set for <code>SocketRemote</code>
-    
-  </h3>
-
-  <p>A remote host or address is mandatory for SocketRemote. </p>
-  <p>You can specify the remote host in the configuration file
-  as follows.
-  </p>
-  
-  <pre class="prettyprint source"><remote class="ch.qos.logback.classic.net.SocketRemote">
-  ...
-  <host>127.0.0.1</host>
-  ...
-</remote></pre>
-
-
-  
-
-  <!-- ============================================================= -->
-
-  <h3 class="doAnchor" name="socket_no_port">No remote port is set for
-  <code>SocketRemote</code>    
-  </h3>
-    
-  <p>A remote port is mandatory for SocketRemote.</p>
-      
-  <p>You can specify the remote port in the configuration file
-  like this:
-  </p>
-      
-  <pre class="prettyprint source"><remote class="ch.qos.logback.classic.net.SocketRemote">
-  ...
-  <port>4560</port>
-  ...
-</remote></pre>
-        
-
-
   <script src="templates/footer.js" type="text/javascript"></script>
   </div>
 </body>
diff --git a/logback-site/src/site/pages/consolePlugin.html b/logback-site/src/site/pages/consolePlugin.html
new file mode 100644
index 0000000..f49c2bb
--- /dev/null
+++ b/logback-site/src/site/pages/consolePlugin.html
@@ -0,0 +1,330 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+    <title>Logback Console Plugin for Eclipse</title>
+    <link rel="stylesheet" type="text/css" href="css/common.css" />
+    <link rel="stylesheet" type="text/css" href="css/screen.css" media="screen" />
+    <link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
+
+    
+  </head>
+  <body>
+    <script type="text/javascript">prefix='';</script>
+
+    <script src="templates/header.js" type="text/javascript"></script>
+    <div id="left">
+      <script src="templates/left.js" type="text/javascript"></script>
+    </div>
+    <div id="content">
+	
+    <h2>Logback Console Plugin for Eclipse</h2>
+    
+    <p>During the development process, it is common for developers to
+    print log output on the console. Typically, the developer will
+    also customize the format of the log output by setting properties
+    of a <code>PatternLayout</code> instance.  The Logback Console
+    Plugin for Eclipse serves the same purpose as the regular console,
+    but offers several advantages over the plain-old console. Below is
+    a list of key advantages of our plugin:
+    </p>
+    
+    <ul>
+
+      <li>Event of level WARN and ERROR are colored in orange and
+      respectively in red.</li>
+
+      <li>Go to the java class and line where any given logging request was
+      issued by double-clicking on its output line.
+      </li>
+
+      <li>Filter events with logback's powerful filtering mechanism
+      without changing your logging configuration.
+      </li>
+    
+      <li>Change the output format dynamically whenever you chose to do so.</li>
+
+
+      <li>Easy configuration (only one line in your <em>logback.xml</em> file).
+      </li>
+     
+    </ul>
+    
+    <h3>Installation</h3>
+    
+    <p>
+     Installing the plugin requires a few steps. First get the plugin from
+     our <a href="download.html">download page</a>.
+    </p>
+    
+    <p>
+     Once the transfer is complete, unzip the file called
+     <code>ch.qos.logback.eclipse_<em>VERSION</em>.zip</code>. Place the folder
+     found inside the archive in the following directory: <em>ECLIPSE_INSTALL/plugins/</em>
+     where <em>ECLIPSE_INSTALL</em> is the directory where you've installed Eclipse.
+    </p>
+    
+    <p>
+     Relaunching Eclipse should load the plugin. To access the logback plugin, open
+     the following menu: <em>Window > Show view > Other... </em>. You should see
+     the <em>Logback View</em> nested in the <em>Logback</em> category. Selecting the
+     view will add it to your workspace.
+    </p>
+    
+    <h3>Logging to the logback plugin</h3>
+    
+    <p>
+     Logging to the logback plugin takes a single line of configuration
+     in your <em>logback.xml</em> configuration file, as you can see below.
+    </p>
+    
+    <div class="source"><pre><?xml version="1.0" encoding="UTF-8"?>
+
+<configuration>
+
+  <consolePlugin />
+  
+</configuration></pre></div>
+  
+   <p>
+    This element will trigger the creation of a <code>SocketAppender</code> that will send
+    events to the localhost, on port <em>4321</em> by default. That's all it takes to run your
+    software and log to the logback plugin. By default, logging events are not filtered, but please
+    keep in mind that context-wide filtering in your logging configuration may affect the events
+    that are received by the logback plugin.
+   </p>
+    
+   <p>If you already have
+    a server running on the default port, you can specify the port that will be used
+    by adding a simple attribute to the xml element:
+   </p>
+    
+    <div class="source"><pre><?xml version="1.0" encoding="UTF-8"?>
+
+<configuration>
+
+  <consolePlugin port="4567" />
+  
+</configuration></pre></div>    
+    
+   <p>
+    In that case, however, you will need to specify in the plugin preferences on which
+    port to listen for events. The plugin preferences will be covered in a following section
+    of this document.
+   </p>
+   
+   <h3>Using the logback plugin</h3>
+   
+   <p>
+    Once the <em>Logback View</em> is shown on your workspace, you might want to
+    configure it to fit your needs. Look at the right side of the plugin view.
+    You should see two buttons, along with the usual three Eclipse icons:
+   </p>
+   
+   <img src="images/plugin/buttons.gif" alt="buttons.gif"/>
+   
+   <p>
+    The first button on the left clears the console. The second button toggles
+    the auto-scroll functionality. When enabled, you will always see the latest
+    logs that have been received by the plugin. If you disable the auto scrolling,
+    the view will display the current logs, and add the new ones at the bottom of
+    the list.
+   </p>
+   
+   <p>
+    The third button opens a sub-menu that lets you configure the logback plugin. This
+    will be covered in a short moment.
+   </p>
+   
+   <p>
+    When your software logs events, they are displayed in the logback view as shown
+    below:
+   </p>
+   
+   <img src="images/plugin/sampleLogs.gif" alt="sampleLogs.gif"/>
+   
+   <p>
+    All events with the <em>WARN</em> level are displayed in orange. <em>ERROR</em>
+    level events are displayed in red.
+   </p>
+   
+   <p>
+    Double-clicking on a log entry will open a Java editor and show you the line
+    where the entry was requested. It is an easy way to directly access
+    the class and method that logged the selected entry.
+   </p>
+   
+   <p>
+    When an icon is shown on the left of the logging event, it means that the
+    logging event contains a stacktrace. Right-clicking on the line reveals
+    a sub-menu that lets you open Eclipse's StackTrace Console and display the
+    stacktrace. You can click on the underlined parts of the stacktrace to open
+    an editor revealing the selected class.
+   </p>
+   
+   <img src="images/plugin/stackTrace.gif" alt="stackTrace.gif"/>
+   
+   <h3>Configuring the logback plugin</h3>
+   
+   <p>
+    On the right of the view, right next to the auto-scroll toggle is
+    a button that opens a sub menu.
+   </p>
+   
+   <h4>Preferences</h4>
+   
+   <p>
+    The first item in this menu opens the plugin's preference window.
+   </p>
+   
+   <img src="images/plugin/prefs.gif" alt="prefs.gif" />
+   
+   <p>
+    In this window, you can configure the pattern that will be used by the plugin
+    to display the logs. By default, it is configured to show the following informations:
+   </p>
+
+   <ul>
+    <li>
+     Relative time since launch
+    </li>
+    <li>
+     Level of the request
+    </li>
+    <li>
+     The thread name
+    </li>
+    <li>
+     Name of the logger. The name is automatically shortened when longer than
+     25 characters
+    </li>
+    <li>
+     The message of the request
+    </li>
+   </ul>
+   
+   <p>An important point about this pattern is that, if it is
+   modified, the changes are immediately reflected on the
+   <strong>current content</strong> of the logback view.  That means
+   that if you would like to display an <code>MDC</code> value, or any
+   other information that the <code>PatternLayout</code> provides, you
+   can change it even <em>after</em> the logs have been requested.
+   </p>
+   
+   <p>
+    Along with the pattern, you can specify the port on which the plugin will listen
+    for logging events. You can also choose the font type and size that will be used
+    to display the logs in the logback view.
+   </p>
+   
+   <p>
+    Finally, you can choose how many logging events should be displayed in the
+    view before the list is trimmed. By default, the logback plugin will display
+    20'000 events. Once this number is reached, the plugin automatically drops
+    the 30% oldest logs. Please note that changing this value to a too much higher
+    value might lead to memory issues, or even crash Eclipse.
+   </p>
+   
+   
+   <h4>Filters</h4>
+   
+   <p>
+    The logback plugin lets you filter logging events when they are
+    received. It uses the powerful <code>EvaluatorFilter</code> objects
+    that are available in logback. For detailed information about these filters, you might want
+    to check the <a href="manual/filters.html">corresponding documentation</a> 
+    in the logback manual. In this document, we will only
+    cover some basic points, enough to get you started using the filtering
+    functionality of the logback plugin.
+   </p>
+   
+   <p>
+    The second item of the sub-menu on the right of the logback view
+    opens the filter configuration window:
+   </p>
+
+   <img src="images/plugin/filterWindow.gif" alt="filterWindow.gif"/>
+   
+   <p>
+    The upper part of the window lists the filters that are currently
+    used by the logback plugin. The lower part lets you create, edit
+    or delete a filter.
+   </p>
+   
+   <p>
+    A filter is composed of three pieces of information. First, a Java expression,
+    that will be evaluated for each logging event that is received by
+    the logback plugin. This expression can use a set of common variables
+    such as <code>level</code>, <code>logger</code>, <code>message</code>, 
+    and several others. For a complete list of available variables, please
+    refer to the <a href="manual/filters#EventEvaluator.html">chapter 
+    about filters</a> in the logback manual.
+   </p>
+   
+   <p>
+    The second and third pieces of information that compose a filter are the
+    actions that will be taken depending on the result of the evaluation, for
+    a filter match and a filter mismatch.
+    Three actions are possible: <em>ACCEPT</em>, <em>DENY</em>
+    or <em>NEUTRAL</em>. Setting a filter's reply to <em>ACCEPT</em>
+    or <em>DENY</em> will prevent the plugin from evaluating any
+    other filter and return a definitive result on the logging event.
+   </p>
+   
+   <p>
+    Let us create a filter that will drop any request that has a level
+    lower than <em>INFO</em>. A click on the <em>New</em> button creates
+    a new filter. Enter the following informations in the corresponding
+    fields:
+   </p>
+   
+   <ul>
+    <li>
+     Expression: <code>level >= INFO</code>
+    </li>
+    <li>
+     Action on filter match: <code>NEUTRAL</code>
+    </li>
+    <li>
+     Action on filter mismatch: <code>DENY</code>
+    </li>
+   </ul>
+   
+   <p>
+    Here is what the window should look like, once you've
+    saved the filter.
+   </p>
+ 
+   <img src="images/plugin/createFilter.gif" alt="createFilter.gif" />
+   
+   <p>
+    We've just created a filter that will drop any requests whose
+    level is lower than <em>INFO</em>. Note the use of the <em>NEUTRAL</em>
+    value as the action to be taken when the filter is matched. Since
+    we do not know what other filters might want to do, there is no reason
+    to stop evaluating when the level is higher or equal to <em>INFO</em>.
+   </p>
+   
+   <p>
+    You may have noticed the two buttons on the left side of the filter windows
+    labelled <em>Up</em> and <em>Down</em>. An important concept ruling the filters
+    in logback is that filters are called in a chain. As we've seen above, 
+    a filter returning <em>ACCEPT</em> or <em>DENY</em> will stop the chain
+    and have a direct impact on the logging event. It is sometimes important
+    to manage the order in which filters are called to achieve a specific
+    filtering policy.
+   </p>
+   
+   <p>
+    You should now be ready to experience the logback plugin and use its functionality.
+    If you have any question about its use, feel free to use the logback
+    <a href="mailinglist.html">mailing lists</a>.
+   </p>
+   
+   
+   <script src="templates/footer.js" type="text/javascript"></script>
+</div>
+</body>
+</html>
diff --git a/logback-site/src/site/pages/css/common.css b/logback-site/src/site/pages/css/common.css
index 752c812..b129d92 100644
--- a/logback-site/src/site/pages/css/common.css
+++ b/logback-site/src/site/pages/css/common.css
@@ -24,13 +24,6 @@ div.source {
  margin-top: 1em;
 }
 
-div.breaking {
-   border: 1px solid #F44; 
-   background-color: #FED; 
-   padding-left: 1ex; 
-   padding-right: 1ex;
-}
-
 .longline {
   overflow: scroll;
 }
@@ -72,7 +65,7 @@ pre {
 
 
 h1, h2, h3, h4 {
-  color: #505050;
+  color: #333;
   padding-top: 0ex; 
   background-color: transparent;
 }
@@ -153,9 +146,17 @@ table[class="bodyTable properties"] tr {
 	vertical-align: top;
 }
 
-/* table.bodyTable tr.a { 	background-color: #ddd; } */
-/* table.bodyTable tr.b {	background-color: #eee; } */
-/* table.bodyTable tr.alt {	background-color: #eee;} */
+table.bodyTable tr.a {
+	background-color: #ddd;
+}
+
+table.bodyTable tr.b {
+	background-color: #eee;
+}
+
+table.bodyTable tr.alt {
+	background-color: #eee;
+}
 
 /* we don't want the first p under td to appear indented */
 table.bodyTable tr td p:first-child {
@@ -163,6 +164,7 @@ table.bodyTable tr td p:first-child {
   margin-top: 0px;
 }
 
+
 .striped tr:nth-child(odd) td {
   background-color: #f9f9f9;
 }
@@ -173,10 +175,6 @@ table.bodyTable tr td p:first-child {
   border-bottom: 1px solid #ddd;
 }
 
-td.word {
-  text-align: right;
-}
-
 /* EOF =============== bodyTable =============== */
 
 .author {
@@ -214,6 +212,7 @@ td.word {
 	background-color: #EEE;
 }
 
+
 .blue {
 	color: blue;	
 }
diff --git a/logback-site/src/site/pages/css/screen.css b/logback-site/src/site/pages/css/screen.css
index 3b996d5..6eceacc 100644
--- a/logback-site/src/site/pages/css/screen.css
+++ b/logback-site/src/site/pages/css/screen.css
@@ -21,6 +21,7 @@ body {
 	font-size: smaller;
 }
 
+
 #job img {
    border:1px solid #DDDDDD;
 }
@@ -38,7 +39,7 @@ p.menu {
 }
 
 
-#leftOld {
+#left {
   position: absolute;
   font-size: 80%;
   left: 0px;
@@ -53,26 +54,6 @@ p.menu {
   border-radius: 3px;
 }
 
-#left {
-  position: absolute;
-  left: 0px;
-  width: 15em;
-  margin: 4px 0px 0px 4px; 
-  padding: 0px;
-  font-size: 80%;
-  background-color: #ffffff;
-}
-
-.menuGroup {
-  border: 1px solid #cccccc;  
-  background-color: #fff8e8;
-  color: #564b47;
-  border: 1px solid #cccccc;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-
 #left a, #right a {
   display: block; 
   width: 95.5%; 
@@ -101,33 +82,10 @@ p.menu_header {
   border-radius: 3px;
 }
 
-#left div.jobadd {
-  font-size: 140%;
-  color: #fff;
-  margin: 0px;
-  padding: 0px;
-
-  text-align: center;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-
-  background-image: -ms-linear-gradient(bottom right, #FFBB55 0%, #FF8822 100%);
-  background-image: -moz-linear-gradient(bottom right, #FFBB55 0%, #FF8822 100%);
-  background-image: -o-linear-gradient(bottom right, #FFBB55 0%, #FF8822 100%);
-  background-image: -webkit-gradient(linear, right bottom, left top, color-stop(0, #FFBB55), color-stop(1, #FF8822));
-  background-image: -webkit-linear-gradient(bottom right, #FFBB55 0%, #FF8822 100%);
-  background-image: linear-gradient(to top left, #FFBB55 0%, #FF8822 100%);
-}
-
-#left div.jobadd a, div.jobadd a:hover {
-  background-color: transparent;
-  color: #fff;
-  border-width: 0px;	
+#left a:hover.x {
+  background-color: #fff; 
 }
 
-/* ------------------------------------------- */
-
 #right {
   position: absolute;
   right: 0px;        
@@ -192,29 +150,3 @@ span.asGroovy:hover {
    cursor: pointer;
 }
 
-/* ------------------------------------ */
-
-.anchor { display:none; }
-
-h1 .anchor:before {content:url(anchor24.png);}
-h2 .anchor:before {content:url(anchor20.png);}
-h3 .anchor:before {content:url(anchor16.png);}
-h4 .anchor:before {content:url(anchor12.png);}
-td .anchor:before {content:url(anchor12.png);}
-
-h1:hover .anchor { margin-left: -24px; }
-h2:hover .anchor { margin-left: -20px; }
-h3:hover .anchor { margin-left: -16px; }
-h4:hover .anchor { margin-left: -12px; }
-td:hover .anchor { margin-left: -12px; }
-
-h1:hover .anchor, 
-h2:hover .anchor,  
-h3:hover .anchor, 
-h4:hover .anchor,
-td:hover .anchor {
-  display: inline-block;
-  text-decoration: none;
-}
-
-
diff --git a/logback-site/src/site/pages/demo.html b/logback-site/src/site/pages/demo.html
index 8f88992..ff1baee 100644
--- a/logback-site/src/site/pages/demo.html
+++ b/logback-site/src/site/pages/demo.html
@@ -32,15 +32,15 @@
     client and issue the following command on a console:
     </p>
   
-    <p class="source">git clone git://github.com/qos-ch/logback-demo.git logback-demo</p>
+    <p class="source">git clone http://git.qos.ch/logback-demo/ logback-demo</p>
 
     <p>This will retrieve a copy of the logback demonstration
     web-application to a directory called <em>logback-demo</em>. The
     logback demo can be packaged as a <em>war</em> file and deployed
     to an application server. We strongly recommend the use of <a
-    href="http://maven.apache.org/">Maven</a> to accomplish this task,
-    since it takes a single command in order to compile, package and
-    run this demo.
+    href="http://maven.apache.org/">Maven2</a> to accomplish this
+    task, since it takes a single command in order to compile, package
+    and run this demo.
     </p>
 
     <p>	Using Maven, let's package the files and run the demo for the first
@@ -51,7 +51,7 @@
     <div class="source"><pre>mvn package jetty:run</pre></div>
     
     <p>Then, visit <a
-    href="http://localhost:8080/">http://localhost:8080/</a>
+    href="http://localhost:8080/logback-demo/">http://localhost:8080/logback-demo/</a>
     to view the main page of the logback demo.
     </p>
 
@@ -354,18 +354,18 @@
 
 <p>Here is a sample output for this appender.</p>
 
-<div class="source"><pre>127.0.0.1 - - 22/Jan/2007:14:35:40 +0100 GET /logback-demo/ViewStatii.do HTTP/1.1 200 3660
-127.0.0.1 - - 22/Jan/2007:14:35:41 +0100 GET /logback-demo/index.jsp HTTP/1.1 200 2389
-127.0.0.1 - - 22/Jan/2007:14:35:42 +0100 GET /logback-demo/lastLog/ HTTP/1.1 200 948
-127.0.0.1 - - 22/Jan/2007:14:35:42 +0100 GET /logback-demo/index.jsp HTTP/1.1 200 2389
-127.0.0.1 - - 22/Jan/2007:14:35:43 +0100 GET /logback-demo/prime.jsp HTTP/1.1 200 1296
-127.0.0.1 - - 22/Jan/2007:14:35:44 +0100 GET /logback-demo/index.jsp HTTP/1.1 200 2389
-127.0.0.1 - - 22/Jan/2007:14:35:45 +0100 GET /logback-demo/lottery.jsp HTTP/1.1 200 1209
-127.0.0.1 - - 22/Jan/2007:14:35:46 +0100 GET /logback-demo/index.jsp HTTP/1.1 200 2389
-127.0.0.1 - - 22/Jan/2007:14:35:48 +0100 GET /logback-demo/reload.jsp HTTP/1.1 200 1335
-127.0.0.1 - - 22/Jan/2007:14:35:49 +0100 GET /logback-demo/index.jsp HTTP/1.1 200 2389
-127.0.0.1 - - 22/Jan/2007:14:35:54 +0100 GET /logback-demo/login.jsp HTTP/1.1 200 1214
-127.0.0.1 - - 22/Jan/2007:14:35:55 +0100 GET /logback-demo/Logout.do HTTP/1.1 200 1000</pre></div>
+<div class="source"><pre>127.0.0.1 - - 22/01/2007:14:35:40 +0100 GET /logback-demo/ViewStatii.do HTTP/1.1 200 3660
+127.0.0.1 - - 22/01/2007:14:35:41 +0100 GET /logback-demo/index.jsp HTTP/1.1 200 2389
+127.0.0.1 - - 22/01/2007:14:35:42 +0100 GET /logback-demo/lastLog/ HTTP/1.1 200 948
+127.0.0.1 - - 22/01/2007:14:35:42 +0100 GET /logback-demo/index.jsp HTTP/1.1 200 2389
+127.0.0.1 - - 22/01/2007:14:35:43 +0100 GET /logback-demo/prime.jsp HTTP/1.1 200 1296
+127.0.0.1 - - 22/01/2007:14:35:44 +0100 GET /logback-demo/index.jsp HTTP/1.1 200 2389
+127.0.0.1 - - 22/01/2007:14:35:45 +0100 GET /logback-demo/lottery.jsp HTTP/1.1 200 1209
+127.0.0.1 - - 22/01/2007:14:35:46 +0100 GET /logback-demo/index.jsp HTTP/1.1 200 2389
+127.0.0.1 - - 22/01/2007:14:35:48 +0100 GET /logback-demo/reload.jsp HTTP/1.1 200 1335
+127.0.0.1 - - 22/01/2007:14:35:49 +0100 GET /logback-demo/index.jsp HTTP/1.1 200 2389
+127.0.0.1 - - 22/01/2007:14:35:54 +0100 GET /logback-demo/login.jsp HTTP/1.1 200 1214
+127.0.0.1 - - 22/01/2007:14:35:55 +0100 GET /logback-demo/Logout.do HTTP/1.1 200 1000</pre></div>
 
   <h4>Filtering</h4>
 
diff --git a/logback-site/src/site/pages/dependencies.html b/logback-site/src/site/pages/dependencies.html
index 8080b87..8a96c9d 100644
--- a/logback-site/src/site/pages/dependencies.html
+++ b/logback-site/src/site/pages/dependencies.html
@@ -22,47 +22,43 @@
 	
 		<h1>Dependencies per module</h1>
 
-    <p>As of version 1.0.12, logback requires JDK 1.6 to build,
-    however, it is inteded to run under JDK 1.5 (with the exception of
-    SSL related functionality).</p>
-
     <p>Each logback module has a different set of dependencies. These
     are listed below in a separate table per module.</p>
 
     <h2>logback-core</h2>
 
-    <table class="bodyTable striped">
+    <table class="bodyTable">
       <tr>
         <th>Component</th>
         <th>dependencies</th>       
       </tr>
 
-      <tr>
+      <tr class="a">
         <td>Overall</td>
-        <td><ul><li>JDK 1.5</li></ul></td>       
-      </tr>
-
-      <tr>
-        <td>ch.qos.logback.core.net.ssl.*</td>
-        <td><ul><li>JDK 1.6</li></ul></td>       
+        <td>
+          <ul>
+            <li>JDK 1.5
+            </li>
+          </ul>
+        </td>       
       </tr>
 
-      <tr>
+      <tr class="b">
         <td><code>JaninoEventEvaluatorBase</code> and derived classes</td>
         <td>
           <ul>
-            <li><a href="http://janino.net">Janino</a> version ${janino.version}</li>
+            <li><a href="http://janino.net">Janino</a> version 2.4.3</li>
           </ul>
         </td>
       </tr>
 
-      <tr>
+      <tr class="a">
         <td><code>SMTPAppenderBase</code> and derived classes</td>
         <td>
           <ul>         
             <li><a
             href="https://glassfish.dev.java.net/javaee5/mail/">JavaMail
-            API</a> version ${javax.mail.version},
+            API</a> version 1.4,
             </li>
             <li><a
             href="http://java.sun.com/products/javabeans/jaf/index.jsp">JavaBeans
@@ -76,13 +72,13 @@
     
     <h2>logback-classic</h2>
 
-    <table class="bodyTable striped">
+    <table class="bodyTable">
       <tr>
         <th>Component</th>
         <th>dependencies</th>       
       </tr>
 
-      <tr>
+      <tr class="a">
         <td>Overall</td>
         <td>
           <ul>
@@ -92,7 +88,7 @@
         </td>       
       </tr>
 
-      <tr>
+      <tr class="b">
         <td>Overall</td>
         <td>
           <ul>
@@ -114,7 +110,7 @@
         </td>       
       </tr>
       
-      <tr>
+      <tr class="b">
         <td>ch.qos.logback.classic.selector.*</td>
         <td>
           <ul>
@@ -124,7 +120,7 @@
         </td>       
       </tr>
 
-      <tr>
+      <tr class="b">
         <td>c.q.l.c.boolex.JaninoEventEvaluator</td>
         <td>
           <ul>
@@ -153,13 +149,13 @@
 
   <h2>logback-access</h2>
 
-    <table class="bodyTable striped">
+    <table class="bodyTable">
       <tr>
         <th>Component</th>
         <th>dependencies</th>       
       </tr>
 
-      <tr>
+      <tr class="a">
         <td>Overall</td>
         <td>
           <ul>
@@ -169,7 +165,7 @@
         </td>       
       </tr>
 
-      <tr>
+      <tr class="b">
         <td>Overall</td>
         <td>
           <ul>
@@ -180,7 +176,7 @@
         </td>       
       </tr>
 
-      <tr>
+      <tr class="a">
         <td>Overall</td>
         <td>
           <ul>
@@ -191,21 +187,21 @@
       </tr>
 
 
-      <tr>
+      <tr class="b">
         <td>ch.qos.logback.access.jetty.*</td>
         <td>
           <ul>
-            <li><a href="http://jetty.mortbay.org">Jetty</a> version ${jetty.version}
+            <li><a href="http://jetty.mortbay.org">Jetty</a> version 7.5.1
             </li>
           </ul>
         </td>       
       </tr>
 
-      <tr>
+      <tr class="a">
         <td>ch.qos.logback.access.tomcat.*</td>
         <td>
           <ul>
-            <li><a href="http://tomcat.apache.org">Tomcat</a> version ${tomcat.version}
+            <li><a href="http://tomcat.apache.org">Tomcat</a> version 7.0.21
             </li>
           </ul>
         </td>       
diff --git a/logback-site/src/site/pages/documentation.html b/logback-site/src/site/pages/documentation.html
index fbc7857..bb29e3e 100644
--- a/logback-site/src/site/pages/documentation.html
+++ b/logback-site/src/site/pages/documentation.html
@@ -54,7 +54,7 @@
         <a href="demo.html">Walk-through logback-demo web app</a>
       </li>    
       <li>
-        <a href="beagle/index.html">Logback-beagle: eclipse plug-in for viewing logs</a>
+        <a href="consolePlugin.html">User guide of the logback plugin for Eclipse</a>
       </li>    
 		</ul>
 		
@@ -76,30 +76,6 @@
 
     <!-- ordered by val -->
     <ul>
-      <li><a
-      href="https://wiki.base22.com/display/btg/How+to+setup+SLF4J+and+LOGBack+in+a+web+app+-+fast">How
-      to setup SLF4J and logback in a web app - fast</a> by Cody Burleson
-      </li>
-     
-      <li>
-        <a
-        href="http://wiki.eclipse.org/Jetty/Tutorial/Sifting_Logs_with_Logback">Jetty/Tutorial/Sifting
-        Logs with Logback</a> by Shirly Dekker Boulay
-      </li>
-      <li>
-        <a
-        href="http://gordondickens.com/wordpress/2012/07/03/enterprise-spring-best-practices-part-1-project-config/">
-          Enterprise Spring Best Practices - Part 1 - Project Config
-        </a> by Gordon Dickens
-      </li>
-
-      <li>
-        <a
-        href="http://nurkiewicz.blogspot.ch/2013/04/siftingappender-logging-different.html">SiftingAppender:
-        logging different threads to different log files</a> by Tomasz
-        Nurkiewicz
-      </li>
-
       <li>
         <a
         href="http://maciejwalkowiak.pl/blog/2012/04/03/application-errors-notification-with-logback/">Application
@@ -113,15 +89,15 @@
       <li><a
       href="http://www.nullin.com/2010/07/28/logging-tests-to-separate-files/">Logging
       tests to separate files</a> by Nalin Makar</li>
-
-   
+     
       <li><a href="logback.ppt">Logback project</a>, by Ceki
       Gülcü and Sébastien Pennec.
       </li>
 
       <li><a
-      href="http://parleys.com/play/514892260364bc17fc56be83/chapter0/about">Devoxx-2009
-      video presentation</a>, by C. Gülcü </li>
+      href="http://beta.parleys.com/#id=1701&st=5&sl=1"><b>Devoxx-2009
+      video presentation</b></a>, by C. Gülcü
+      </li>
 
       <li><a href="http://www.infoq.com/news/2007/08/logback">Logback:
       Evolving Java Logging</a> by Geoffrey Wiseman
diff --git a/logback-site/src/site/pages/download.html b/logback-site/src/site/pages/download.html
index fad3d4f..c26f417 100644
--- a/logback-site/src/site/pages/download.html
+++ b/logback-site/src/site/pages/download.html
@@ -60,23 +60,29 @@
     <p>If you wish to download an older version of logback, please
     refer to the <a href="http://logback.qos.ch/dist/">distributions
     directory</a>.</p>
+
    
-   
-    <h3>logback-beagle: an Eclipse plug-in for viewing logs</h3>
-   
-    <p><a href="beagle/index.html"><img style="float:left;
-    margin-right: 1em;" src="beagle/images/sailing-ship-32x32.png"
-    alt=""/></a>We also offer a console plugin for Eclipse called
-    logback-beagle. It allows you to receive logging events in a
-    convenient Eclipse view, and offers various convenient features. A
-    more precise description for this plug-in along with installation
-    instructions can be found in <a
-    href="beagle/index.html">logback-beagle user guide</a>.</p>
+    <p>A console plugin for Eclipse is also available. It allows you
+    to receive logging events in a convenient Eclipse view, and offers
+    integration with logback's filtering framework, among other
+    features. A more precise description can be found in the plugin's
+    <a href="consolePlugin.html">user guide</a>. <b>Unfortunately, the
+    console plugin is very much outdated. It expects logback version
+    0.9.9.  It will be upgraded during the second semester of
+    2011.</b></p>
 
+    
+    <ul>
+      <li>
+        <a href="dist/ch.qos.logback.eclipse_${consolePlugin.version}.zip">logback
+        Console Plugin for Eclipse</a>
+      </li> 
+    </ul>
+    
+	
     <hr/>
 
-    <h2>Third-party tools, extensions or forks (in chronological
-    order)</h2>
+    <h2>Third-party tools, extensions or forks (in chronological order)</h2>
 
     <p>If you are the author of a logback-related project and would
     like us to add your project to the list below please drop a line
@@ -84,7 +90,17 @@
 
 
     <dl>
-     
+      <dt>
+        <a
+        href="http://wizardforge.org/pc?action=displayFlowchartVersionPublic&id=42">Configuration
+        wizard</a> by Dirk Ooms
+      </dt>
+
+      <dd>
+        <p>A nifty web-application to help you configure logback
+      classic.</p>
+      </dd>
+      
       <!-- ============================================================ -->
       <dt>
         <a href="http://lilith.huxhorn.de">Lilith</a> by Joern Huxhorn
diff --git a/logback-site/src/site/pages/faq.html b/logback-site/src/site/pages/faq.html
index e4cfe1f..cbd9b02 100644
--- a/logback-site/src/site/pages/faq.html
+++ b/logback-site/src/site/pages/faq.html
@@ -302,7 +302,7 @@
         <dt>
           <a name="setup_jetty"  href="#">
             How can Jetty be instructed to use logback-classic as its
-            logging implementation?
+            logging implementataion?
           </a>
         </dt>
         
diff --git a/logback-site/src/site/pages/index.html b/logback-site/src/site/pages/index.html
index 5655b81..1fd016f 100644
--- a/logback-site/src/site/pages/index.html
+++ b/logback-site/src/site/pages/index.html
@@ -26,9 +26,9 @@
     leaves off</a>.
 		</p>
 
-    <p>Logback's architecture is sufficiently generic so as to apply
-    under different circumstances. At present time, logback is divided
-    into three modules, logback-core, logback-classic and
+    <p>Logback's basic architecture is sufficiently generic so as to
+    apply under different circumstances. At present time, logback is
+    divided into three modules, logback-core, logback-classic and
     logback-access.
 		</p>
 
@@ -65,68 +65,47 @@
       <tr>
         <td valign="top">
           <ul> 
-            <li><a href="http://akka.io/">Akka</a></li>
-            <li><a href="http://incubator.apache.org/airavata/">Apache Airvata</a></li>
-            <li><a href="http://camel.apache.org/">Apache Camel</a></li>
-            <li><a href="http://cocoon.apache.org/3.0/">Apache Cocoon 3</a></li>
+            <li><a href="http://doc.akka.io/logging">Akka</a></li>
             <li><a href="http://jackrabbit.apache.org/">Apache Jackrabbit</a></li>
-            <li><a href="http://openmeetings.apache.org/">Apache OpenMeetings</a></li>
-          </ul>  
-        </td>
-        <td valign="top"> 
-          <ul>
-            <li><a href="http://incubator.apache.org/s4/">Apache S4</a></li>
-            <li><a href="http://syncope.apache.org/">Apache Syncope</a></li>
-            <li><a href="http://myfaces.apache.org/tobago/">Apache Tobago</a></li>
             <li><a href="http://www.jfrog.org/products.php">Artifactory</a></li>
             <li><a href="http://cia.sourceforge.net/">Citizen Intelligence Agency</a></li>
             <li><a href="http://www.dcache.org/">dCache</a></li>
-          </ul>
-        </td>
-        <td valign="top">
-          <ul>            
             <li><a href="http://dropwizard.codahale.com/">Dropwizard</a></li>
             <li><a href="http://www.geomajas.org/">Geomajas</a></li>            
             <li><a href="http://www.gradle.org/">Gradle</a></li>   
             <li><a href="http://grinder.sourceforge.net/">Grinder</a></li>   
-            <li><a href="http://www.eclipse.org/gyrex/">Gyrex</a></li>   
             <li><a href="http://wiki.yoshtec.com/jaob">JAOP</a></li>                 
           </ul>
         </td>
-      </tr>
-      <tr>
         <td valign="top">
-          <ul>
+          <ul>            
             <li><a href="http://jmxmonitor.sourceforge.net/">JMX Monitor</a></li>                 
             <li><a href="http://jwebunit.sourceforge.net/quickstart.html">JWebUnit</a></li>
             <li><a href="http://liftweb.net/">Lift</a></li>
             <li><a href="http://metrics.codahale.com/">Metrics</a></li>
             <li><a href="http://www.opengda.org/">OpenGDA</a></li>   
+            <li><a href="http://code.google.com/p/openmeetings/">OpenMeetings</a></li>
             <li><a href="http://www.openrdf.org/doc/sesame2/2.3.2/users/ch06.html">OpenRDF</a></li>
             <li><a href="http://opentsdb.net/overview.html">OpenTSDB</a></li>
+            <li><a href="http://www.playframework.org/">Play Framework</a></li>
+            <li><a href="http://www.red5.org">Red5</a></li>
           </ul>
         </td>
+
         <td valign="top">
           <ul>
-            <li><a href="http://www.playframework.org/">Play Framework</a></li>
-            <li><a href="http://www.red5.org">Red5</a></li>
             <li><a href="http://scalate.fusesource.org/">Scalate</a></li>
             <li><a href="http://www.scalatra.org/2.0/book/">Scalatra</a></li>
-            <li><a href="http://shibboleth.net/">Shibboleth</a></li>
+            <li><a href="http://shibboleth.internet2.edu/">Shibboleth</a></li>
             <li><a href="http://sonar.codehaus.org/">Sonar</a></li>
-          </ul>
-        </td>
-        <td valign="top">
-          <ul>
             <li><a
             href="http://static.springsource.org/s2-dmserver/2.0.x/user-guide/htmlsingle/user-guide.html">SpringSource
             dm Server</a></li>  
             <li><a href="http://www.streambase.com/developers/docs/latest/index.html">StreamBase</a></li>
             <li><a href="http://www.eclipse.org/virgo/">Virgo Web Server</a></li>
-            <li><a href="http://xtrememp.sourceforge.net/">XtremeMP</a></li>            
+            <li><a href="http://xtrememp.sourceforge.net/">XtremeMP</a></li>
             <li><a href="http://www.xuggle.com/xuggler/">Xuggler</a></li>
             <li><a href="http://www.xwiki.org/">Xwiki</a></li>
-            <li><a href="http://www.zabbix.com/">Zabbix</a></li>
           </ul>
         </td>
 
diff --git a/logback-site/src/site/pages/job.html b/logback-site/src/site/pages/job.html
index 0046aac..e5f90dd 100644
--- a/logback-site/src/site/pages/job.html
+++ b/logback-site/src/site/pages/job.html
@@ -4,7 +4,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
     <meta http-equiv="content-type" content="text/html; charset=utf-8" />
-    <title>Careers at QOS.ch</title>
+    <title>Logback Home</title>
     <link rel="stylesheet" type="text/css" href="css/common.css" />
     <link rel="stylesheet" type="text/css" href="css/screen.css" media="screen" />
     <link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
@@ -34,44 +34,57 @@
     <div id="content">
 		
 
-		<h2>Software developer</h2>
+		<h2>Ingénieur Informatique</h2>
 
-    <p>QOS.ch or Quality Open Software is a software development
-    company based in Lausanne, Switzerland.</p>
+    <p>QoS.ch, ou Quality Open Software, est une société de conception
+    et de développement informatique basée à Lausanne - Suisse.</p>
     
-    <p>We have extensive experience building mission-critical
-    enterprise software in the Java language. We are also founding
-    contributors of several open source projects, namely log4j, slf4j,
-    mistletoe, cal10n and logback.
+    <p>Nous avons une grande expérience dans la réalisation de
+    logiciels d'entreprise en langage Java. Nous sommes également
+    fondateurs ou contributeurs actifs dans plusieurs projets open
+    source, notamment cal10n, logback, log4j, mistletoe et SLF4J.
     </p>
 
-    <p>We are looking for software engineers with superb software
-    development skills.
+    
+    <p>Afin de compléter notre équipe de développeurs pour la
+    réalisation de divers projets, autant open source que pour
+    répondre aux demandes de nos clients, nous recherchons un
+    ingénieur informatique ayant une excellente capacité de
+    développement logiciel. Dans un premier temps vous serez emmené à
+    travailler sur les projets slf4j et logback.
     </p>
 
-    <h3>Required qualifications</h3>
+    <h3>Votre profil:</h3>
 
     <ul>
-      <li>University graduate</li> 
-      
-      <li>Strong analytical skills</li> 
-      
-      <li>Good experience in object-oriented programming, preferably
-      Java</li>
-
+      <li>Formation universitaire ou jugée équivalente</li>
+      <li>Grande capacité d'analyse et d'apprentissage</li>
+      <li>Capacité de rédaction en anglais </li> 
+      <li>Autonome et enthousiaste dans le développement</li>
+      <li>Intérêt marqué pour le développement collaboratif</li>
     </ul>
     
-    <p>We offer excellent working conditions with many opportunities
-    to improve your software development skills.
-    </p>
 
-    <script type="text/javascript">
-AAT = '@';
-DOOTT = '.';
-document.write('<p>Please send your application by email to <b>hr'+ AAT +'qos'+ DOOTT+'ch</b>. If applicable, ');
-document.write('do not forget to include a list of software projects to which you have contributed.</p>') 
-    </script>
+    <h3>Connaissances souhaitables:</h3>
+
+    <ul>
+      <li>Bonne expérience de programmation orienté objet, de préférence Java</li>
+      <li>Connaissances de développement Web avec des outils tels que
+      Struts, Wicket ou Tapestry</li>
+      <li>Affinité pour les méthodologies agiles, en particulier le TDD</li>
+    </ul>
+
+
+    <p>Vous correspondez à ces critères et êtes désireux de mettre à
+    profit vos aptitudes, nous vous proposons un environnement
+    dynamique et évolutif avec des conditions avantageuses.</p>
+
+    <p>Merci de nous adresser votre dossier de candidature par email à
+    l'adresse hr at qos.ch. Si possible joignez une liste des projets
+    auxquels vous avez participé.
+    </p>
 
+    <script src="templates/footer.js" type="text/javascript"></script>	
     </div>
   </body>
 </html>
\ No newline at end of file
diff --git a/logback-site/src/site/pages/js/decorator.js b/logback-site/src/site/pages/js/decorator.js
deleted file mode 100644
index f86375a..0000000
--- a/logback-site/src/site/pages/js/decorator.js
+++ /dev/null
@@ -1,100 +0,0 @@
-
-
-//   <h3><a name="LoggerContext" href="#LoggerContext"><span
-//    class="anchor"/></a>Logger context</h3>
-
-function decorate() {
-  var anchor = findAnchorInURL(document.URL);
-  decoratePropertiesInTables(anchor);
-  decorateDoAnchor(anchor);
-  decorateConversionWordInTables(anchor);
-}
-
-// ----------------------------------------------
-function findAnchorInURL(url) {
-
- if(url == null) return null
-  var index = url.lastIndexOf("#");
-  if(index != -1 && (index+1) < url.length) 
-    return url.substr(index+1);
-  else 
-    return null;
-}
-
-// ----------------------------------------------
-function decoratePropertiesInTables(anchor) {
-
- //if(1==1) return;
- var elems = $('tr td:first-child span.prop');
-
- for(var i = 0; i < elems.length; i++) {
-   var e = elems[i];
-   var p = e.parentNode;
-   if(p == null) continue;
-
-   var tmpHTML = p.innerHTML;
-   var propName = e.innerHTML;
-   var nameAttr = $(e).attr('name')
-    
-   if(nameAttr == null) {
-     var containerAttr = $(e).attr('container')
-     if(containerAttr != null) 
-       nameAttr = containerAttr+capitaliseFirstLetter(propName);
-     else 
-       nameAttr = propName;
-   }
-   
-   p.innerHTML = "<a name='" + nameAttr + "' href='#" + nameAttr +
-                "'><span class='anchor'/></a><b>" +tmpHTML +"</b>";
-   scrollIfMatch(p, nameAttr, anchor);
- } // for 
-}
-
-function decorateConversionWordInTables(anchor) {
- var elems = $('tr td.word');
- for(var i = 0; i < elems.length; i++) {
-   var e = elems[i];
-   var tmpHTML = e.innerHTML;
-   var nameAttr = $(e).attr('name')
-   if(nameAttr == null) 
-     continue;
-   e.innerHTML = "<a name='" + nameAttr + "' href='#" + nameAttr +
-                "'><span class='anchor'/></a>" +tmpHTML;
-   scrollIfMatch(e, nameAttr, anchor);
- }
-}
-
-
-function decorateDoAnchor(anchor) {
-   var elems = $('.doAnchor');
-   for(var i = 0; i < elems.length; i++) {
-     var e = elems[i];
-     var tmpHTML = e.innerHTML;
-     var nameAttr = $(e).attr('name')
-     if(nameAttr == null) {
-       nameAttr = camelCase($.trim(tmpHTML))
-     }
-     e.innerHTML = "<a name='" + nameAttr + "' href='#" + nameAttr +
-                "'><span class='anchor'/></a>" +tmpHTML;
-     scrollIfMatch(e, nameAttr, anchor);
-   }
-} 
-
-function scrollIfMatch(element, nameAttr, anchor) {
-  if(anchor != null && nameAttr.toString() == anchor)
-     element.scrollIntoView(true);
-
-
-}
-
-function capitaliseFirstLetter(str) {
-  return str.charAt(0).toUpperCase() + str.slice(1);
-}
-
-
-function camelCase(str) {  
-  return $.trim(str).replace(/\s\w/g, function(match) {
-    return $.trim(match).toUpperCase();
-  });
-}
-
diff --git a/logback-site/src/site/pages/mailinglist.html b/logback-site/src/site/pages/mailinglist.html
index cb55a46..5f73ef0 100644
--- a/logback-site/src/site/pages/mailinglist.html
+++ b/logback-site/src/site/pages/mailinglist.html
@@ -102,11 +102,14 @@
 						qos.ch
 					</a> |
 					<a
-						href="http://logback.10977.n7.nabble.com/Users-f3.html">
-						Nabble
+						href="http://marc.theaimsgroup.com/?l=logback-user">
+						MARC
 					</a> |
-          <a href="http://markmail.org/search/?q=list%3Ach.qos.logback-user">
-            MarkLogic</a>
+
+					<a
+						href="http://www.nabble.com/Logback-User-f16252.html">
+						Nabble
+					</a>
 				</td>
 			</tr>
 			<tr class="b">
@@ -130,40 +133,15 @@
 						qos.ch
 					</a> |
 					<a
-						href="http://logback.10977.n7.nabble.com/Developer-f3683.html">
-						Nabble
-					</a> |          
+						href="http://marc.theaimsgroup.com/?l=logback-dev">
+						MARC
+					</a> |
 					<a
-						href="http://markmail.org/search/?q=list%3Ach.qos.logback-dev">
-						MarkLogic
+						href="http://www.nabble.com/Logback-Dev-f16253.html">
+						Nabble
 					</a>
-
 				</td>
 			</tr>
-
-      <tr>
-        <td>Logback Notifications List</td>
-        <td>High</td>
-				<td>
-					<a
-						href="http://qos.ch/mailman/listinfo/logback-notification">
-						Subscribe
-					</a>
-				</td>
-        <td>
-          <a
-						href="http://qos.ch/mailman/options/logback-notification">
-						Unsubscribe
-					</a> 
-				</td>
-        <td>
-          <a
-						href="http://www.qos.ch/pipermail/logback-notification/">
-						qos.ch
-					</a>
-        </td>
-      </tr>
-
 		</table>
 
    <p> </p>
diff --git a/logback-site/src/site/pages/manual/.htaccess b/logback-site/src/site/pages/manual/.htaccess
index dcd1ee3..9e2395e 100644
--- a/logback-site/src/site/pages/manual/.htaccess
+++ b/logback-site/src/site/pages/manual/.htaccess
@@ -1,2 +1,2 @@
-Redirect permanent /contextSelector.html http://logback.qos.ch/manual/loggingSeparation.html
-Redirect permanent /joran.html http://logback.qos.ch/manual/configuration.html
+Redirect contextSelector.html http://logback.qos.ch/manual/loggingSeparation.html
+Redirect joran.html http://logback.qos.ch/manual/configuration.html
\ No newline at end of file
diff --git a/logback-site/src/site/pages/manual/appenders.html b/logback-site/src/site/pages/manual/appenders.html
index b37d3dd..37ca98e 100644
--- a/logback-site/src/site/pages/manual/appenders.html
+++ b/logback-site/src/site/pages/manual/appenders.html
@@ -9,13 +9,11 @@
     <link rel="stylesheet" type="text/css" href="../css/_print.css" media="print" />
     <link rel="stylesheet" type="text/css" href="../css/prettify.css" media="screen"/>    
   </head>
-  <body onload="prettyPrint(); decorate();">
+  <body onload="prettyPrint()">
     <script type="text/javascript">prefix='../';</script>
     <script type="text/javascript" src="../js/prettify.js"></script>
-    <script type="text/javascript" src="../templates/header.js"></script>
+    <script src="../templates/header.js" type="text/javascript"></script>
     <script type="text/javascript" src="../js/dsl.js"></script>
-    <script type="text/javascript" src="../js/jquery-min.js"></script>
-    <script type="text/javascript" src="../js/decorator.js"></script>
     <div id="left">      
       <noscript>Please turn on Javascript to view this menu</noscript>
       <script src="../templates/left.js" type="text/javascript"></script>
@@ -42,7 +40,8 @@
     <script src="../templates/creative.js" type="text/javascript"></script>
     <script src="../templates/setup.js" type="text/javascript"></script>
     
-    <h2 class="doAnchor" name="whatIsAnAppender">What is an Appender?</h2>
+    <h2><a name="whatIsAnAppender" href="#whatIsAnAppender">What is an
+    Appender?</a></h2>
     
 		<p>Logback delegates the task of writing a logging event to
 		components called appenders.  Appenders must implement the <a
@@ -98,7 +97,7 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
 	</p>
 	
 	
-	<h2 class="doAnchor" name="AppenderBase">AppenderBase</h2>
+	<h2><a name="AppenderBase" href="#AppenderBase">AppenderBase</a></h2>
 	
 	<p>The <a href="../xref/ch/qos/logback/core/AppenderBase.html">
 	<code>ch.qos.logback.core.AppenderBase</code></a> class is an
@@ -234,8 +233,8 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
 
 
 	
-	<h2 class="doAnchor"
-	name="OutputStreamAppender">OutputStreamAppender
+	<h2>
+    <a name="OutputStreamAppender" href="#OutputStreamAppender">OutputStreamAppender</a>
   </h2>
 	
 	<p><a
@@ -253,18 +252,17 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
 	</p>
 	
   <table class="bodyTable striped">
-    <tr>
+    <tr class="a">
       <th>Property Name</th>
       <th>Type</th>
       <th>Description</th>
     </tr>
     
-    <tr>
-      <td><span class="prop" name="osaEncoder">encoder</span></td>
-
+    <tr class="a">
+      <td><b><span class="prop">encoder</span></b></td>
       <td><a
       href="../xref/ch/qos/logback/core/encoder/Encoder.html"><code>Encoder</code></a></td>
-
+      
       <td>Determines the manner in which an event is written to the
       underlying <code>OutputStreamAppender</code>. Encoders are
       described in a <a href="encoders.html">dedicated chapter</a>.
@@ -283,7 +281,10 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
 	<img src="images/chapters/appenders/appenderClassDiagram.jpg" alt="A UML diagram showing OutputStreamAppender and sub-classes"/>
 	
 
-	<h2 class="doAnchor" name="ConsoleAppender">ConsoleAppender</h2>
+	<h2>	
+    <a name="ConsoleAppender"
+    href="#ConsoleAppender">ConsoleAppender</a>
+  </h2>
 	
   <p>The <a href="../xref/ch/qos/logback/core/ConsoleAppender.html">
   <code>ConsoleAppender</code></a>, as the name indicates, appends on
@@ -298,47 +299,26 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
 	</p>
 	
 	<table class="bodyTable striped">
-			<tr>
+			<tr class="a">
 			<th>Property Name</th>
 			<th>Type</th>
 			<th>Description</th>
 		</tr>
 		<tr>
-			<td><span class="prop" container="conApp">encoder</span></td>
+			<td><b><span class="prop">encoder</span></b></td>
       <td>
         <a href="../xref/ch/qos/logback/core/encoder/Encoder.html"><code>Encoder</code></a>
       </td>
 			<td>See <code>OutputStreamAppender</code> properties.</td>
 		</tr>
-		<tr>
-			<td><span class="prop" container="conApp">target</span></td>
+		<tr class="a">
+			<td><b><span class="prop">target</span></b></td>
 			<td><code>String</code></td>
 			<td>
 				One of the String values <em>System.out</em> or 
 				<em>System.err</em>. The default target is <em>System.out</em>.
 			</td>
 		</tr>
-
-		<tr>
-			<td><span class="prop" container="conApp">withJansi</span></td>
-			<td><code>boolean</code></td>
-			<td>By the default <span class="prop">withJansi</span> property
-			is set to <code>false</code>.  Setting <span
-			class="prop">withJansi</span> to <code>true</code> activates the
-			<a href="http://jansi.fusesource.org/">Jansi</a> library which
-			provides support for ANSI color codes on Windows machines.  On a
-			Windows host, if this property is set to true, then you should
-			put "org.fusesource.jansi:jansi:${jansi.version}" on the class
-			path. Note that Unix-based operating systems such as Linux and
-			Mac OS X support ANSI color codes by default.
-
-      <p>Under the Eclipse IDE, you might want to try the <a
-      href="http://www.mihai-nita.net/eclipse/">ANSI in Eclipse
-      Console</a> plugin.
-      </p>
-			</td>
-		</tr>
-
 	</table>
 	
 	<p>Here is a sample configuration that uses
@@ -377,7 +357,9 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
    href="../xref/chapters/appenders/ConfigurationTester.html">chapters.appenders.ConfigurationTester</a> src/main/java/chapters/appenders/conf/logback-Console.xml</p>
 	
 	
-   <h2 class="doAnchor" name="FileAppender">FileAppender</h2>
+   <h2>
+     <a name="FileAppender" href="#FileAppender">FileAppender</a>
+   </h2>
 	
    <p>The <a
    href="../xref/ch/qos/logback/core/FileAppender.html"><code>FileAppender</code></a>,
@@ -395,7 +377,7 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
        <th>Description</th>
      </tr>
      <tr>
-       <td><span class="prop" container="fileApppender">append</span></td>
+       <td><b><span class="prop">append</span></b></td>
        <td><code>boolean</code></td>
        <td>If true, events are appended at the end of an existing
        file.  Otherwise, if <span class="prop">append</span> is false,
@@ -404,7 +386,7 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
        </td>
      </tr>
      <tr >
-       <td><span class="prop" container="fileApppender">encoder</span></td>
+       <td><b><span class="prop">encoder</span></b></td>
        <td>
          <a href="../xref/ch/qos/logback/core/encoder/Encoder.html"><code>Encoder</code></a>
        </td>
@@ -413,8 +395,7 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
     
    
      <tr>
-       <td><span class="prop"
-       container="fileApppender">file</span></td>
+       <td><b><span class="prop">file</span></b></td>
        <td><code>String</code></td>
        <td>The name of the file to write to. If the file does not
        exist, it is created. On the MS Windows platform users
@@ -435,7 +416,8 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
    
 
      <tr>
-       <td><span class="prop" name="prudent">prudent</span></td>
+       <td><b><span class="option bold"><a name="prudent"
+       href="#prudent">prudent</a></span></b></td>
        <td><code>boolean</code></td>
 
        <td>In prudent mode, <code>FileAppender</code> will safely
@@ -453,7 +435,7 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
          true.
          </p>
 
-         <p>Prudent more relies on exclusive file locks. Experiments
+         <p>Produdent more relies on exclusive file locks. Experiments
          show that file locks approximately triple (x3) the cost of
          writing a logging event. On an "average" PC writing to a file
          located on a <b>local</b> hard disk, when prudent mode is
@@ -503,7 +485,7 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
    <p><span class="label notice">Immediate Flush</span> By default,
    each log event is immediately flushed to the underlying output
    stream. This default approach is safer in the sense that logging
-   events are not lost in case your application exits without properly
+   events are not lost in case your applicaiton exits without properly
    closing appenders. However, for significantly increased logging
    throughput, you may want to set the <span
    class="prop">immediateFlush</span> property of the underlying
@@ -546,8 +528,10 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
    src/main/java/chapters/appenders/conf/logback-fileAppender.xml</p>
 	
 	
-   <h3 class="doAnchor" name="uniquelyNamed">Uniquely named files (by
-   timestamp)</h3>
+   <h3>
+     <a name="uniquelyNamed" href="#uniquelyNamed">Uniquely named
+     files (by timestamp)</a>
+   </h3>
    
    <p>During the application development phase or in the case of
    short-lived applications, e.g. batch applications, it is desirable
@@ -624,7 +608,8 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
   ...
 </configuration></pre>
 
-   <h2 class="doAnchor" name="RollingFileAppender">RollingFileAppender
+   <h2>
+     <a name="RollingFileAppender" href="#RollingFileAppender">RollingFileAppender</a>
    </h2>
    
    <p><a
@@ -665,24 +650,24 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
        <th>Description</th>
      </tr>
      <tr>
-       <td><span class="prop" container="rfa">file</span></td>
+       <td><b><span class="prop">file</span></b></td>
        <td><code>String</code></td>
        <td>See <code>FileAppender</code> properties.</td>
      </tr>	
      <tr>
-       <td><span class="prop" container="rfa">append</span></td>
+       <td><b><span class="prop">append</span></b></td>
        <td><code>boolean</code></td>
        <td>See <code>FileAppender</code> properties.</td>
      </tr>	
      <tr>
-       <td><span class="prop" container="rfa">encoder</span></td>
+       <td><b><span class="prop">encoder</span></b></td>
        <td>
          <a href="../xref/ch/qos/logback/core/encoder/Encoder.html"><code>Encoder</code></a>
        </td>
        <td>See <code>OutputStreamAppender</code> properties.</td>
      </tr>
      <tr>
-       <td><span class="prop" container="rfa">rollingPolicy</span></td>
+       <td><b><span class="prop">rollingPolicy</span></b></td>
        <td><code>RollingPolicy</code></td>
        <td>This option is the component that will dictate
        <code>RollingFileAppender</code>'s behavior when rollover
@@ -690,7 +675,7 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
        </td>
      </tr>	
      <tr>
-       <td><span class="prop" container="rfa">triggeringPolicy</span></td>
+       <td><b><span class="prop">triggeringPolicy</span></b></td>
        <td><code>TriggeringPolicy</code></td>
        <td>
          This option is the component that will tell 
@@ -699,7 +684,8 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
        </td>
      </tr>	
      <tr>
-       <td valign="top"><span class="prop" name="prudentWithRolling">prudent</span></td>
+       <td valign="top"><span class="prop"><a name="prudentWithRolling"
+       href="#prudentWithRolling"><b>prudent</b></a></span></td>
 
        <td valign="top"><code>boolean</code></td>
 
@@ -732,8 +718,8 @@ public interface Appender<E> extends LifeCycle, ContextAware, FilterAttachabl
      </tr>
    </table>
 	
-   <h3 class="doAnchor" name="onRollingPolicies">Overview of rolling
-   policies</h3>
+   <h3><a name="onRollingPolicies" href="#onRollingPolicies">Overview
+   of rolling policies</a></h3>
 	
    <p><a
    href="../xref/ch/qos/logback/core/rolling/RollingPolicy.html"><code>RollingPolicy</code></a>
@@ -769,8 +755,8 @@ public interface RollingPolicy extends LifeCycle {
         ================= -->
 
 	
-   <h4 class="doAnchor"
-   name="TimeBasedRollingPolicy">TimeBasedRollingPolicy
+   <h4>
+     <a name="TimeBasedRollingPolicy" href="#TimeBasedRollingPolicy">TimeBasedRollingPolicy</a>
    </h4>
 
    <p><a
@@ -797,7 +783,7 @@ public interface RollingPolicy extends LifeCycle {
        <th>Description</th>
      </tr>
      <tr>
-       <td><span class="prop" container="tbrp">fileNamePattern</span></td>
+       <td><b><span class="prop">fileNamePattern</span></b></td>
        <td><code>String</code></td>
        <td>
          The mandatory <span class="prop">fileNamePattern</span>
@@ -845,7 +831,7 @@ public interface RollingPolicy extends LifeCycle {
        </td>
      </tr>
      <tr>
-       <td><span class="prop" container="tbrp">maxHistory</span></td>
+       <td><span class="prop"><b>maxHistory</b></span></td>
        <td>int</td>
        <td>The optional <span class="prop">maxHistory</span>
        property controls the maximum number of archive files to keep,
@@ -859,7 +845,7 @@ public interface RollingPolicy extends LifeCycle {
      </tr>
 
      <tr >
-       <td><span class="prop" container="tbrp">cleanHistoryOnStart</span></td>
+       <td><span class="prop"><b>cleanHistoryOnStart</b></span></td>
        <td>boolean</td>
        <td>
          <p>If set to true, archive removal will be executed on
@@ -985,7 +971,7 @@ public interface RollingPolicy extends LifeCycle {
        <td class="small">
          <em>/foo/%d{yyyy-MM,<b>aux</b>}/%d.log</em>
        </td>
-       <td>Rollover daily. Archives located under a folder containing
+       <td>Rollover daily. Archives located under a folder contaning
        year and month.
        </td>
        <td>In this example, the first %d token is marked as
@@ -1162,7 +1148,10 @@ public interface RollingPolicy extends LifeCycle {
 </configuration></pre>
 
 
-   <h4 class="doAnchor" name="FixedWindowRollingPolicy">FixedWindowRollingPolicy</h4>
+   <h4>	
+     <a name="FixedWindowRollingPolicy" 
+     href="#FixedWindowRollingPolicy">FixedWindowRollingPolicy</a>
+   </h4>
 
    <p>When rolling over, <a
    href="../xref/ch/qos/logback/core/rolling/FixedWindowRollingPolicy.html">
@@ -1181,13 +1170,13 @@ public interface RollingPolicy extends LifeCycle {
    </p>
 	
    <table class="bodyTable striped">
-     <tr>
+     <tr class="a">
        <th>Property Name</th>
        <th>Type</th>
        <th>Description</th>
      </tr>
      <tr>
-       <td><span class="prop" container="fwrp">minIndex</span></td>
+       <td><b><span class="prop">minIndex</span></b></td>
        <td><code>int</code></td>
        <td>
          <p>This option represents the lower bound for the window's
@@ -1196,7 +1185,7 @@ public interface RollingPolicy extends LifeCycle {
        </td>
      </tr>
      <tr>
-       <td><span class="prop" container="fwrp">maxIndex</span></td>
+       <td><b><span class="prop">maxIndex</span></b></td>
        <td><code>int</code></td>
        <td>
          <p>This option represents the upper bound for the window's
@@ -1205,7 +1194,7 @@ public interface RollingPolicy extends LifeCycle {
        </td>
      </tr>
      <tr>
-       <td><span class="prop" container="fwrp">fileNamePattern</span></td>
+       <td><b><span class="prop">fileNamePattern</span></b></td>
        <td><code>String</code></td>
        <td>
          <p>This option represents the pattern that will be followed
@@ -1234,15 +1223,16 @@ public interface RollingPolicy extends LifeCycle {
    renaming operations as the window size, large window sizes are
    strongly discouraged. When large values are specified by the user,
    the current implementation will automatically reduce the window
-   size to 20.
+   size to 12.
    </p>
 
    <p>Let us go over a more concrete example of the fixed window
-   rollover policy. Suppose that <span class="prop">minIndex</span> is
-   set to <em>1</em>, <span class="prop">maxIndex</span> set to
-   <em>3</em>, <span class="prop">fileNamePattern</span> property set
-   to <em>foo%i.log</em>, and that <span class="prop">file</span>
-   property is set to <em>foo.log</em>.
+   rollover policy. Suppose that <span class="prop">minIndex</span>
+   is set to <em>1</em>, <span class="prop">maxIndex</span> set to
+   <em>3</em>, <span class="prop">fileNamePattern</span> property
+   set to <em>foo%i.log</em>, and that <span
+   class="prop">fileNamePattern</span> property is set to
+   <em>foo.log</em>.
    </p>
 	
    <table class="bodyTable striped">
@@ -1339,8 +1329,9 @@ public interface RollingPolicy extends LifeCycle {
 </configuration></pre>
 
 
-    <h3 class="doAnchor" name="SizeAndTimeBasedFNATP">Size <b>and</b>
-    time based archiving
+    <h3>
+      <a name="SizeAndTimeBasedFNATP"
+      href="#SizeAndTimeBasedFNATP">Size <b>and</b> time based archiving</a>
     </h3>
 
     <p>Sometimes you may wish to archive files essentially by date but
@@ -1504,8 +1495,8 @@ public interface TriggeringPolicy<E> extends LifeCycle {
 
     </p>
 
-		<h3 class="doAnchor" name="SocketAppender">SocketAppender and
-		SSLSocketAppender
+		<h3> 
+      <a name="SocketAppender" href="#SocketAppender">SocketAppender</a>
     </h3>
 		
 		<p>The appenders covered thus far are only able to log to local
@@ -1513,14 +1504,7 @@ public interface TriggeringPolicy<E> extends LifeCycle {
 		href="../xref/ch/qos/logback/classic/net/SocketAppender.html">
 		<code>SocketAppender</code></a> is designed to log to a remote
 		entity by transmitting serialized <code>ILoggingEvent</code>
-		instances over the wire.  When using <code>SocketAppender</code>
-		logging events on the wire are sent in the clear.  However, when
-		using  <a href="../xref/ch/qos/logback/classic/net/SSLSocketAppender.html">
-		<code>SSLSocketAppender</code></a>, logging events are delivered over
-		a secure channel.</p>
-
-    <p>
-		The actual type of the serialized event
+		instances over the wire.  The actual type of the serialized event
 		is <a
 		href="../xref/ch/qos/logback/classic/spi/LoggingEventVO.html"><code>LoggingEventVO</code></a>
 		which implements the <code>ILoggingEvent</code>
@@ -1580,9 +1564,7 @@ public interface TriggeringPolicy<E> extends LifeCycle {
 		class="prop">remoteHost</span> and <span
 		class="prop">port</span> properties.
 		<code>SocketAppender</code> properties are listed in the following
-		table.  <code>SSLSocketAppender</code> supports many additional
-		configuration properties, which are detailed in the section 
-		entitled <a href="usingSSL.html">Using SSL</a>.
+		table.
 		</p>
 
     <table class="bodyTable striped">
@@ -1592,18 +1574,18 @@ public interface TriggeringPolicy<E> extends LifeCycle {
 			<th>Description</th>
       </tr>
       <tr>
-        <td><span class="prop" container="socket">includeCallerData</span></td>
+        <td><b><span class="prop">includeCallerData</span></b></td>
         <td><code>boolean</code></td>
         <td>
           <p>
-            The <span class="prop" container="socket">includeCallerData</span> option takes a boolean value. 
+            The <span class="prop">includeCallerData</span> option takes a boolean value. 
             If true, the caller data will be available to the remote host. 
             By default no caller data is sent to the server.
           </p>
         </td>
       </tr>
       <tr>
-        <td><span class="prop" container="socket">port</span></td>
+        <td><b><span class="prop">port</span></b></td>
         <td><code>int</code></td>
         <td>
           <p>
@@ -1612,101 +1594,37 @@ public interface TriggeringPolicy<E> extends LifeCycle {
         </td>
       </tr>	
       <tr>
-        <td><span class="prop"
-        container="socket">reconnectionDelay</span></td>
-        <td><code><a
-        href="../apidocs/ch/qos/logback/core/util/Duration.html">Duration</a></code></td>
-        <td>
-          The <span class="prop">reconnectionDelay</span> option takes
-          a duration string, such "10 seconds" representing the time
-          to wait between each failed connection attempt to the
-          server.  The default value of this option is 30 seconds.
-          Setting this option to zero turns off reconnection
-          capability.  Note that in case of successful connection to
-          the server, there will be no connector thread present.
-        </td>
-      </tr>
-      <tr>
-        <td><span class="prop" container="socket">queueSize</span></td>
+        <td><b><span class="prop">reconnectionDelay</span></b></td>
         <td><code>int</code></td>
         <td>
-          <p>The <span class="prop">queueSize</span> property takes a
-          non-negative integer representing the number of logging
-          events to retain for delivery to the remote receiver.  When
-          the queue size is zero, event delivery to the remote
-          receiver is synchronous.  When the queue size is greater
-          than zero, new events are enqueued, assuming that there is
-          space available in the queue.  Using a non-zero queue length
-          can improve performance by eliminating delays caused by
-          transient network delays.
-          </p>
-
-          <p>See also the <span class="prop">eventDelayLimit</span>
-          property.</p>
-
-        </td>
-      </tr>	
-
-      <tr>
-        <td><span class="prop" container="socket">eventDelayLimit</span></td>
-        <td><code><a
-        href="../apidocs/ch/qos/logback/core/util/Duration.html">Duration</a></code></td>
-        <td>
-          The <span class="prop">eventDelayLimit</span> option takes a
-          duration string, such "10 seconds". It represents the time
-          to wait before dropping events in case the local queue is
-          full, i.e. already contains <span
-          class="prop">queueSize</span> events.  This may occur if the
-          remote host is persistently slow accepting events. The
-          default value of this option is 100 milliseconds.
+          The <span class="prop">reconnectionDelay</span> option takes a 
+          positive integer representing the number of milliseconds to wait between 
+          each failed connection attempt to the server. 
+          The default value of this option is 30'000 which corresponds to 30 seconds. 
+          Setting this option to zero turns off reconnection capability. 
+          Note that in case of successful connection to the server, there will be no 
+          connector thread present.
         </td>
       </tr>
       <tr>
-        <td><span class="prop" container="socket">remoteHost</span></td>
+        <td><b><span class="prop">remoteHost</span></b></td>
         <td><code>String</code></td>
         <td>
           The host name of the server.
         </td>
       </tr>		
-      <tr>
-        <td><span class="prop" container="socket">ssl</span></td>
-        <td><code>SSLConfiguration</code></td>
-        <td>Supported only for <code>SSLSocketAppender</code>, this
-            property provides the SSL configuration that will be used by
-            the appender, as described in <a href="usingSSL.html">Using SSL</a>.
-        </td>
-      </tr>
     </table>
     
-    <h4>Logging Server Options</h4>
-    <p>The standard Logback Classic distribution includes two options
-    for servers that can be used to receive logging events from
-    <code>SocketAppender</code> or <code>SSLSocketAppender</code>.</p>
-    <ul>
-      <li><code>ServerSocketReceiver</code> and its SSL-enabled 
-      counterpart <code>SSLServerSocketReceiver</code> are receiver
-      components which can be configured in the <em>logback.xml</em> 
-      configuration file of an application in order receive events
-      from a remote socket appender.  See <a href="receivers.html">
-      Receivers</a> for configuration details and usage examples.
-      </li>
-      <li><code>SimpleSocketServer</code> and its SSL-enabled counterpart
-      <code>SimpleSSLSocketServer</code> both offer an 
-      easy-to-use standalone Java application that is designed to
-      be configured and run from your shell's command line interface.
-      These applications simply wait for logging events from 
-      <code>SocketAppender</code> or <code>SSLSocketAppender</code>
-      clients.  Each received event is logged according to local server 
-      policy.  Usage examples are given below.
-      </li>
-    </ul>
-    
-    <h4><a name="simpleSocketServer"></a>Using SimpleSocketServer</h4>
-    <p>
-    The <code>SimpleSocketServer</code> application takes two command-line
-    arguments: <em>port</em> and <em>configFile</em>; 
-    where <em>port</em> is the port to listen on and
-    <em>configFile</em> is a configuration script in XML format.
+    <p>The standard logback distribution includes a simple log server
+    application named
+    <code>ch.qos.logback.classic.net.SimpleSocketServer</code> that
+    can service multiple <code>SocketAppender</code> clients. It waits
+    for logging events from <code>SocketAppender</code> clients. After
+    reception by <code>SimpleSocketServer</code>, the events are
+    logged according to local server policy.  The
+    <code>SimpleSocketServer</code> application takes two parameters:
+    port and configFile; where port is the port to listen on and
+    configFile is a configuration script in XML format.
     </p>
 	
     <p>
@@ -1776,6 +1694,7 @@ public interface TriggeringPolicy<E> extends LifeCycle {
 
 </configuration></pre>
 	
+	
 		<p>
 			Note that in the above configuration scripts the values for the 
 			<span class="prop">remoteHost</span>, <span class="prop">port</span> and
@@ -1832,267 +1751,9 @@ public interface TriggeringPolicy<E> extends LifeCycle {
 		its clients to a second server.
 		</p>
 		
-		<h4><a name="simpleSSLSocketServer"></a>Using SimpleSSLSocketServer</h4>
-
-    <p>The <code>SimpleSSLSocketServer</code> requires the same
-    <em>port</em> and <em>configFile</em> command-line arguments used
-    by <code>SimpleSocketServer</code>.  Additionally, you must provide
-    the location and password for your logging server's X.509 credential
-    using system properties specified on the command line.
-    </p>
-    
-    <p>Assuming you are in the <em>logback-examples/</em> directory, 
-    start <code>SimpleSSLSocketServer</code> with the following command:
-    </p>
-
-    <p class="source">java -Djavax.net.ssl.keyStore=src/main/java/chapters/appenders/socket/ssl/keystore.jks \
-    -Djavax.net.ssl.keyStorePassword=changeit \
-    ch.qos.logback.classic.net.SimpleSSLSocketServer 6000 \
-    src/main/java/chapters/appenders/socket/ssl/server.xml
-    </p>
-	
-    <p>This example runs <code>SimpleSSLSocketServer</code> using an
-    X.509 credential that is suitable for testing and experimentation, 
-    only.  <strong>Before using <code>SimpleSSLSocketServer</code> in a
-    production setting you should obtain an appropriate X.509 credential
-    to identify your logging server</strong>.  See 
-    <a href="usingSSL.html">Using SSL</a> for more details.
-    </p>
-    
-    <p>Because the server configuration has <code>debug="true"</code>
-    specified on the root element, you'll will see in the server's
-    startup logging the SSL configuration that will be used.  This is
-    useful in validating that local security policies are properly
-    implemented.
-    </p>
-
-    <p>With <code>SimpleSSLSocketServer</code> running, you can connect
-    to the server using an <code>SSLSocketAppender</code>.  The following
-    example shows the appender configuration needed:
-    </p>
-      
-   	<p class="example">Example: SSLSocketAppender configuration
-		(logback-examples/src/main/java/chapters/appenders/socket/ssl/client.xml)</p>
-    <span class="asGroovy" onclick="return asGroovy('sslclient');">View as .groovy</span>
-<pre id="sslclient" class="prettyprint source"><configuration debug="true">
-	  
-  <appender name="SOCKET" class="ch.qos.logback.classic.net.SSLSocketAppender">
-    <remoteHost>${host}</remoteHost>
-    <port>${port}</port>
-    <reconnectionDelay>10000</reconnectionDelay>
-    <ssl>
-      <trustStore>
-        <location>${truststore}</location>
-        <password>${password}</password>
-      </trustStore>
-    </ssl>
-  </appender>
-
-  <root level="DEBUG">
-    <appender-ref ref="SOCKET" />
-  </root>  
-
-</configuration></pre>
-	  
-	  <p>Note that, just as in the previous example, the values for
-	  <span class="prop">remoteHost</span>, <span class="prop">port</span>
-	  are specified using substituted variable keys.  Additionally, note
-	  the presence of the <span class="prop">ssl</span> property and its
-	  nested <span class="prop">trustStore</span> property, which specifies
-	  the location and password of a trust store using substituted
-	  variables.  This configuration is necessary because our example
-	  server is using a self-signed certificate.  See 
-	  <a href="usingSSL.html">Using SSL</a> for more information on 
-	  SSL configuration properties for <code>SSLSocketAppender</code>.
-	  </p>
-
-    <p>We can run a client application using this configuration by
-    specifying the substitution variable values on the command line as
-    system properties:
-    </p>
-    	  	
-    <p class="source">java -Dhost=localhost -Dport=6000 \
-    -Dtruststore=file:src/main/java/chapters/appenders/socket/ssl/truststore.jks \
-    -Dpassword=changeit \
-    chapters.appenders.socket.SocketClient2 src/main/java/chapters/appenders/socket/ssl/client.xml
- 	  </p>
- 	  
- 	  <p>As in the previous examples, you can type in a message when 
- 	  prompted by the client application, and the message will be delivered
- 	  to the logging server (now over a secure channel) where it will be
- 	  displayed on the console.
- 	  </p>
- 	  
- 	  <p>Note that the <em>truststore</em> property given on the command
- 	  line specifies a file URL that identifies the location of the
- 	  trust store.  You may also use a classpath URL as described in <a
- 	  href="usingSSL.html">Using SSL</a>.
- 	  </p>
- 
-    <p>As we saw previously at server startup, because the client
-    configuration has <code>debug="true"</code> specified on the root
-    element, the client's startup logging includes the details of the
-    SSL configuration as aid to auditing local policy conformance.
-    </p>
- 	  
- 	  
-    <h3 class="doAnchor" name="serverSocketAppender">
-      ServerSocketAppender and SSLServerSocketAppender</h3>
-    
-    <p>The <code>SocketAppender</code> component (and its SSL-enabled
-    counterpart) discussed previously are designed to allow an
-    application to connect to a remote logging server over the network
-    for the purpose of delivering logging events to the server.  In
-    some situations, it may be inconvenient or infeasible to have an
-    application initiate a connection to a remote logging server.  For
-    these situations, Logback offers <a
-    href="../xref/ch/qos/logback/classic/net/server/ServerSocketAppender">
-    <code>ServerSocketAppender</code></a>.
-    </p>
-    
-    <p>Instead of initiating a connection to a remote logging server, 
-    <code>ServerSocketAppender</code> passively listens on a TCP socket
-    awaiting incoming connections from remote clients.  Logging events
-    that are delivered to the appender are distributed to each connected
-    client.  Logging events that occur when no client is connected are
-    <em>summarily discarded</em>.
-    </p>
-    
-    <p>In addition to the basic <code>ServerSocketAppender</code>, Logback
-    offers <a href="../xref/ch/qos/logback/classic/net/server/SSLServerSocketAppender">
-    <code>SSLServerSocketAppender</code></a>, which distributes logging events
-    to each connected client using a secure, encrypted channel.  Moreover, the
-    SSL-enabled appender fully supports mutual certificate-based authentication,
-    which can be used to ensure that only authorized clients can connect to
-    the appender to receive logging events.   
-    </p>
-   
-    <p>The approach to encoding logging events for transmission on the wire 
-    is identical to that used by <code>SocketAppender</code>; each event is 
-    a serialized instance of <code>ILoggingEvent</code>.  Only the direction 
-    of connection initiation is reversed.  While <code>SocketAppender</code> 
-    acts as the active peer in establishing the connection to a logging server,
-    <code>ServerSocketAppender</code> is passive; it listens for
-    incoming connections from clients.</p>  
-
-    <p>The <code>ServerSocketAppender</code> subtypes are intended to be
-    used exclusively with Logback <em>receiver</em> components.  See
-    <a href="receivers.html">Receivers</a> for additional information on
-    this component type.</p>
-    
-    <p>The following configuration properties are supported by 
-    <code>ServerSocketAppender</code>:</p>
-    
-    <table class="bodyTable striped">
-      <tr>
-      <th>Property Name</th>
-      <th>Type</th>
-      <th>Description</th>
-      </tr>
-      <tr>
-        <td><span class="prop" container="serverSocketAppender">address</span></td>
-        <td><code>String</code></td>
-        <td>The local network interface address on which the appender
-        will listen.  If this property is not specified, the appender
-        will listen on all network interfaces.</td>
-      </tr>
-      <tr>
-        <td><span class="prop" container="serverSocketAppender">includeCallerData</span></td>
-        <td><code>boolean</code></td>
-        <td>
-          <p>
-            If true, the caller data will be available to the remote host. 
-            By default no caller data is sent to the client.
-          </p>
-        </td>
-      </tr>
-      <tr>
-        <td><span class="prop" container="serverSocketAppender">port</span></td>
-        <td><code>int</code></td>
-        <td>
-          <p>
-            The port number on which the appender will listen.
-          </p>
-        </td>
-      </tr> 
-      <tr>
-        <td><span class="prop" container="serverSocketAppender">ssl</span></td>
-        <td><code>SSLConfiguration</code></td>
-        <td>Supported only for <code>SSLServerSocketAppender</code>, this
-            property provides the SSL configuration that will be used by
-            the appender, as described in <a href="usingSSL.html">Using SSL</a>.
-        </td>
-      </tr>
-    </table>
-    
-    <p>The following example illustrates a configuration that uses
-      <code>ServerSocketAppender</code>:
-    </p>
-
-    <p class="example">Example: Basic ServerSocketAppender Configuration
-    (logback-examples/src/main/java/chapters/appenders/socket/server4.xml)</p>
-<pre id="SocketReceiver" class="prettyprint source"><configuration debug="true">
-  <appender name="SERVER" 
-    class="ch.qos.logback.classic.net.server.ServerSocketAppender">
-    <port>${port}</port>
-    <includeCallerData>${includeCallerData}</includeCallerData>
-  </appender>
-
-  <root level="debug">
-    <appender-ref ref="SERVER" />
-  </root>  
-
-</configuration>
-</pre>
-    <p>Note that this configuration differs from previous examples using
-    <code>SocketAppender</code> only in the <em>class</em> specified for
-    the appender, and in the absence of the <span class="prop">remoteHost</span>
-    property — this appender waits passively for inbound connections 
-    from remote hosts rather than opening a connection to a remote logging
-    server.
-    </p>
-    
-    <p>The following example illustrates a configuration using
-    <code>SSLServerSocketAppender</code>.</p>
-        
-     <p class="example">Example: Basic SSLServerSocketAppender Configuration
-    (logback-examples/src/main/java/chapters/appenders/socket/ssl/server3.xml)</p>
-<pre id="SocketReceiver" class="prettyprint source"><configuration debug="true">
-  <appender name="SERVER" 
-    class="ch.qos.logback.classic.net.server.SSLServerSocketAppender">
-    <port>${port}</port>
-    <includeCallerData>${includeCallerData}</includeCallerData>
-    <ssl>
-      <keyStore>
-        <location>${keystore}</location>
-        <password>${password}</password>
-      </keyStore>
-    </ssl>
-  </appender>
-
-  <root level="debug">
-    <appender-ref ref="SERVER" />
-  </root>  
+		
+   <h3><a name="SMTPAppender" href="#SMTPAppender">SMTPAppender</a></h3>
 
-</configuration>
-</pre>
-   
-    <p>The principal differences between this configuration and the
-    previous configuration is that the appender's <em>class</em> attribute
-    identifies the <code>SSLServerSocketAppender</code> type, and the
-    presence of the nested <span class="prop">ssl</span> element which
-    specifies, in this example, configuration of a key store containing
-    an X.509 credential for the appender.  See <a href="usingSSL.html">
-    Using SSL</a> for information regarding SSL configuration properties.
-    </p>
-    
-    <p>Because the <code>ServerSocketAppender</code> subtypes are designed
-    to be used with receiver components, we will defer presenting 
-    illustrative examples to the chapter entitled 
-    <a href="receivers.html">Receivers</a>.</p>
-    
-   <h3 class="doAnchor">SMTPAppender</h3>
-   
    <p>The <a
    href="../xref/ch/qos/logback/classic/net/SMTPAppender.html"><code>SMTPAppender</code></a>
    accumulates logging events in one or more fixed-size buffers and
@@ -2115,20 +1776,20 @@ public interface TriggeringPolicy<E> extends LifeCycle {
       </tr>
 
       <tr>
-        <td><span class="prop" container="smtp">smtpHost</span></td>
+        <td><b><span class="prop">smtpHost</span></b></td>
         <td><code>String</code></td>
         <td>The host name of the SMTP server. This parameter is mandatory.</td>
       </tr>
       
       <tr>
-        <td><span class="prop" container="smtp">smtpPort</span></td>
+        <td><b><span class="prop">smtpPort</span></b></td>
         <td><code>int</code></td>
         <td>The port where the SMTP server is listening. Defaults to
         25.</td>
       </tr>
       
       <tr>
-        <td><span class="prop" name="smtpTo">to</span></td>
+        <td><a name="smtpTo" href="#smtpTo"><b><span class="prop">to</span></b></a></td>
         <td><code>String</code></td>
         <td>The email address of the recipient as a
         <em>pattern</em>. The pattern is evaluated anew with the
@@ -2141,7 +1802,7 @@ public interface TriggeringPolicy<E> extends LifeCycle {
       </tr>
 
       <tr>
-        <td><span class="prop" container="smtp">from</span></td>
+        <td><b><span class="prop">from</span></b></td>
         <td><code>String</code></td>
         <td>The originator of the email messages sent by
         <code>SMTPAppender</code> in the <a
@@ -2154,7 +1815,7 @@ public interface TriggeringPolicy<E> extends LifeCycle {
         </td>
       </tr>
       <tr>
-        <td><span class="prop">subject</span></td>
+        <td><b><span class="prop">subject</span></b></td>
         <td><code>String</code></td>
         <td> 
           <p>The subject of the email. It can be any value accepted as
@@ -2180,7 +1841,7 @@ public interface TriggeringPolicy<E> extends LifeCycle {
         
       </tr>
       <tr>
-        <td><span class="prop" container="smtp">discriminator</span></td>
+        <td><b><span class="prop">discriminator</span></b></td>
         <td><code><a href="../xref/ch/qos/logback/core/sift/Discriminator.html">Discriminator</a></code></td>
         <td>
           <p>With the help of a <span
@@ -2199,7 +1860,8 @@ public interface TriggeringPolicy<E> extends LifeCycle {
         </td>
       </tr>
       <tr>
-        <td><span class="prop" name="smtpAppender_Evaluator">evaluator</span></td>
+        <td><b><span class="prop"><a name="smtpAppender_Evaluator"
+        href="#smtpAppender_Evaluator">evaluator</a></span></b></td>
         <td><code><a
         href="../xref/ch/qos/logback/classic/boolex/IEvaluator.html">IEvaluator</a></code></td>
         <td>
@@ -2241,7 +1903,7 @@ public interface TriggeringPolicy<E> extends LifeCycle {
       </tr>
 
       <tr>
-        <td  valign="top"><span class="prop" container="smtp">cyclicBufferTracker</span></td>
+        <td  valign="top"><b><span class="prop">cyclicBufferTracker</span></b></td>
         <td><a href="../xref/ch/qos/logback/core/spi/CyclicBufferTracker.html"><code>CyclicBufferTracker</code></a>
         </td>
         <td>
@@ -2260,20 +1922,20 @@ public interface TriggeringPolicy<E> extends LifeCycle {
         </td>        
       </tr>
       <tr>
-        <td><span class="prop" container="smtp">username</span></td>
+        <td><b><span class="prop">username</span></b></td>
         <td><code>String</code></td> <td>The username value to use
         during plain user/password authentication. By default, this
         parameter is null.  </td> 
       </tr> 
       <tr class="alt">
-        <td><span class="prop" container="smtp">password</span></td>
+        <td><b><span class="prop">password</span></b></td>
         <td><code>String</code></td>
         <td>The password value to use for plain user/password
         authentication. By default, this parameter is null.  
         </td>
       </tr>
       <tr> 
-        <td><span class="prop" container="smtp">STARTTLS</span> </td>
+        <td><b><span class="prop">STARTTLS</span></b> </td>
         <td><code>boolean</code></td> 
         <td>If this parameter is set to true, then this appender
         will issue the STARTTLS command (if the server supports it)
@@ -2283,14 +1945,14 @@ public interface TriggeringPolicy<E> extends LifeCycle {
         </td> 
       </tr>
       <tr>
-        <td><span class="prop" container="smtp">SSL</span></td>
+        <td><b><span class="prop">SSL</span></b></td>
         <td><code>boolean</code></td> <td>If this parameter is set to
         true, then this appender will open an SSL connection to the
         server. By default, this parameter is set to false.  </td>
       </tr>
 
       <tr>
-        <td><span class="prop" container="smtp">charsetEncoding</span></td>
+        <td><b><span class="prop">charsetEncoding</span></b></td>
         <td><code>String</code></td>
         <td>The outgoing email message will be encoded in the
         designated <a
@@ -2302,7 +1964,7 @@ public interface TriggeringPolicy<E> extends LifeCycle {
 
 
       <tr>
-        <td><span class="prop" container="smtp">localhost</span></td>
+        <td><b>localhost</b></td>
         <td><code>String</code></td>
         <td>In case the hostname of the SMTP client is not properly
         configured, e.g. if the client hostname is not fully
@@ -2317,7 +1979,7 @@ public interface TriggeringPolicy<E> extends LifeCycle {
       </tr>
 
       <tr>
-        <td><span class="prop" container="smtp">asynchronousSending</span></td>
+        <td><b>asynchronousSending</b></td>
         <td><code>boolean</code></td>
         <td>This property determines whether email transmission is
         done asynchronously or not. By default, the <span
@@ -2332,54 +1994,6 @@ public interface TriggeringPolicy<E> extends LifeCycle {
         </td>
       </tr>
 
-      <tr>
-        <td><span class="prop" container="smtp">includeCallerData</span></td>
-        <td><code>boolean</code></td>
-        <td>By default, <span class="prop">includeCallerData</span> is
-        set to <code>false</code>. You should set <span
-        class="prop">includeCallerData</span> to <code>true</code> if
-        <span class="prop">asynchronousSending</span> is enabled and
-        you wish to include caller data in the logs. </td>
-      </tr>
-
-      <tr>
-        <td><span class="prop" container="smtp">sessionViaJNDI</span></td>
-        <td><code>boolean</code></td>
-        <td><code>SMTPAppender</code> relies on
-        <code>javax.mail.Session</code> to send out email messages. By
-        default, <span class="prop">sessionViaJNDI</span> is set to
-        <code>false</code> so the <code>javax.mail.Session</code>
-        instance is built by <code>SMTPAppender</code> itself with the
-        properties specified by the user. If the <span
-        class="prop">sessionViaJNDI</span> property is set to
-        <code>true</code>, the <code>javax.mail.Session</code> object
-        will be retrieved via JNDI. See also the <span
-        class="prop">jndiLocation</span> property.
-
-        <p>Retrieving the <code>Session</code> via JNDI can reduce the
-        number of places you need to configure/reconfigure the same
-        information, making your application <a
-        href="http://en.wikipedia.org/wiki/Don't_repeat_yourself">dryer</a>. For
-        more information on configuring resources in Tomcat see <a
-        href="http://tomcat.apache.org/tomcat-6.0-doc/jndi-resources-howto.html#JavaMail_Sessions">JNDI
-        Resources How-to</a>. <span class="label">beware</span> As
-        noted in that document, make sure to remove <em>mail.jar</em>
-        and <em>activation.jar</em> from your web-applications
-        <em>WEB-INF/lib</em> folder when retrieving the
-        <code>Session</code> from JNDI.
-        </p>
-        </td>
-      </tr>
-
-      <tr>
-        <td><span class="prop" container="smtp">jndiLocation</span></td>
-        <td><code>String</code></td>
-        <td>The location where the javax.mail.Session is placed in
-        JNDI. By default, <span class="prop">jndiLocation</span> is
-        set to <span style="white-space:nowrap">"java:comp/env/mail/Session"</span>.
-        </td>
-      </tr>
-
 		</table>		
 		
 		<p>The <code>SMTPAppender</code> keeps only the last 256 logging
@@ -2509,8 +2123,7 @@ public interface TriggeringPolicy<E> extends LifeCycle {
     <code>HTMLLayout</code> does not use inline CSS.
     </p>
 
-    <h3 class="doAnchor" name="cyclicBufferSize">Custom buffer
-    size</h3>
+    <h3><a name="cyclicBufferSize" href="#cyclicBufferSize">Custom buffer size</a></h3>
 
     <p>By default, the outgoing message will contain the last 256
     messages seen by <code>SMTPAppender</code>. If your heart so
@@ -2526,7 +2139,7 @@ public interface TriggeringPolicy<E> extends LifeCycle {
     <subject>%logger{20} - %m</subject>
     <layout class="ch.qos.logback.classic.html.HTMLLayout"/>
 
-    <b><cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker"></b>
+    <b><cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTrackerImpl"></b>
       <b><!-- send just one log entry per email --></b>
       <b><bufferSize>1</bufferSize></b>
     <b></cyclicBufferTracker></b>
@@ -2538,7 +2151,7 @@ public interface TriggeringPolicy<E> extends LifeCycle {
 </configuration>    </pre>
     
 
-    <h3 class="doAnchor">Triggering event</h3>
+    <h3>Triggering event</h3>
 
     <p>If the Evaluator property is not set, the
     <code>SMTPAppender</code> defaults to an <a
@@ -2634,8 +2247,9 @@ public class CounterBasedEvaluator extends ContextAwareBase implements EventEval
 </configuration></pre>
     
 
-    <h3 class="doAnchor" name="OnMarkerEvaluator">Marker based
-    triggering </h3>
+    <h3><a name="OnMarkerEvaluator" href="#OnMarkerEvaluator">Marker
+    based triggering</a> 
+    </h3>
 
     <p>Although reasonable, the default triggering policy whereby every
     event of level ERROR triggers an outgoing email may result in too
@@ -2693,8 +2307,9 @@ logger.error(<b>notifyAdmin</b>,
   chapters.appenders.mail.Marked_EMail src/main/java/chapters/appenders/mail/mailWithMarker.xml</pre>
 
 
-  <h4 class="doAnchor" name="marker_JaninoEventEvaluator">Marker-based
-  triggering with JaninoEventEvaluator</h4>
+  <h4><a name="marker_JaninoEventEvaluator"
+    href="#marker_GEventEvaluator">Marker-based triggering with
+    JaninoEventEvaluator</a></h4>
 
     <p>Note that instead of using the marker-centric
     <code>OnMarkerEvaluator</code>, we could use the much more generic
@@ -2724,9 +2339,9 @@ logger.error(<b>notifyAdmin</b>,
   </appender>
 </configuration></pre>
 
-    <h4 class="doAnchor" name="marker_GEventEvaluator">Marker-based
-    triggering with GEventEvaluator</h4>
-
+    <h4><a name="marker_GEventEvaluator"
+    href="#marker_GEventEvaluator">Marker-based triggering with
+    GEventEvaluator</a></h4>
     <p>Here is the equivalent evaluator using <a
     href="filters.html#GEventEvaluator">GEventEvaluator</a>.</p>
 
@@ -2752,7 +2367,9 @@ logger.error(<b>notifyAdmin</b>,
     </p>
 
 
-    <h3 class="doAnchor" name="smtpAuthentication">Authentication/STARTTLS/SSL</h3>
+
+    <h3><a name="smtpAuthentication"
+    href="#smtpAuthentication">Authentication/STARTTLS/SSL</a></h3>
 
     <p><code>SMTPAppender</code> supports authentication via plain
     user passwords as well as both the STARTTLS and SSL
@@ -2763,8 +2380,8 @@ logger.error(<b>notifyAdmin</b>,
     connection is encrypted right from the start.
     </p>
 
-    <h3> class="doAnchor"name="gmailSSL">SMTPAppender configuration
-    for Gmail (SSL)</h3>
+    <h3><a name="gmailSSL" href="#gmailSSL">SMTPAppender configuration
+    for Gmail (SSL)</a></h3>
 
     <p>The next example shows you how to configure
     <code>SMTPAppender</code> for Gmail with the SSL protocol. </p>
@@ -2773,8 +2390,8 @@ logger.error(<b>notifyAdmin</b>,
     using SSL
     (logback-examples/src/main/java/chapters/appenders/mail/gmailSSL.xml)</p>
 
-    <span class="asGroovy" onclick="return asGroovy('gmailSSLExample');">View as .groovy</span>	
-    <pre id="gmailSSLExample" class="prettyprint source"><configuration>
+    <span class="asGroovy" onclick="return asGroovy('gmailSSL');">View as .groovy</span>	
+    <pre id="gmailSSL" class="prettyprint source"><configuration>
   <appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
     <b><smtpHost>smtp.gmail.com</smtpHost></b>
     <b><smtpPort>465</smtpPort></b>
@@ -2797,16 +2414,16 @@ logger.error(<b>notifyAdmin</b>,
 </configuration></pre>
 
 
-    <h3 class="doAnchor" name="gmailSTARTTLS">SMTPAppender for Gmail
-    (STARTTLS)</h3>
+    <h3><a name="gmailSTARTTLS" href="#gmailSTARTTLS">SMTPAppender for Gmail
+    (STARTTLS)</a></h3>
 
     <p>The next example shows you how to configure
     <code>SMTPAppender</code> for Gmail for the STARTTLS protocol. </p>
 
     <p class="example">Example: <code>SMTPAppender</code> to GMAIL using STARTTLS (logback-examples/src/main/java/chapters/appenders/mail/gmailSTARTTLS.xml)</p>
 
-    <span class="asGroovy" onclick="return asGroovy('gmailSTARTTLSExample');">View as .groovy</span>	
-    <pre id="gmailSTARTTLSExample" class="prettyprint source"><configuration>	  
+    <span class="asGroovy" onclick="return asGroovy('gmailSTARTTLS');">View as .groovy</span>	
+    <pre id="gmailSTARTTLS" class="prettyprint source"><configuration>	  
   <appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
     <smtpHost>smtp.gmail.com</smtpHost>
     <smtpPort>587</smtpPort>
@@ -2829,8 +2446,9 @@ logger.error(<b>notifyAdmin</b>,
 </configuration></pre>
 
 
-    <h3 class="doAnchor" name="smtpDiscriminator">SMTPAppender with MDCDiscriminator</h3>
-
+    <h3><a name="smtpDiscriminator"
+    href="#smtpDiscriminator">SMTPAppender with
+    MDCDiscriminator</a></h3>
 
     <p>As mentioned earlier, by specifying a discriminator other than
     the default one, <code>SMTPAppender</code> will generate email
@@ -2880,8 +2498,8 @@ logger.error(<b>notifyAdmin</b>,
     host, greatly facilitating problem diagnosis.
     </p>
     
-    <h4 class="doAnchor" name= "bufferManagement">Buffer management in
-    very busy systems</h4>
+    <h4><a name= "bufferManagement" href="#bufferManagement">Buffer
+    management in very busy systems</a></h4>
 
     <p>Internally, each distinct value returned by the discriminator
     will cause the creation of a new cyclic buffer. However, at most
@@ -2923,7 +2541,9 @@ logger.error(<b>notifyAdmin</b>,
     <!-- =========================================================== -->
 
 
-    <h3 class="doAnchor" name="DBAppender">DBAppender</h3>
+    <h3>
+      <a name="DBAppender" href="#DBAppender">DBAppender</a>
+		</h3>
 		
 		<p>The <a
 		href="../xref/ch/qos/logback/classic/db/DBAppender.html"><code>DBAppender</code></a>
@@ -2935,9 +2555,9 @@ logger.error(<b>notifyAdmin</b>,
 		<em>logging_event_property</em> and
 		<em>logging_event_exception</em>. They must exist before
 		<code>DBAppender</code> can be used. Logback ships with SQL
-		scripts that will create the tables.  They can be found under the
+		scripts that will create the tables.  They can be found in the
 		<em>logback-classic/src/main/java/ch/qos/logback/classic/db/script</em>
-		folder. There is a specific script for each of the most popular
+		directory. There is a specific script for each of the most popular
 		database systems.  If the script for your particular type of
 		database system is missing, it should be quite easy to write one,
 		taking example on the already existing scripts. If you send them
@@ -2956,7 +2576,7 @@ logger.error(<b>notifyAdmin</b>,
 		of the <code>getGeneratedKeys()</code> method.
 		</p>
 
-		<table class="bodyTable striped" border="0" cellpadding="4">
+		<table class="bodyTable striped" border="1" cellpadding="4">
 			<tr>
 				<th>RDBMS</th>
         <th>tested version(s)
@@ -3272,17 +2892,15 @@ logger.error(<b>notifyAdmin</b>,
 			traditional JDBC manner based on the connection URL.
 		</p>
 		<p>
-			Note that this class will establish a new
-			<code>Connection</code> for each call to
-			<code>getConnection()</code>. It is recommended that you either
-			use a JDBC driver that natively supports connection pooling or
-			that you create your own implementation of
-			<code>ConnectionSource</code> that taps into whatever pooling
-			mechanism you are already using. If you have access to a JNDI
-			implementation that supports <code>javax.sql.DataSource</code>,
-			e.g. within a J2EE application server, see <a
-			href="#JNDIConnectionSource"><code>JNDIConnectionSource</code></a>
-			below.
+			Note that this class will establish a new <code>Connection</code> for
+			each call to <code>getConnection()</code>. It is recommended
+			that you either use a JDBC driver that natively supports
+			connection pooling or that you create your own
+			implementation of <code>ConnectionSource</code> that taps into
+			whatever pooling mechanism you are already using. (If you
+			have access to a JNDI implementation that supports
+			<code>javax.sql.DataSource</code>, e.g. within a J2EE application
+			server, see <code>JNDIConnectionSource</code>).
 		</p>
 <!-- 
 		
@@ -3312,20 +2930,21 @@ logger.error(<b>notifyAdmin</b>,
 		</p>
  -->
  
-		<p>Connecting to a database using a <code>DataSource</code> is
-		rather similar.  The configuration now uses <a
-		href="../xref/ch/qos/logback/core/db/DataSourceConnectionSource.html">
-		<code>DataSourceConnectionSource</code></a>, which is an
-		implementation of <code>ConnectionSource</code> that obtains the
-		<code>Connection</code> in the recommended JDBC manner based on a
-		<code>javax.sql.DataSource</code>.
+		<p>
+			Connecting to a database using a <code>DataSource</code> is rather similar.
+			The configuration now uses 
+			<a href="../xref/ch/qos/logback/core/db/DataSourceConnectionSource.html">
+			<code>DataSourceConnectionSource</code></a>, 
+			which is an implementation of <code>ConnectionSource</code> that obtains the 
+			<code>Connection</code> in the recommended JDBC manner based on a 
+			<code>javax.sql.DataSource</code>.
 		</p>
 	
     <p class="example">Example: <code>DBAppender</code> configuration (logback-examples/src/main/java/chapters/appenders/db/append-with-datasource.xml)</p>	
 
 
     <span class="asGroovy" onclick="return asGroovy('append-with-datasource');">View as .groovy</span>	
-    <pre id="append-with-datasource" class="prettyprint source"><configuration  debug="true">
+    <pre id="append-with-datasource" class="prettyprint source"><configuration>
 
   <appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
      <b><connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">
@@ -3345,25 +2964,24 @@ logger.error(<b>notifyAdmin</b>,
      </connectionSource>
   </appender>
 
-  <root level="INFO">
+  <root level="DEBUG">
     <appender-ref ref="DB" />
   </root>  
 </configuration></pre>
 
-		<p>Note that in this configuration sample, we make heavy use of
-		substitution variables.  They are sometimes handy when connection
-		details have to be centralized in a single configuration file and
-		shared by logback and other frameworks.
+		<p>
+			Note that in this configuration sample, we make heavy use of substitution variables.
+			They are sometimes handy when connection details have to be centralized in a
+			single configuration file and shared by logback and other frameworks.
 		</p>	
 		
-<!-- TO BE TESTED 
-
-     <p>The connection created by
-     <code>DataSourceConnectionSource</code> can be placed in a JNDI
-     context by using <code>BindDataSourceToJNDIAction</code>. In that
-     case, one has to specify the use of this class by adding a new
-     rule to Joran, logback's configuration framework. Here is an
-     excerpt of such a configuration file.  </p>
+<!-- 		TO BE TESTED		
+		<p>
+			The connection created by <code>DataSourceConnectionSource</code> can be placed in a JNDI
+			context by using <code>BindDataSourceToJNDIAction</code>. In that case, one has to specify
+			the use of this class by adding a new rule to Joran, logback's configuration framework. Here
+			is an excerpt of such a configuration file.
+		</p>
 		
 <div class="source"><pre><configuration>
   ..
@@ -3374,78 +2992,43 @@ logger.error(<b>notifyAdmin</b>,
   ..
 </configuration></pre></div>
 
-		<p> The <em>newRule</em> element teaches Joran to use specified
-		action class with the given pattern.  Then, we simply declare the
-		given element. The action class will be called and our connection
-		source will be bound to a JNDI context.  </p>
+		<p>
+			The <em>newRule</em> element teaches Joran to use specified action class with the given pattern.
+			Then, we simply declare the given element. The action class will be called and our connection
+			source will be bound to a JNDI context.
+		</p>
 
 		<p>This is a very powerful capability of Joran. If you'd like to
-		read more about Joran, please see the <a
-		href="onJoran.html">chapter to Joran</a>.  </p>
+			read more about Joran, please see the <a
+			href="onJoran.html">chapter to Joran</a>.
+		</p>
 		
 		-->
 
-    <h4 class="doAnchor"
-    name="JNDIConnectionSource">JNDIConnectionSource</h4>
-
-		<p><a
-		href="../xref/ch/qos/logback/core/db/JNDIConnectionSource.html">
-		<code>JNDIConnectionSource</code></a> is another
-		<code>ConnectionSource</code> implementation shipping in logback.
-		As its name indicates, it retrieves a
-		<code>javax.sql.DataSource</code> from a JNDI and then leverages
-		it to obtain a <code>java.sql.Connection</code>
-		instance. <code>JNDIConnectionSource</code> is primarily designed
-		to be used inside J2EE application servers or by application
-		server clients, assuming the application server supports remote
-		access of <code>javax.sql.DataSource</code>.  Thus, one can take
-		advantage of connection pooling and whatever other goodies the
-		application server provides. More importantly, your application
-		will be <a
-		href="http://en.wikipedia.org/wiki/Don't_repeat_yourself">dryer</a>
-		as it will be no longer necessary to define a
-		<code>DataSource</code> in <em>logback.xml</em>.</p>
-
-    <p>For example, here is a configuration snippet for Tomcat. It
-    assumes PostgreSQL as the database although any of the supported
-    database systems (listed above) would work.</p>
-
-<pre  class="prettyprint source"><Context docBase="/path/to/app.war" path="/myapp">
-  ...
-  <Resource <b>name="jdbc/logging"</b>
-               auth="Container"
-               type="javax.sql.DataSource"
-               username="..."
-               password="..."
-               driverClassName="org.postgresql.Driver"
-               url="jdbc:postgresql://localhost/..."
-               maxActive="8"
-               maxIdle="4"/>
-  ...
-</Context></pre>
-		
-   <p>Once a <code>DataSource</code> is defined in the J2EE server, it
-   can be easily referenced by your logback configuration file, as
-   shown in the next example.</p>
-   
-   <p class="example">Example: <code>DBAppender</code> configuration
-   by <code>JNDIConnectionSource</code>
-   (logback-examples/src/main/java/chapters/appenders/db/append-via-jndi.xml)</p>
-
-    <span class="asGroovy" onclick="return asGroovy('append-via-jndi');">View as .groovy</span>	
- 
+		<p>
+			The third implementation of <code>ConnectionSource</code> that is shipped with
+			logback is the <code>JNDIConnectionSource</code>.
+		</p>
 
-<pre id="append-via-jndi" class="prettyprint source"><configuration debug="true">
-  <appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
-    <connectionSource class="ch.qos.logback.core.db.JNDIConnectionSource">
-      <b><!-- please note the "java:comp/env/" prefix --></b>
-      <b><jndiLocation>java:comp/env/jdbc/logging</jndiLocation></b>
-    </connectionSource>
-  </appender>
-  <root level="INFO">
-    <appender-ref ref="DB" />
-  </root>  
-</configuration></pre>
+		<p>
+			The
+			<a href="../xref/ch/qos/logback/core/db/JNDIConnectionSource.html">
+			<code>JNDIConnectionSource</code></a>
+			is an implementation of <code>ConnectionSource</code> that
+			obtains a <code>javax.sql.DataSource</code> from a JNDI provider
+			and uses it to obtain a <code>java.sql.Connection</code>. It is
+			primarily designed to be used inside of J2EE application
+			servers or application server clients, assuming the
+			application server supports remote access of <code>javax.sql.DataSource</code>. 
+			In this way one can take advantage of connection pooling and whatever other goodies the
+			application server provides.
+		</p>
+		
+<pre class="prettyprint source"><connectionSource class="ch.qos.logback.core.db.JNDIConnectionSource">
+  <param name="jndiLocation" value="jdbc/MySQLDS" />
+  <param name="username" value="myUser" />
+  <param name="password" value="myPassword" />
+</connectionSource></pre>
 
 		<p>
 			Note that this class will obtain an
@@ -3457,12 +3040,13 @@ logger.error(<b>notifyAdmin</b>,
 			file as described by your JNDI provider's documentation.
 		</p>
 		
-		<h4 class="doAnchor">Connection pooling</h4>
+		<h4>Connection pooling</h4>
 		
-		<p>Logging events can be created at a rather fast pace. To keep up
-		with the flow of events that must be inserted into a database, it
-		is recommended to use connection pooling with
-		<code>DBAppender</code>.
+		<p>
+			Logging events can be created at a rather fast pace. To keep up
+			with the flow of events that must be inserted into a database, 
+			it is recommended to use connection pooling with
+			<code>DBAppender</code>.
 		</p>
 		
 		<p>
@@ -3539,7 +3123,9 @@ logger.error(<b>notifyAdmin</b>,
 		improvement in performance.
 		</p>
 
-		<h3 class="doAnchor" name="SyslogAppender">SyslogAppender</h3>
+		<h3><a name="SyslogAppender"
+		href="#SyslogAppender">SyslogAppender</a>
+    </h3>
 
 		<p>The syslog protocol is a very simple protocol: a syslog sender
 		sends a small message to a syslog receiver.  The receiver is
@@ -3558,12 +3144,12 @@ logger.error(<b>notifyAdmin</b>,
 				<th>Description</th>
 			</tr>
 			<tr>
-				<td><span class="prop" container="syslog">syslogHost</span></td>
+				<td><b><span class="prop">syslogHost</span></b></td>
 				<td><code>String</code></td>
 				<td>The host name of the syslog server.</td>
 			</tr>
 			<tr>
-				<td><span class="prop" container="syslog">port</span></td>
+				<td><b><span class="prop">port</span></b></td>
 				<td><code>String</code></td>
 				<td>The port number on the syslog server to connect
 				to. Normally, one would not want to change the default value
@@ -3571,7 +3157,7 @@ logger.error(<b>notifyAdmin</b>,
 				</td>
 			</tr>
 			<tr>
-				<td><span class="prop" container="syslog">facility</span></td>
+				<td><b><span class="prop">facility</span></b></td>
 				<td><code>String</code></td>
 				<td>
 					<p>The <span class="prop">facility</span> is meant to identify 
@@ -3584,7 +3170,7 @@ logger.error(<b>notifyAdmin</b>,
 				</td>
 			</tr>
       <tr>
-        <td><span class="prop" container="syslog">suffixPattern</span></td>
+        <td><b><span class="prop">suffixPattern</span></b></td>
 				<td><code>String</code></td>
 				<td><p>The <span class="prop">suffixPattern</span> option
 				specifies the format of the non-standardized part of the
@@ -3597,8 +3183,7 @@ logger.error(<b>notifyAdmin</b>,
 			</tr>
 
       <tr>
-        <td><span class="prop"
-        container="syslog">stackTracePattern</span></td>
+        <td><b><span class="prop">stackTracePattern</span></b></td>
 				<td><code>String</code></td>
 				<td><p>The <span class="prop">stackTracePattern</span>
 				property allows the customization of the string appearing just
@@ -3610,7 +3195,7 @@ logger.error(<b>notifyAdmin</b>,
 			</tr>
 
 			<tr>
-				<td><span class="prop" container="syslog">throwableExcluded</span></td>
+				<td><b><span class="prop">throwableExcluded</span></b></td>
 				<td><code>boolean</code></td>
 				<td>Setting <span class="prop">throwableExcluded</span> to
 				<code>true</code> will cause stack trace data associated with
@@ -3662,7 +3247,8 @@ logger.error(<b>notifyAdmin</b>,
 		</p>
 		
 
-    <h3 class="doAnchor" name="SiftingAppender">SiftingAppender</h3>
+    <h3><a name="SiftingAppender"
+    href="#SiftingAppender">SiftingAppender</a></h3>
 
     <p>As its name implies, a <code>SiftingAppender</code> can be used
     to separate (or sift) logging according to a given runtime
@@ -3673,44 +3259,15 @@ logger.error(<b>notifyAdmin</b>,
     </p>
 
 
-    
-    <table class="bodyTable striped">
-			<tr>
-				<th>Property Name</th>
-				<th>Type</th>
-				<th>Description</th>
-			</tr>
-			<tr>
-				<td><span class="prop" container="sift">timeout</span></td>
-				<td><code><a
-				href="../apidocs/ch/qos/logback/core/util/Duration.html">Duration</a></code></td>
-				<td>A nested appender which has not been accessed beyond the
-				<span class="prop">timeout</span> duration is deemed stale. A
-				stale appender is closed and unreferenced by
-				<code>SiftingAppender</code>. The default value for <span
-				class="prop">timeout</span> is 30 minutes.</td>
-			</tr>
-			<tr>
-				<td><span class="prop" container="sift">maxAppenderCount</span></td>
-				<td><code>integer</code></td>
-				<td>The maximum number of nested appenders
-				<code>SiftingAppender</code> may create and track. Default
-				value for <span class="prop">maxAppenderCount</span> is
-				Integer.MAX_VALUE.</td>
-			</tr>
-  </table>
-
     <p><code>SiftingAppender</code> achieves this feat by creating
-    nested appenders on the fly. Nested appenders are created based on
-    a template specified within the configuration of the
+    child appenders on the fly. Child appenders are created based on a
+    template specified within the configuration of the
     <code>SiftingAppender</code> itself (enclosed within the
     <code><sift></code> element, see example
     below). <code>SiftingAppender</code> is responsible for managing
     the lifecycle of child appenders. For example,
     <code>SiftingAppender</code> will automatically close and remove
-    any stale appender. A nested appender is considered stale when no
-    accesses it beyond the duration specified by the <span
-    class="prop">timeout</span> parameter.
+    any unused child appender.
     </p>
 
     <p>When handling a logging event, <code>SiftingAppender</code>
@@ -3718,7 +3275,7 @@ logger.error(<b>notifyAdmin</b>,
     criteria are computed at runtime by a discriminator. The user can
     specify the selection criteria with the help of a <code><a
     href="../xref/ch/qos/logback/core/sift/Discriminator.html">Discriminator</a></code>. Let
-    us now study an example.
+    us now study an eaxample.
     </p>
  
     <h4>Example</h4>
@@ -3773,10 +3330,10 @@ logger.debug("Alice says hello"); </p>
     <p>In the absence of a class attribute, it is assumed that the
     discriminator type is <a
     href="../xref/ch/qos/logback/classic/sift/MDCBasedDiscriminator.html">MDCBasedDiscriminator</a>.
-    The discriminating value is the MDC value associated with the key
+    The discrimating value is the MDC value associated with the key
     given by the <span class="prop">key</span> property. However, if
     that MDC value is null, then <span
-    class="prop">defaultValue</span> is used as the discriminating
+    class="prop">defaultValue</span> is used as the discrimating
     value.
     </p>
 
@@ -3809,75 +3366,17 @@ logger.debug("Alice says hello"); </p>
     distinct log files, "unknown.log" and "Alice.log".
 		</p>
 
-    <p><span class="label">local-scoped variables</span> As of version
-    1.0.12, properties defined in local scope within the configuration
-    file will be available to nested appenders. Moreover, you can <a
-    href="configuration.html#definingProps">define variables</a> or <a
-    href="configuration.html#definingPropsOnTheFly">dynamically
-    compute</a> variables from <em>within</em> the the
-    <code><sift></code> element. Combining a variable from parts
-    defined outside and within the <code><sift></code> element is
-    also supported.
-    </p>
-
-    <h4 class="doAnchor" name="siftGettingTimeoutRight">Getting the
-    <span class="prop">timeout</span> right</h4>
-
-    <p>For certain types of applications, it may be difficult to get
-    the <span class="prop">timeout</span> parameter right. If the
-    <span class="prop">timeout</span> is too small, a nested appender
-    might be removed just to be created anew a few seconds later. This
-    phenomenon is called <em>trashing</em>. If the <span
-    class="prop">timeout</span> is too long and appenders are created
-    in quick succession, you might run out of resources. Similarly,
-    setting <span class="prop">maxAppenderCount</span> too low might
-    cause trashing as well.
-    </p>
-
-    <p>In many case, it may be easier to pinpoint a location in your
-    code after which a nested appender is no longer needed. If such a
-    location exists, even approximately, log from that location using
-    the <a
-    href="../apidocs/ch/qos/logback/classic/ClassicConstants.html#FINALIZE_SESSION_MARKER">FINALIZE_SESSION</a>
-    marker. Whenever SiftingAppender sees a logging event marked as
-    <code>FINALIZE_SESSION</code> it will end-of-life the associated
-    nested appender. Upon reaching its end-of-life, a nested appender
-    will linger for a few seconds to process any late coming events
-    (if any) and then will be closed.
-    </p>
-    
-    <pre class="prettyprint source">import org.slf4j.Logger;
-import static ch.qos.logback.classic.ClassicConstants.FINALIZE_SESSION_MARKER;
-
-  void job(String jobId) {
-   
-    MDC.put("jobId", jobId);
-    logger.info("Starting job.");
-
-    ... do whather the job needs to do
-    
-    // will cause the nested appender reach end-of-life. It will
-    // linger for a few seconds.
-    logger.info(FINALIZE_SESSION_MARKER, "About to end the job");
-
-    try {
-      .. perform clean up
-    } catch(Exception e);  
-      // This log statement will be handled by the lingering appender. 
-      // No new appender will be created.
-      logger.error("unexpected error while cleaning up", e);
-    }
-  }
-
-</pre>
-
-    <h3 class="doAnchor" name="AsyncAppender">AsyncAppender</h3>
+    <h3><a name="AsyncAppender"
+    href="#AsyncAppender">AsyncAppender</a></h3>
 
     <p>AsyncAppender logs <a
     href="../apidocs/ch/qos/logback/classic/spi/ILoggingEvent.html">ILoggingEvent</a>s
     asynchronously. It acts solely as an event dispatcher and must
     therefore reference another appender in order to do anything
-    useful.</p>
+    useful. In order to avoid loss of logging events, this appender
+    should be closed. It is the user's responsibility to close
+    appenders, typically at the end of the application lifecycle.
+    </p>
 
     <p><span class="label notice">Lossy by default if 80% full</span>
     AsyncAppender buffers events in a <a
@@ -3891,15 +3390,6 @@ import static ch.qos.logback.classic.ClassicConstants.FINALIZE_SESSION_MARKER;
     favorable effect on performance at the cost of event loss.
     </p>
 
-    <p><span class="label">Application stop/redeploy</span> Upon
-    application shutdown or redeploy, <code>AsyncAppender</code> must
-    be stopped in order to stop and reclaim the worker thread and to
-    flush the logging events from the queue. This can be achieved by
-    <a href="configuration.html#stopContext">stopping the
-    LoggerContext</a> which will close all appenders, including any
-    <code>AsyncAppender</code> instances.</p>
-
-
     <p>Here is the list of properties admitted by
     <code>AsyncAppender:</code></p>
 
@@ -3910,14 +3400,14 @@ import static ch.qos.logback.classic.ClassicConstants.FINALIZE_SESSION_MARKER;
         <th>Description</th>
       </tr>
 			<tr>
-        <td><span class="prop" container="async">queueSize</span></td>
+        <td><b><span class="prop">queueSize</span></b></td>
         <td><code>int</code></td>
         <td>The maximum capacity of the blocking queue. By default,
         <span class="prop">queueSize</span> is set to 256.
 				</td>
 			</tr>
       <tr>
-        <td><span class="prop" container="async">discardingThreshold</span></td>
+        <td><b><span class="prop">discardingThreshold</span></b></td>
         <td><code>int</code></td>
         <td>By default, when the blocking queue has 20% capacity
         remaining, it will drop events of level TRACE, DEBUG and INFO,
@@ -3927,7 +3417,7 @@ import static ch.qos.logback.classic.ClassicConstants.FINALIZE_SESSION_MARKER;
 			</td>
 			</tr>
       <tr>
-        <td><span class="prop" container="async">includeCallerData</span></td>
+        <td><b><span class="prop">includeCallerData</span></b></td>
         <td><code>boolean</code></td>
         <td>Extracting caller data can be rather expensive. To improve
         performance, by default, caller data associated with an event
@@ -3973,7 +3463,7 @@ import static ch.qos.logback.classic.ClassicConstants.FINALIZE_SESSION_MARKER;
     
     <p><span class="label notice">Lossy behavior</span> In light of
     the discussion above and in order to reduce blocking, by default,
-    when less than 20% of the queue capacity remains,
+    when less than 20% of the queue capacilty remains,
     <code>AsyncAppender</code> will drop events of level TRACE, DEBUG
     and INFO keeping only events of level WARN and ERROR. This
     strategy ensures non-blocking handling of logging events (hence
@@ -4007,8 +3497,8 @@ import static ch.qos.logback.classic.ClassicConstants.FINALIZE_SESSION_MARKER;
 </configuration></pre>
   
 
-		<h3 class="doAnchor" name="WriteYourOwnAppender">Writing your own
-		Appender</h3>
+		<h3><a name="WriteYourOwnAppender"
+		href="#WriteYourOwnAppender">Writing your own Appender</a></h3>
 
 
     <p>You can easily write your appender by subclassing
@@ -4021,11 +3511,8 @@ import static ch.qos.logback.classic.ClassicConstants.FINALIZE_SESSION_MARKER;
     <p>The <code>CountingConsoleAppender</code>, which we list next,
     appends a limited number of incoming events on the console. It
     shuts down after the limit is reached.  It uses a
-    <code>PatternLayoutEncoder</code> to format the events and accepts
-    a parameter named <code>limit</code>. Therefore, a few more
-    methods beyond <code>append(Object eventObject)</code> are
-    needed. As shown below, these parameters are handles
-    auto-magically by logback's various configuration mechanisms.
+    <code>Layout</code> to format the events and accepts a parameter.
+    Thus, a few more methods are needed.
     </p>
     
     <em>Example 4.<span class="autoExec"/>:
@@ -4033,68 +3520,54 @@ import static ch.qos.logback.classic.ClassicConstants.FINALIZE_SESSION_MARKER;
     (logback-examples/src/main/java/chapters/appenders/CountingConsoleAppender.java)</em>
     <pre class="prettyprint source">package chapters.appenders;
 
-import java.io.IOException;
-
-import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
-import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.AppenderBase;
+import ch.qos.logback.core.Layout;
 
 
 public class CountingConsoleAppender extends AppenderBase<ILoggingEvent> {
-  static int DEFAULT_LIMIT = 10;
+  static int DEFAULT_LIMIT = 16;
   int counter = 0;
   int limit = DEFAULT_LIMIT;
-  
-  PatternLayoutEncoder encoder;
-  
+
+  public CountingConsoleAppender() {
+  }
+
   public void setLimit(int limit) {
     this.limit = limit;
   }
 
   public int getLimit() {
     return limit;
-  }
+  }  
   
   @Override
   public void start() {
-    if (this.encoder == null) {
-      addError("No encoder set for the appender named ["+ name +"].");
+    if (this.layout == null) {
+      addError("No layout set for the appender named ["+ name +"].");
       return;
     }
     
-    try {
-      encoder.init(System.out);
-    } catch (IOException e) {
-    }
     super.start();
   }
 
   public void append(ILoggingEvent event) {
+
     if (counter >= limit) {
       return;
     }
+
     // output the events as formatted by our layout
-    try {
-      this.encoder.doEncode(event);
-    } catch (IOException e) {
-    }
+    System.out.print(this.layout.doLayout(event));
 
     // prepare for next event
     counter++;
   }
 
-  public PatternLayoutEncoder getEncoder() {
-    return encoder;
-  }
-
-  public void setEncoder(PatternLayoutEncoder encoder) {
-    this.encoder = encoder;
-  }
 }</pre>
 
 		<p>The <code>start()</code> method checks for the presence of a
-		<code>PatternLayoutEncoder</code>.  In case the encoder is not
-		set, the appender fails to start and emits an error message.
+		<code>Layout</code>.  In case the layout is not set, the appender
+		fails to start with an error message.
 		</p>
 		
 		<p>This custom appender illustrates two points:</p>
@@ -4102,11 +3575,10 @@ public class CountingConsoleAppender extends AppenderBase<ILoggingEvent> {
 		<ul>
 
       <li>All properties that follow the setter/getter JavaBeans
-      conventions are handled transparently by logback
-      configurators. The <code>start()</code> method, which is called
-      automatically during logback configuration, has the
-      responsibility of verifying that the various properties of the
-      appender are set and are coherent.
+      conventions are handled transparently. The <code>start()</code>
+      method, which is called automatically during logback
+      configuration, has the responsibility of verifying that the
+      various properties of the appender are coherent.
 			</li>
 
 			<li>The <code>AppenderBase.doAppend()</code> method invokes the
@@ -4126,7 +3598,8 @@ public class CountingConsoleAppender extends AppenderBase<ILoggingEvent> {
 		</p>
   
 
-		<h2 class="doAnchor" name="logback_access">Logback Access</h2>
+		<h2><a name="logback_access" href="#logback_access">Logback
+		Access</a></h2>
 		
 		<p>Most of the appenders found in logback-classic have their
 		equivalent in logback-access. These work essentially in the same
@@ -4134,8 +3607,8 @@ public class CountingConsoleAppender extends AppenderBase<ILoggingEvent> {
 		will cover their use.
 		</p>
 		
-		<h3 class="doAnchor" name="AccessSocketAppender">SocketAppender
-		and SSLSocketAppender</h3>
+  	<a name="AccessSocketAppender"/>
+		<h3>SocketAppender</h3>
 		
 		<p>The <a
 		href="../xref/ch/qos/logback/access/net/SocketAppender.html">
@@ -4146,56 +3619,22 @@ public class CountingConsoleAppender extends AppenderBase<ILoggingEvent> {
 		deserialization, the event can be logged as if it were generated
 		locally.
 		</p>
-		
-		<p>The <a href="../xref/ch/qos/logback/access/net/SSLSocketAppender.html">
-    <code>SSLSocketAppender</code></a> extends the basic 
-    <code>SocketAppender</code> allowing logging to a remote entity over
-    the Secure Sockets Layer (SSL).
-    </p>
-    
 		<p>
 			The properties of access' <code>SocketAppender</code> are the same as those available
 			for classic's <code>SocketAppender</code>.
 		</p>
 
-    <h3 class="doAnchor"
-    name="AccessServerSocketAppender">ServerSocketAppender and
-    SSLServerSocketAppender</h3>
-    
-    <p>Like <code>SocketAppender</code>, the <a
-    href="../xref/ch/qos/logback/access/net/server/ServerSocketAppender.html">
-    <code>ServerSocketAppender</code></a> is designed to log to a remote
-    entity by transmitting serialized <code>AccessEvent</code> objects
-    over the wire.  However, when using <code>ServerSocketAppender</code>
-    the appender acts as a server, passively listening on a TCP socket awaiting
-    inbound connections from interested clients.  Logging events delivered
-    to the appender are distributed to all connected clients.
-    </p>
-    
-    <p>The <a href="../xref/ch/qos/logback/access/net/server/SSLServerSocketAppender.html">
-    <code>SSLSocketAppender</code></a> extends the basic 
-    <code>ServerSocketAppender</code> allowing logging to a remote entity
-    over the Secure Sockets Layer (SSL).
-    </p>
-    
-    <p>The properties of access' <code>ServerSocketAppender</code> are
-    the same as those available for classic's
-    <code>ServerSocketAppender</code>.
-    </p>
-    
-	 	
-		<h3 class="doAnchor" name="AccessSMTPAppender">SMTPAppender</h3>
+	 	<a name="AccessSMTPAppender"></a>	
+		<h3>SMTPAppender</h3>
 		
-		<p>Access' <a
-		href="../xref/ch/qos/logback/access/net/SMTPAppender.html">
-		<code>SMTPAppender</code></a> works in the same way as its Classic
-		counterpart.  However, the <span class="prop">evaluator</span>
-		option is rather different.  By default, a
-		<code>URLEvaluator</code> object is used by
-		<code>SMTPAppender</code>. This evaluator contains a list of URLs
-		that are checked against the current request's URL. When one of
-		the pages given to the <code>URLEvaluator</code> is requested,
-		<code>SMTPAppender</code> sends an email.
+		<p>
+			Access' <a href="../xref/ch/qos/logback/access/net/SMTPAppender.html">
+			<code>SMTPAppender</code></a> works in the same way as its Classic counterpart.
+			However, the <span class="prop">evaluator</span> option is rather different. 
+			By default, a <code>URLEvaluator</code> object
+			is used by <code>SMTPAppender</code>. This evaluator contains a list of URLs that are
+			checked against the current request's URL. When one of the pages given to the
+			<code>URLEvaluator</code> is requested, <code>SMTPAppender</code> sends an email.
 		</p>
 		
 		<p>
@@ -4227,11 +3666,12 @@ public class CountingConsoleAppender extends AppenderBase<ILoggingEvent> {
 		included in the email.
 		</p>
 
-		<h3 class="doAnchor" name="AccessDBAppender">DBAppender</h3>
+		<a name="AccessDBAppender"></a>
+		<h3>DBAppender</h3>
 		
-		<p><a
-		href="../xref/ch/qos/logback/access/db/DBAppender.html"><code>DBAppender</code></a>
-		is used to insert the access events into a database.
+		<p>
+			<a href="../xref/ch/qos/logback/access/db/DBAppender.html"><code>DBAppender</code></a>
+			is used to insert the access events into a database.
 		</p>
 
 		<p>Two tables are used by <code>DBAppender</code>:
@@ -4386,8 +3826,8 @@ public class CountingConsoleAppender extends AppenderBase<ILoggingEvent> {
 </configuration></pre>
 
 
-    <h3 class="doAnchor"
-    name="AccessSiftingAppender">SiftingAppender</h3>
+    <h3><a name="AccessSiftingAppender"
+    href="#AccessSiftingAppender">SiftingAppender</a></h3>
    
     <p>The SiftingAppender in logback-access is quite similar to its
     logback-classic counterpart. The main difference is that in
@@ -4408,7 +3848,7 @@ public class CountingConsoleAppender extends AppenderBase<ILoggingEvent> {
     
     <p>Below is an example configuration file.</p>
 
-    <p class="example">Example: SiftingAppender configuration (logback-examples/src/main/java/chapters/appenders/conf/sift/access-siftingFile.xml)</p>
+    <p class="example">Example: SiftingAppender configuration (logback-examples/src/main/java/chapters/appenders/conf/sift/access-siftingFile.xml)</em>		
     
     <pre class="prettyprint source"><configuration>
   <appender name="SIFTING" class="ch.qos.logback.access.sift.SiftingAppender">
diff --git a/logback-site/src/site/pages/manual/architecture.html b/logback-site/src/site/pages/manual/architecture.html
index b093ca6..42df1c6 100644
--- a/logback-site/src/site/pages/manual/architecture.html
+++ b/logback-site/src/site/pages/manual/architecture.html
@@ -10,12 +10,10 @@
     <link rel="stylesheet" type="text/css" href="../css/_print.css" media="print" />
     <link rel="stylesheet" type="text/css" href="../css/prettify.css" media="screen" />
   </head>
-  <body onload="prettyPrint(); decorate();">
+  <body onload="prettyPrint()">
     <script type="text/javascript">prefix='../';</script>
     <script type="text/javascript" src="../js/prettify.js"></script>
-    <script type="text/javascript" src="../templates/header.js"></script>
-    <script type="text/javascript" src="../js/jquery-min.js"></script>
-    <script type="text/javascript" src="../js/decorator.js"></script>
+    <script src="../templates/header.js" type="text/javascript"></script>
     <div id="left">
       <noscript>Please turn on Javascript to view this menu</noscript>
       <script src="../templates/left.js" type="text/javascript"></script>
@@ -46,9 +44,8 @@
     <h2>Logback's architecture</h2>
 
     <p>Logback's basic architecture is sufficiently generic so as to
-    apply under different circumstances. At the present time, logback
-    is divided into three modules, logback-core, logback-classic and
-    logback-access.
+	apply under different circumstances. At the present time, logback is
+    	divided into three modules, Core, Classic and Access.
     </p>
 
     <p>The <em>core</em> module lays the groundwork for the other two
@@ -60,8 +57,8 @@
     such as log4j or java.util.logging (JUL) introduced in JDK
     1.4. The third module called <em>access</em> integrates with
     Servlet containers to provide HTTP-access log functionality. A
-    separate document covers <a href="../access.html">access module
-    documentation</a>.
+    separate document covers
+    <a href="../access.html">access module documentation</a>.
     </p>
 
     <p>In the remainder of this document, we will write "logback" to
@@ -84,7 +81,8 @@
 		loggers.
 		</p>
     
-    <h3 class="doAnchor" name="LoggerContext">Logger context</h3>
+    <h3><a name="LoggerContext" href="#LoggerContext">Logger
+    context</a></h3>
 
 		<p>The first and foremost advantage of any logging API over plain
 		<code>System.out.println</code> resides in its ability to disable
@@ -150,8 +148,9 @@ public interface Logger {
 
 
 
-    <h3 class="doAnchor" name="effectiveLevel">Effective Level aka
-    Level Inheritance </h3>
+    <h3><a name="effectiveLevel"
+			href="#effectiveLevel">Effective Level aka Level Inheritance</a>
+    </h3>
 
 		<p>Loggers may be assigned levels. The set of possible levels
 		(TRACE, DEBUG, INFO, WARN and ERROR) are defined in the
@@ -330,8 +329,8 @@ public interface Logger {
 		parent <code>X</code>, which has an assigned level.
 		</p>
 
-    <h3 class="doAnchor" name="basic_selection">Printing methods and
-    the basic selection rule</h3>
+    <h3><a name="basic_selection" href="#basic_selection">Printing
+    methods and the basic selection rule</a></h3>
 
 		<p>By definition, the printing method determines the level of a
 		logging request. For example, if <code>L</code> is a logger
@@ -548,9 +547,7 @@ Logger y = LoggerFactory.getLogger("wombat");</pre>
 		</p>
 		<div class="definition">
 
-			<h4 class="deftitle"><a name="additivity"
-			href="#additivity"><span class="anchor"/></a>Appender
-			Additivity</h4>
+			<div class="deftitle"><a name="additivity" href="#additivity">Appender Additivity</a></div>
 
 			<p>The output of a log statement of logger <em>L</em> will go to
 			all the appenders in <em>L</em> and its ancestors. This is the
@@ -660,9 +657,8 @@ Logger y = LoggerFactory.getLogger("wombat");</pre>
 		request. The text after the '-' is the message of the request.
 		</p>
 
-
-		<h3 class="doAnchor" name="parametrized">Parameterized
-		logging</h3>
+    <a name="ParametrizedLogging"></a>
+		<h3>Parameterized logging</h3>
 
 		<p>Given that loggers in logback-classic implement the <a
 		href="http://www.slf4j.org/api/org/slf4j/Logger.html">SLF4J's
@@ -839,38 +835,39 @@ logger.debug("Value {} was inserted between {} and {}.", paramArray);</pre>
          alt="underTheHoodSequence2_small.gif"/>
   </a>
 
-  
-  <h3 class="doAnchor" name="performance">Performance</h3>
+  <a name="Performance"></a>
+  <h3>Performance</h3>
 
   <p>One of the often-cited arguments against logging is its
-  computational cost.  This is a legitimate concern as even
-  moderately-sized applications can generate thousands of log
-  requests. Much of our development effort is spent measuring and
-  tweaking logback's performance.  Independently of these efforts, the
-  user should still be aware of the following performance issues.
+  computational cost.  This is a legitimate concern as even moderately
+  sized applications can generate thousands of log requests. Much
+  effort is spent measuring and tweaking logging performance.
+  Independently of these efforts, the user should still be aware of
+  the following performance issues.
   </p>
 
   <h4>1. Logging performance when logging is turned off entirely</h4>
 
-  <p>You can turn off logging entirely by setting the level of the
-  root logger to <code>Level.OFF</code>, the highest possible level.
-  When logging is turned off entirely, the cost of a log request
-  consists of a method invocation plus an integer comparison. On a
-  3.2Ghz Pentium D machine this cost is typically around 20
-  nanoseconds.
+  <p>
+    You can turn off logging entirely by setting the level of the root logger
+    to <code>Level.OFF</code>, the highest possible level. 
+    When logging is turned off entirely, 
+    the cost of a log request consists of a method invocation plus an 
+    integer comparison. On a 3.2Ghz Pentium D machine this cost is typically 
+    around 20 nanoseconds. 
   </p>
 
-  <p>However, any method invocation involves the "hidden" cost of
-  parameter construction.  For example, for some logger <em>x</em>
-  writing,
+  <p>
+    However, any method invocation involves the "hidden" cost of parameter construction. 
+    For example, for some logger <em>x</em> writing, 
   </p>
   
   <pre class="prettyprint source">x.debug("Entry number: " + i + "is " + entry[i]);</pre>
 
-  <p>incurs the cost of constructing the message parameter,
-  i.e. converting both integer <code>i</code> and
-  <code>entry[i]</code> to a string, and concatenating intermediate
-  strings, regardless of whether the message will be logged or not.
+  <p>
+    incurs the cost of constructing the message parameter, i.e. converting both 
+    integer <code>i</code> and <code>entry[i]</code> to a string, and concatenating 
+    intermediate strings, regardless of whether the message will be logged or not. 
   </p>
 
   <p>The cost of parameter construction can be quite high and depends
@@ -881,17 +878,21 @@ logger.debug("Value {} was inserted between {} and {}.", paramArray);</pre>
 
   <pre class="prettyprint source">x.debug("Entry number: {} is {}", i, entry[i]);</pre>
 
-  <p>This variant will not incur the cost of parameter
-  construction. Compared to the previous call to the
-  <code>debug()</code> method, it will be faster by a wide margin.
-  The message will be formatted only if the logging request is to be
-  sent to attached appenders. Moreover, the component that formats
-  messages is highly optimized.
+  <p>
+    This variant will not incur the cost of parameter
+    construction. Compared to the previous call to the
+    <code>debug()</code> method, it will be faster by a very wide
+    margin.  The message will be formatted only if the request is
+    processed to the appenders.  If it is processed, the component
+    that formats the message offers high performance and does not
+    negatively impact the overall process.  It takes 2
+    and 4 microseconds respectively to format a message with 1 and 3 parameters.
   </p>
 
-  <p>Notwithstanding the above placing log statements in tight loops,
-  i.e. very frequently invoked code, is a lose-lose proposal, likely
-  to result in degraded performance.  Logging in tight loops will slow
+  <p> Please notice that, despite the performance points just
+  discussed, inserting logging statements in tight loops (very
+  frequently invoked code) is a lose-lose proposal and is likely to
+  result in degraded performance.  Logging in tight loops will slow
   down your application even if logging is turned off, and if logging
   is turned on, will generate massive (and hence useless) output.
   </p>
@@ -899,14 +900,15 @@ logger.debug("Value {} was inserted between {} and {}.", paramArray);</pre>
   <h4>2. The performance of deciding whether to log or not to log when
   logging is turned on.</h4>
 
-  <p>In logback, there is no need to walk the logger hierarchy. A
-  logger knows its effective level (that is, its level, once level
-  inheritance has been taken into consideration) when it is
-  created. Should the level of a parent logger be changed, then all
-  child loggers are contacted to take notice of the change. Thus,
-  before accepting or denying a request based on the effective level,
-  the logger can make a quasi-instantaneous decision, without needing
-  to consult its ancestors.
+  <p>
+    In logback, there is no need to walk the logger hierarchy. A
+    logger knows its effective level (that is, its level, once level
+    inheritance has been taken into consideration) when it is
+    created. Should the level of a parent logger be changed, then all
+    child loggers are contacted to take notice of the change. Thus,
+    before accepting or denying a request based on the effective
+    level, the logger can make a quasi-instantaneous decision,
+    without needing to consult its ancestors.
   </p>
 
 
diff --git a/logback-site/src/site/pages/manual/configuration.html b/logback-site/src/site/pages/manual/configuration.html
index ef4474b..525d88d 100644
--- a/logback-site/src/site/pages/manual/configuration.html
+++ b/logback-site/src/site/pages/manual/configuration.html
@@ -12,15 +12,12 @@
     <link rel="stylesheet" type="text/css" href="../css/prettify.css" media="screen" />
 
   </head>
-  <body onload="prettyPrint(); decorate();">
+  <body onload="prettyPrint()">
 
     <script type="text/javascript">prefix='../'</script>
     <script type="text/javascript" src="../js/prettify.js"></script>
     <script src="../templates/header.js" type="text/javascript"></script>
     <script type="text/javascript" src="../js/dsl.js"></script>
-    <script type="text/javascript" src="../js/jquery-min.js"></script>
-    <script type="text/javascript" src="../js/decorator.js"></script>
-
     <div id="left">
       <noscript>Please turn on Javascript to view this menu</noscript>
       <script src="../templates/left.js" type="text/javascript"></script>
@@ -45,15 +42,25 @@
     <script src="../templates/creative.js" type="text/javascript"></script>
 
 
-    <p>We start by presenting ways for configuring logback, with many
-    example configuration scripts.  Joran, the configuration framework
-    upon which logback relies will be presented in <a
-    href="onJoran.html">a later chapter</a>.
+    <p>Joran stands for a cold north-west wind which, every now and
+    then, blows forcefully on Lake Geneva. Located right in the middle
+    of Europe, Lake Geneva happens to be the continent's largest
+    sweet water reserve.
+    </p>
+
+    <p>In the first part, we start by presenting ways for configuring
+    logback, with many example configuration scripts.  In the <a
+    href="#Joran">second part</a>, we present Joran, a generic
+    configuration framework, which you can put into use in order to
+    configure your own applications.
     </p>
 
 
-    <h2 class="doAnchor" name="auto_configuration">Configuration in
-    logback</h2>
+    <h2>    
+      <a name="auto_configuration" href="#auto_configuration">
+        Configuration in logback
+      </a>
+    </h2>
     
     <p>Inserting log requests into the application code requires a
     fair amount of planning and effort. Observation shows that
@@ -123,8 +130,7 @@
     </p>
 
 
-    <h3 class="doAnchor" name="automaticConf">Automatically
-    configuring logback</h3>
+    <h3><a name="automaticConf" href="#automaticConf">Automatically configuring logback</a></h3>
 
     <p>The simplest way to configure logback is by letting logback
     fall back to its default configuration. Let us give a taste of how
@@ -258,25 +264,23 @@ public class Foo {
    directory accessible from the class path. Running the <em>MyApp1</em>
    application should give identical results to its previous run.</p>
 
-   <h4 class="doAnchor" name="automaticStatusPrinting">Automatic
-   printing of status messages in case of warning or errors</h4>
+   <h4><a name="automaticStatusPrinting"
+   href="#automaticStatusPrinting">Automatic printing of status
+   messages in case of warning or errors</a></h4>
 
    <p class="highlight">If warning or errors occur during the parsing
    of the configuration file, logback will automatically print its
    internal status messages on the console.</p>
- 
+
    <p>If warnings or errors occur during the parsing of the
-   configuration file, logback will automatically print its internal
-   status data on the console. Note that to avoid duplication,
-   automatic status printing is disabled if the user explicitly
-   registers a status listener (defined below).</p>
-
-   <p>In the absence of warnings or errors, if you still wish to
-   inspect logback's internal status, then you can instruct logback to
-   print status data by invoking the <code>print()</code> of the
-   <code>StatusPrinter</code> class. The <em>MyApp2</em> application
-   shown below is identical to <em>MyApp1</em> except for the addition
-   of two lines of code for printing internal status data.</p>
+   configuration file, logback will automatically print status data on
+   the console. In the absence of warnings or errors, if you still
+   wish to inspect logback's internal status, then you can instruct
+   logback to print status data by invoking the <code>print()</code>
+   of the <code>StatusPrinter</code> class. The <em>MyApp2</em>
+   application shown below is identical to <em>MyApp1</em> except for the
+   addition of two lines of code for printing internal status
+   data.</p>
 
     <p class="example">Example: Print logback's internal status
     information <a
@@ -333,7 +337,7 @@ public class Foo {
    <span class="asGroovy" onclick="return asGroovy('sample1');">View as .groovy</span>
 
    <pre id="sample1" class="prettyprint source">
-<configuration <span class="big bold">debug="true"</span>> 
+<configuration <b>debug="true"</b>> 
 
   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
     <!-- encoders are  by default assigned the type
@@ -375,35 +379,39 @@ public class Foo {
    of status messages, tracking down a rogue <em>logback.xml</em>
    configuration file can be difficult, especially in production where
    the application source cannot be easily modified. To help identify
-   the location of a rogue configuration file, you can set a
-   <code>StatusListener</code> via the "logback.statusListenerClass"
-   system property (<a href="#logback.statusLC">defined below</a>) to
-   force output of status messages. The "logback.statusListenerClass"
-   system property can also be used to silence output automatically
-   generated in case of errors.
+   the location of a rogue configuration file, you can set the <span
+   class="prop">logback.debug</span> system property to
+   <code>true</code> to force printing internal status messages on the
+   console regardless of the value of the <span
+   class="attr">debug</span> attribute found within the
+   <code><configuration></code> element, in any configuration file,
+   including in the rogue <em>logback.xml</em> file.
    </p>
 
-   <h3 class="doAnchor" name="configFileProperty">Specifying the
-   location of the default configuration file as a system
-   property</h3>
-
-   <p>You may specify the location of the default configuration file
-   with a system property named
-   <code>"logback.configurationFile"</code>. The value of this
+   <p>As of version 1.0.1, setting the <span class="attr">debug</span>
+   attribute is equivalent to registering an
+   <code>OnConsoleStatusListener</code> with the
+   <code>StatusManager</code>. Thus, problems occurring during the
+   lifetime of your application, well after logback is initialized,
+   can be reported.  Refer to the section on <a
+   href="#statusListener">status listeners</a> further below.</p>
+
+   <h3><a name="configFileProperty"
+   href="#configFileProperty">Specifying the location of the default
+   configuration file as a system property</a></h3>
+
+   <p>If you wish, you can specify the location of the default
+   configuration file with a system property named
+   <code>logback.configurationFile</code>. The value of this
    property can be a URL, a resource on the class path or a path to a
    file external to the application.
    </p>
 
    <p class="source">java <b>-Dlogback.configurationFile=/path/to/config.xml</b> chapters.configuration.MyApp1</p>
 
-   <p>Note that the file extension must be ".xml" or ".groovy". Other
-   extensions are ignored. <a href="#logback.statusLC">Explicitly
-   registering a status listener</a> may help debugging issues
-   locating the configuration file.</p>
 
-
-   <h3 class="doAnchor" name="autoScan">Automatically reloading
-   configuration file upon modification</h3>
+   <h3><a name="autoScan" href="#autoScan">Automatically reloading
+   configuration file upon modification</a></h3>
 
    <p class="highlight">Logback-classic can scan for changes in its
    configuration file and automatically reconfigure itself when the
@@ -465,11 +473,6 @@ public class Foo {
    <code>myLogger</code> is disabled for the DEBUG level.
    </p>
 
-   <p class="highlight">When a configuration file changes, it will be
-   automatically reloaded but only after several logger invocations
-   and after a delay determined by the scanning period.
-   </p>
-
    <p>Given that <code>ReconfigureOnChangeFilter</code> is invoked
    every time <em>any</em> logger is invoked, regardless of logger
    level, <code>ReconfigureOnChangeFilter</code> is absolutely
@@ -479,7 +482,7 @@ public class Foo {
    <code>ReconfigureOnChangeFilter</code> is in reality "alive" only
    once every <em>N</em> logging operations.  Depending on how often
    your application logs, the value of <em>N</em> can be modified on
-   the fly by logback. By default N is 16, although it can go as high
+   the fly by logback. By default N is 16, altough it can go as high
    as 2^16 (= 65536) for CPU-intensive applications.
    </p>
    
@@ -490,8 +493,8 @@ public class Foo {
 
    
 
-   <h3 class="doAnchor" name="joranDirectly">Invoking
-   <code>JoranConfigurator</code> directly</h3>
+   <h3><a name="joranDirectly" href="#joranDirectly">Invoking
+   <code>JoranConfigurator</code> directly</a></h3>
 
    <p>Logback relies on a configuration library called Joran, part of
    logback-core. Logback's default configuration mechanism invokes
@@ -552,8 +555,11 @@ public class MyApp3 {
    errors. Note that for multi-step configuration,
    <code>context.reset()</code> invocation should be omitted.</p>
 
-   <h3 class="doAnchor" name="viewingStatusMessages">Viewing status
-   messages </h3>
+   <h3><a name="viewingStatusMessages"
+   href="#viewingStatusMessages">Viewing status messages</a>
+   </h3>
+
+
 
    <p>Logback collects its internal status data in a <code><a
    href="../xref/ch/qos/logback/core/status/StatusManager.html">StatusManager</a></code>
@@ -596,8 +602,12 @@ public class MyApp3 {
    the URL <code>http://host/yourWebapp/lbClassicStatus</code>
    </p>
 
-   <h3 class="doAnchor" name="statusListener">Listening to status
-   messages</h3>
+   <h3>
+     <a name="statusListener" href="#statusListener">Listening to
+     status messages</a>
+   </h3>
+
+
 
    <p>You may also attach a <code>StatusListener</code> to a
    <code>StatusManager</code> so that you can take immediate action in
@@ -644,10 +654,6 @@ public class MyApp3 {
   ... the rest of the configuration file  
 </configuration></pre>
 
-   <h3 class="doAnchor"
-   name="logback.statusLC">"logback.statusListenerClass" system
-   property</h3>
-
    <p>One may also register a status listener by setting the
    "logback.statusListenerClass" Java system property to the name of
    the listener class you wish to register. For example,
@@ -655,51 +661,10 @@ public class MyApp3 {
 
    <p class="source">java <b>-Dlogback.statusListenerClass</b>=ch.qos.logback.core.status.OnConsoleStatusListener ...</p>
    
-   <p>Logback ships with several status listener implementations. <a
-   href="../xref/ch/qos/logback/core/status/OnConsoleStatusListener.html">OnConsoleStatusListener</a>
-   prints incoming status messages on the console, i.e. on
-   System.out. <a
-   href="../xref/ch/qos/logback/core/status/OnErrorConsoleStatusListener.html">OnErrorConsoleStatusListener</a>
-   prints incoming status messages on System.err. <a
-   href="../xref/ch/qos/logback/core/status/NopStatusListener.html">NopStatusListener</a>
-   drops incoming status messages.</p>
-   
-
-   <p>Note that <a href="#automaticStatusPrinting">automatic status
-   printing</a> (in case of errors) is disabled if any status listener
-   is registered during configuration and in particular if the user
-   specifies a status listener via the "logback.statusListenerClass"
-   system. Thus, by setting <code>NopStatusListener</code> as a status
-   listener, you can silence internal status printing altogether. </p>
-   
-   <p class="source">java <b>-Dlogback.statusListenerClass</b>=ch.qos.logback.core.status.NopStatusListener ...</p>
 
-
-   <h3 class="doAnchor" name="stopContext">Stopping
-   logback-classic</h3>
-
-   <p>In order to release the resources used by logback-classic, it is
-   always a good idea to stop the logback context. Stopping the
-   context will close all appenders attached to loggers defined by the
-   context and stop any active threads.
-   </p>
-
-<pre class="prettyprint lang-java source">
-import org.sflf4j.LoggerFactory;
-import ch.qos.logback.classic.LoggerContext;
-...
-
-// assume SLF4J is bound to logback-classic in the current environment
-<b>LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();</b>
-<b>loggerContext.stop();</b></pre>
-
-   <p>In web-applications, such code would be invoked from within the
-   <a
-   href="http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContextListener.html#contextDestroyed(javax.servlet.ServletContextEvent)">contextDestroyed</a>
-   method of <code>ServletContextListener</code> in order to stop
-   logback-classic and release resources.
-
-   <h2 class="doAnchor" name="syntax">Configuration file syntax</h2>
+   <h2>
+     <a name="syntax" href="#syntax">Configuration file syntax</a>
+   </h2>
 
    <p>As you have seen thus far in the manual with plenty of examples
    still to follow, logback allows you to redefine logging behavior
@@ -738,9 +703,10 @@ import ch.qos.logback.classic.LoggerContext;
     href="http://en.wikipedia.org/wiki/CamelCase">camelCase
     convention</a> which is almost always the correct convention.</p>
 
-    <h4 class="doAnchor" name="caseSensitivity">Case sensitivity of
-    tag names</h4>
+    <h4><a name="caseSensitivity" href="#caseSensitivity">Case
+    sensitivity of tag names</a></h4>
    
+
     <p>Since logback version 0.9.17, tag names pertaining to explicit
     rules are case insensitive.  For example, <code><logger></code>, <code><Logger></code> and
     <code><LOGGER></code> are valid configuration elements and will
@@ -761,8 +727,9 @@ import ch.qos.logback.classic.LoggerContext;
     is almost always the correct convention.
     </p>
 
-    <h4 class="doAnchor" name="loggerElement">Configuring loggers, or
-    the <code><logger></code> element</h4>
+    <h4><a name="loggerElement"
+    href="#loggerElement">Configuring loggers, or the
+    <code><logger></code> element</a></h4>
 
     <p>At this point you should have at least some understanding of <a
     href="architecture.html#effectiveLevel">level inheritance</a> and
@@ -787,22 +754,18 @@ import ch.qos.logback.classic.LoggerContext;
     it should inherit its level.
     </p>
 
-    <p class="highlight"> Note that unlike log4j, logback-classic does
-    <em>not</em> close nor remove any previously referenced appenders
-    when configuring a given logger.
-    </p>
-
     <p>The <code><logger></code> element may contain zero or more
     <code><appender-ref></code> elements; each appender thus
-    referenced is added to the named logger. Note that unlike log4j,
-    logback-classic does <em>not</em> close nor remove any previously
-    referenced appenders when configuring a given logger.
+    referenced is added to the named logger. Note that unlike
+    log4j, logback-classic does <em>not</em> close or remove any
+    previously referenced appenders before adding the new appender
+    reference.
     </p>
 
 
 
-   <h4 class="doAnchor" name="rootElement">Configuring the root
-   logger, or the <code><root></code> element</h4>
+   <h4><a name="rootElement" href="#rootElement">Configuring the root
+   logger, or the <code><root></code> element</a></h4>
 
    <p>The <code><root></code> element configures the root
    logger. It supports a single attribute, namely the <span
@@ -815,16 +778,15 @@ import ch.qos.logback.classic.LoggerContext;
    root logger cannot be set to INHERITED or NULL.
    </p>
 
-   <p class="highlight">Note that unlike log4j, logback-classic does
-   <em>not</em> close nor remove any previously referenced appenders
-   when configuring the root logger.</p>
 
-   <p> Similarly to the <code><logger></code> element, the
-   <code><root></code> element may contain zero or more
-   <code><appender-ref></code> elements; each appender thus
-   referenced is added to the root logger. Note that unlike log4j,
-   logback-classic does <em>not</em> close nor remove any previously
-   referenced appenders when configuring the root logger.  </p>
+   <p> Similarly to the
+   <code><logger></code> element, the <code><root></code>
+   element may contain zero or more <code><appender-ref></code>
+   elements; each appender thus referenced is added to the root
+   logger. Note that unlike log4j, logback-classic does
+   <em>not</em> close or remove any previously referenced appenders
+   before adding the new appender reference to the root logger.
+   </p>
 
    <h4>Example</h4>
 
@@ -1032,8 +994,8 @@ import ch.qos.logback.classic.LoggerContext;
   - even if the Java source code does not directly refer to it.
   </p>
 
-  <h4 class="doAnchor" name="configuringAppenders">Configuring
-  Appenders</h4>
+  <h4><a name="configuringAppenders"
+  href="#configuringAppenders">Configuring Appenders</a></h4>
 
   <p>An appender is configured with the <code><appender></code>
   element, which takes two mandatory attributes <span
@@ -1129,7 +1091,7 @@ import ch.qos.logback.classic.LoggerContext;
   means for sharing encoders or layouts.
   </p>
 
-  <h4 class="doAnchor" name="cumulative">Appenders accumulate
+  <h4><a name="cumulative" href="#cumulative">Appenders accumulate</a>
   </h4>
 
   <p>By default, <b>appenders are cumulative</b>: a logger will log to
@@ -1222,8 +1184,11 @@ import ch.qos.logback.classic.LoggerContext;
   children will go into the <em>myApp.log</em> file.
   </p>
 	
-  <h4 class="doAnchor" name="overrridingCumulativity">Overriding the
-  default cumulative behaviour</h4>
+  <h4>
+    <a name="overrridingCumulativity" href="#overrridingCumulativity">
+      Overriding the default cumulative behaviour
+    </a>
+  </h4>
 
   <p>In case the default cumulative behavior turns out to be
   unsuitable for your needs, you can override it by setting the
@@ -1273,8 +1238,8 @@ import ch.qos.logback.classic.LoggerContext;
   <em>foo.log</em> file and only in that file.
   </p>
 
-  <h3 class="doAnchor" name="contextName">Setting the context
-  name</h3>
+
+  <h3><a name="contextName" href="#contextName">Setting the context name</a></h3>
 
   <p>As mentioned <a href="architecture.html#LoggerContext">in an
   earlier chapter</a>, every logger is attached to a logger
@@ -1312,51 +1277,65 @@ import ch.qos.logback.classic.LoggerContext;
   
   <!-- =============================================================== -->
  
-  <h3 class="doAnchor" name="variableSubstitution">Variable
-  substitution</h3>
 
-  <p><span class="label">Note</span> Earlier versions of this document
-  used the term "property substitution" instead of the term
-  "variable". Please consider both terms interchangeable although the
-  latter term conveys a clearer meaning.
-  </p>
+  <h3><a name="variableSubstitution"
+  href="#variableSubstitution">Property substitution</a></h3>
 
-  <p>As in many scripting languages, logback configuration files
-  support definition and substitution of variables. Variables can be
-  defined within the configuration file itself, in an external file,
-  in an external resource or even computed and <a
-  href="#definingPropsOnTheFly">defined on the fly</a>. 
+  <p>As in many scripting languages, logback configuration files support
+  definition and substitution of properties. Properties can be defined
+  within the configuration file itself, in an external file, in an
+  external resource or even computed and <a
+  href="#definingPropsOnTheFly">defined on the fly</a>.
   </p>
 
-  <p class="highlight">Variable substitution can occur at any point in
-  a configuration file where a value can be specified.</p>
-
-  <p>Variable substitution can occur at any point in a configuration
-  file where a value can be specified. The syntax of variable
-  substitution is similar to that of Unix shells. The string between
-  an opening <em>${</em> and closing <em>}</em> is interpreted as a
-  reference to the <em>value</em> of the property.  For property
-  <em>aName</em>, the string "${aName}" will be replaced with the
-  value held by the <em>aName</em> property.
+  <p>Property substitution can occur at any point where a value can be
+  specified. The syntax of property substitution is similar to that of
+  Unix shells. The string between an opening <em>${</em> and closing
+  <em>}</em> is interpreted as a reference to the <em>value</em> of
+  the property.  For property <em>aKey</em>, the string "${aKey}" will
+  be replaced with the value held by the <em>aKey</em> property.
   </p>
 
-  <p>Variables have a <a href="#scopes">scope</a> (see below).</p>
+  <p>A property can be defined in <em>local scope</em> (the default),
+  in <em>context scope</em>, or in <em>system scope</em>. Local scope
+  is the default.  A property with local scope exists from the point
+  of its definition until the end of configuration. A property with
+  context scope is inserted into the context and lasts as long as the
+  context or until it is cleared.  Once defined, a property in
+  context scope is part of the context. As such, it is available in
+  all logging events, including those sent to remote hosts via
+  serialization. A property with system scope is inserted into the
+  JVM's system properties and lasts as long as the JVM or until it is
+  cleared.
+  </p>
 
   <p>As they often come in handy, the HOSTNAME and CONTEXT_NAME
-  variables are automatically defined and have context scope.</p>
+  properties are automatically defined and have context scope.</p>
 
-   <h4 class="doAnchor" name="definingProps">Defining variables</h4>
+  <p class="highlight">Properties are looked up in the the local
+  scope first, in the context scope second, in the system properties
+  scope third, and in the OS environment last.
+  </p>
+
+  <p>During substitution, properties are looked up in the local scope
+  first, in the context scope second, in the system properties scope
+  third, and in the <a
+  href="http://download.oracle.com/javase/tutorial/essential/environment/env.html">OS
+  environment</a> fourth and last.
+  </p>
 
-  <p>Variables can be defined one at a time in the configuration file
+ 
+  <h4><a name="definingProps" href="#definingProps">Defining
+  properties</a></h4>
+
+  <p>Properties can be defined one at a time in the configuration file
   itself or loaded wholesale from an external properties file or an
-  external resource. For historical reasons, the XML element for
-  defining variables is <code><property></code> although in
-  logback 1.0.7 and later the element <code><variable></code> can
-  be used interchangeably.</p>
-
-  <p>The next example shows a variable declared at the beginning of
-  the configuration file. It is then used further down the file to
-  specify the location of the output file.
+  external resource.</p>
+
+  <p>The next example shows a variable, a.k.a. a substitution
+  property, declared at the beginning of the configuration file. It is
+  then used further down the file to specify the location of the
+  output file.
   </p>
 
   <p class="example">Example: Simple Variable substitution
@@ -1383,7 +1362,7 @@ import ch.qos.logback.classic.LoggerContext;
   <p>The next example shows the use of a System property to achieve
   the same result. The property is not declared in the configuration
   file, thus logback will look for it in the System properties. Java
-  system properties can be set on the command line as shown next:
+  system properties can be set on the command line.
   </p>
   
   <p class="source">java -DUSER_HOME="/home/sebastien" MyApp2</p>
@@ -1435,8 +1414,9 @@ import ch.qos.logback.classic.LoggerContext;
 
    <p>This configuration file contains a reference to a file named
    <em>variables1.properties</em>.  The variables contained in that
-   file will be read and then defined within local scope. Here is what
-   the <em>variable.properties</em> file might look like.
+   file will be read and then defined within the context of the
+   logback configuration file. Here is what the
+   <em>variable.properties</em> file might look like.
    </p>
 
    <em>Example: Variable file
@@ -1464,67 +1444,26 @@ import ch.qos.logback.classic.LoggerContext;
 </configuration></pre>
 
 
-   <h4 class="doAnchor" name="scopes">Scopes</h4>
-
-   <p>A property can be defined for insertion in <em>local scope</em>,
-   in <em>context scope</em>, or in <em>system scope</em>. Local scope
-   is the default. Although it is possible to read variables from the
-   OS environment, it is not possible to write into the OS
-   environment.</p>
-
-
-   <p><span class="label">local scope</span> A property with local
-   scope exists from the point of its definition in a configuration
-   file until the end of interpretation/execution of said
-   configuration file. As a corollary, each time a configuration file
-   is parsed and executed, variables in local scope are defined
-   anew.</p>
-
-   <p><span class="label">context scope</span> A property with context
-   scope is inserted into the context and lasts as long as the context
-   or until it is cleared.  Once defined, a property in context scope
-   is part of the context. As such, it is available in all logging
-   events, including those sent to remote hosts via serialization. 
-   </p>
-
-   <p><span class="label">system scope</span> A property with system
-   scope is inserted into the JVM's system properties and lasts as
-   long as the JVM or until it is cleared.
-   </p>
- 
-   <p class="highlight">Properties are looked up in the the local
-   scope first, in the context scope second, in the system properties
-   scope third, and in the OS environment last.
-   </p>
-
-   <p>During substitution, properties are looked up in the local scope
-   first, in the context scope second, in the system properties scope
-   third, and in the <a
-   href="http://docs.oracle.com/javase/tutorial/essential/environment/env.html">OS
-   environment</a> fourth and last.
-   </p>
+   <h4>Scopes</h4>
 
    <p>The <span class="attr">scope</span> attribute of the
-   <code><property></code> element, <code><define></code>
-   element or the <code><insertFromJNDI></code> element can be used
-   to set the scope of a property. The <span class="attr">scope</span>
-   attribute admits "local", "context" and "system" strings as
-   possible values. If not specified, the scope is always assumed to
-   be "local".
+   <code><property></code> element can be used to set the scope of
+   properties. The <span class="attr">scope</span> attribute admit the
+   "local", "context" and "system" strings as possible values.
    </p>
 
-   <p class="example">Example: A variable defined in "context" scope
-   (logback-examples/src/main/java/chapters/configuration/contextScopedVariable.xml)
-   </p>
+  <p class="example">Example: Simple Variable substitution
+  (logback-examples/src/main/java/chapters/configuration/variableSubstitution4.xml)
+  </p>
 
   <span class="asGroovy" onclick="return
-  asGroovy('contextScopedVariable');">View as .groovy</span>
-  <pre id="contextScopedVariable" class="prettyprint source"><configuration>
+  asGroovy('variableSubstitution4');">View as .groovy</span>
+  <pre id="variableSubstitution4" class="prettyprint source"><configuration>
 
-  <property <b class="big">scope="context"</b> name="nodeId" value="firstNode" />
+  <property <b class="big">scope="context"</b> name="nodeId" value="node1" />
 
   <appender name="FILE" class="ch.qos.logback.core.FileAppender">
-    <b><file>/opt/${nodeId}/myApp.log</file></b>
+    <b><file>/opt/${noteId}/myApp.log</file></b>
     <encoder>
       <pattern>%msg%n</pattern>
     </encoder>
@@ -1539,28 +1478,10 @@ import ch.qos.logback.classic.LoggerContext;
    defined in the context scope, it will be available in every logging
    event, even those sent to remote hosts via serialization.</p>
 
+   <h4>Nested variable substitution</h4>
 
-  <h3 class="doAnchor" name="defaultValuesForVariables">Default values
-  for variables</h3>
-
-  <p>Under certain circumstances, it may be desirable for a variable
-  to have a default value if it is not declared or its value is
-  null. As in the <a
-  href="http://tldp.org/LDP/abs/html/parameter-substitution.html">Bash
-  shell</a>, default values can be specified using the <b>":-"</b>
-  operator. For example, assuming the variable named <em>aName</em> is
-  not defined, <code>"${aName<b>:-golden</b>}"</code> will be
-  interpreted as "golden".</p>
-
-   <h3 class="doAnchor" name="nestedSubst">Nested variables</h3>
-
-   <p>Variable nesting is fully supported. Both the name,
-   default-value and value definition of a variable can reference
-   other variables.</p>
-
-
-   <h4>value nesting</h4>
-   <p>The value definition of a variable can contain references to
+   <p>Nested variable substitution is also supported. By nested, we
+   mean that the value definition of a variable contains references to
    other variables. Suppose you wish to use variables to specify not
    only the destination directory but also the file name, and combine
    those two variables in a third variable called "destination". The
@@ -1599,40 +1520,35 @@ fileName=myApp.log
   </root>
 </configuration></pre>
 
+  <h3><a name="defaultValuesForVariables"
+  href="#defaultValuesForVariables">Default substitution values for
+  variables</a></h3>
 
-   <h4>name nesting</h4>
-
-   <p>When referencing a variable, the variable name may contain a
-   reference to another variable. For example, if the variable named
-   "userid" is assigned the value "alice", then
-   "${${userid}.password}" references the variable with the name
-   "alice.password".</p>
-
-   <h4>default value nesting</h4>
-
-   <p>The default value of a variable can reference a another
-   variable.  For example, assuming the variable 'id' is unassigned
-   and the variable 'userid' is assigned the value "alice", then the
-   expression "${id<b>:-</b>${userid}}" will return "alice".
-   </p>
+  <p>Under certain circumstances, it may be desirable for a variable
+  to have a default value if it is not declared or its value is
+  null. As in the <a
+  href="http://tldp.org/LDP/abs/html/parameter-substitution.html">Bash
+  shell</a>, default values can be specified using the <b>":-"</b>
+  operator. For example, assuming <em>aKey</em> is not defined,
+  <code>"${aKey<b>:-golden</b>}"</code> will be interpreted as
+  "golden".</p>
 
 
-  <!-- ==============================================================
-       -->
-  <h3 class="doAnchor" name="hostname">HOSTNAME property</h3>
+  <!-- ============================================================== -->
+  <h3><a name="hostname" href="#hostname">HOSTNAME property</a></h3>
 
   <p>As it often comes in handy, the <code>HOSTNAME</code> property is
-  defined automatically during configuration with context scope.</p>
+  defined automatically during configuration.</p>
 
   <!-- ============================================================== -->
-  <h3 class="doAnchor" name="context_name">CONTEXT_NAME property</h3>
+  <h3><a name="context_name" href="#context_name">CONTEXT_NAME property</a></h3>
 
-  <p>As its name indicates, the <code>CONTEXT_NAME</code> property
-  corresponds to the name of the current logging context.</p>
+  <p>When a context is asked for a property named
+  <code>CONTEXT_NAME</code> it returns with its own name.</p>
 
   <!-- ============================================================== -->
   
-  <h3 class="doAnchor" name="timestamp">Setting a timestamp</h3>
+  <h3><a name="timestamp" href="#timestamp">Setting a timestamp</a></h3>
 
   <p>The <em>timestamp</em> element can define a property according to
   current date and time. The <em>timestamp</em> element is <a
@@ -1640,8 +1556,9 @@ fileName=myApp.log
   chapter</a>.</p>
 
   <!-- ============================================================== -->
-  <h3 class="doAnchor" name="definingPropsOnTheFly">Defining
-  properties on the fly</h3>
+  <h3><a name="definingPropsOnTheFly"
+  href="#definingPropsOnTheFly">Defining properties on the
+  fly</a></h3>
 
   <p>You may define properties dynamically using the
   <code><define></code> element. The define element takes two
@@ -1653,9 +1570,7 @@ fileName=myApp.log
   href="../xref/ch/qos/logback/core/spi/PropertyDefiner.html">PropertyDefiner</a>
   interface. The value returned by the <code>getPropertyValue</code>()
   method of the <code>PropertyDefiner</code> instance will be the
-  value of the named property. You may also specify a <a
-  href="#scopes">scope</a> for the named property by specifying a
-  <span class="attr">scope</span> attribute.
+  value of the named property.
   </p>
 
   <p>Here is an example.</p>
@@ -1663,56 +1578,21 @@ fileName=myApp.log
   <pre class="prettyprint source"><configuration>
 
   <define name="rootLevel" class="a.class.implementing.PropertyDefiner">
-    <shape>round</shape>
-    <color>brown</color>
-    <size>24</size>
+    <aProperty>of a.class.implementing.PropertyDefiner</aProperty>
   </define>
- 
+  
   <root level="${rootLevel}"/>
 </configuration></pre>
 
-  <p>In the above example, shape, color and size are properties of
-  "a.class.implementing.PropertyDefiner". As long as there is a setter
-  for a given property in your implementation of the
-  <code>PropertyDefiner</code> instance, logback will inject the
-  appropriate values as specified in the configuration file. </p>
-
- 
-
-  <p>At the present time, logback does ships with two fairly simple
-  implementations of <code>PropertyDefiner</code>.  
+  <p>At the present time, logback does not ship with any classes
+  implementing <code>PropertyDefiner</code>. We merely provide an
+  extension point so that you may define properties dynamically.
   </p>
 
-  <table class="bodyTable striped">
-    <tr>
-      <th>Implementation name</th>
-      <th>Description</th>
-    </tr>
-
-    <tr>
-      <td><a
-      href="../apidocs/ch/qos/logback/core/property/FileExistsPropertyDefiner.html"><code>FileExistsPropertyDefiner</code></a>
-      </td>
-      <td>Set the named variable to "true" if the file specified by
-      <span class="prop">path</span> property exists, to "false"
-      otherwise.
-      </td>
-    </tr>
-    <tr>
-      <td><a
-      href="../apidocs/ch/qos/logback/core/property/FileExistsPropertyDefiner.html"><code>ResourceExistsPropertyDefiner</code></a>
-      </td>
-      <td>Set the named variable to "true" if the <span
-      class="prop">resource</span> specified by the user is available
-      on the class path, to "false" otherwise.
-      </td>
-    </tr>
-  </table>
-
   <!-- ============================================================== -->
 
-  <h3 class="doAnchor" name="conditional">Conditional processing of
-  configuration files</h3>
+  <h3><a name="conditional" href="#conditional">Conditional
+  processing of configuration files</a></h3>
   
   <p>Developers often need to juggle between several logback
   configuration files targeting different environments such as
@@ -1763,7 +1643,7 @@ fileName=myApp.log
   <code>isNull()</code> method is provided. Example:
   <code>isNull("k")</code>.</p>
 
-  <pre class="prettyprint source"><configuration debug="true">
+  <pre class="prettyprint source"><configuration>
 
   <b><if condition='property("HOSTNAME").contains("torino")'></b>
     <b><then></b>
@@ -1803,16 +1683,14 @@ fileName=myApp.log
 
   <!-- ============================================================== -->
 
-   <h3 class="doAnchor" name="insertFromJNDI">Obtaining variables from
-   JNDI</h3>
+   <h3><a name="insertFromJNDI" href="#insertFromJNDI">Obtaining
+   variables from JNDI</a></h3>
 
    <p>Under certain circumstances, you may want to make use of
    env-entries stored in JNDI. The <code><insertFromJNDI></code>
    configuration directive extracts an env-entry stored in JNDI and
-   inserts the property in local scope with key specified by the <span
-   class="attr">as</span> attribute. As all properties, it is possible
-   to insert the new property into a <a href="#scopes">different
-   scope</a> with the help of the <em>scope</em> attribute.
+   inserts it as a variable whose key is as specified by the <span
+   class="attr">as</span> attribute.
    </p>
 
    <p class="example">Example: Insert as properties env-entries
@@ -1842,7 +1720,8 @@ fileName=myApp.log
   directive.
   </p>
 
-  <h3 class="doAnchor" name="fileInclusion">File inclusion</h3>
+  <h3><a name="fileInclusion" href="#fileInclusion">File
+  inclusion</a></h3>
 
   <p>Joran supports including parts of a configuration file from
   another file. This is done by declaring a <code><include></code>
@@ -1908,18 +1787,9 @@ fileName=myApp.log
     </li>
   </ul>
 
-  <p>If it cannot find the file to be included, logback will complain
-  by printing a status message.  In case the included file is
-  optional, you can suppres the error message by setting <span
-  class="attr">optional</span> attribute to <code>true</code> in the
-  <code><include></code> element.</p>
-
-
-  <pre class="prettyprint source"><include optional="true" ..../></pre>
 
   <!-- ==================== ContextListener =================== -->
-  <h2 class="doAnchor" name="contextListener">Adding a context
-  listener</h2>
+  <h2><a name="contextListener" href="#contextListener">Adding a context listener</a></h2>
 
   <p>Instances of the <a
   href="../xref/ch/qos/logback/classic/spi/LoggerContextListener.html">LoggerContextListener</a>
@@ -1933,8 +1803,8 @@ fileName=myApp.log
   href="jmxConfig.html">subsequent chapter</a>.
   </p>
 
-  <h3 class="doAnchor"
-  name="LevelChangePropagator">LevelChangePropagator</h3>
+  <h3><a name="LevelChangePropagator"
+  href="#LevelChangePropagator">LevelChangePropagator</a></h3>
 
   <p>As of version 0.9.25, logback-classic ships with <a
   href="../xref/ch/qos/logback/classic/jul/LevelChangePropagator.html">LevelChangePropagator</a>,
@@ -1953,7 +1823,7 @@ fileName=myApp.log
 
   <p>The contextListener element can be used to install <code>LevelChangePropagator</code> as shown next.</p>
   
-  <pre class="prettyprint source"><configuration debug="true">
+  <pre class="prettyprint source"><configuration debug="false">
   <b><contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator"/></b>
   .... 
 </configuration></pre>
@@ -1963,7 +1833,7 @@ fileName=myApp.log
   of all j.u.l. loggers. However, previously installed handlers will be
   left untouched.</p>
 
-  <pre class="prettyprint source"><configuration debug="true">
+  <pre class="prettyprint source"><configuration debug="false">
   <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
     <b><resetJUL>true</resetJUL></b>
   </contextListener>
diff --git a/logback-site/src/site/pages/manual/encoders.html b/logback-site/src/site/pages/manual/encoders.html
index 3b359c7..66ea9e0 100644
--- a/logback-site/src/site/pages/manual/encoders.html
+++ b/logback-site/src/site/pages/manual/encoders.html
@@ -9,12 +9,10 @@
     <link rel="stylesheet" type="text/css" href="../css/_print.css" media="print" />
     <link rel="stylesheet" type="text/css" href="../css/prettify.css" media="screen" />
   </head>
-  <body onload="prettyPrint(); decorate();">
+  <body onload="prettyPrint()">
     <script type="text/javascript">prefix='../';</script>
     <script type="text/javascript" src="../js/prettify.js"></script>
-    <script type="text/javascript" src="../templates/header.js" ></script>
-    <script type="text/javascript" src="../js/jquery-min.js"></script>
-    <script type="text/javascript" src="../js/decorator.js"></script>
+    <script src="../templates/header.js" type="text/javascript"></script>
     <div id="left">      
       <noscript>Please turn on Javascript to view this menu</noscript>
       <script src="../templates/left.js" type="text/javascript"></script>
@@ -40,7 +38,7 @@
     <script src="../templates/setup.js" type="text/javascript"></script>
 
 
-    <h2 class="doAnchor">What is an encoder</h2>
+    <h2>What is an encoder</h2>
 
     <p>Encoders are responsible for transforming an event into a byte
     array as well as writing out that byte array into an
@@ -55,7 +53,8 @@
     longer take a layout</a>.
     </p>
 
-    <p>Why the breaking change?</p>
+    <p>Why the breaking change?
+    </p>
 
     <p>Layouts, as discussed in detail in the next chapter, are only
     able to transform an event into a String. Moreover, given that a
@@ -73,7 +72,8 @@
     needless complexity. However, we hope that with the advent of new
     and powerful encoders this impression will change.</p>
 
-    <h2 class="doAnchor" name="interface">Encoder interface</h2>
+    <h2><a name="interface" href="#interface">Encoder
+    interface</a></h2>
 
     <p>Encoders are responsible for transforming an incoming event
     into a byte array <b>and</b> writing out the resulting byte array
@@ -117,8 +117,8 @@ public interface Encoder<E> extends ContextAware, LifeCycle {
     accomplished with these methods.
     </p>
 
-
-    <h2 class="doAnchor">LayoutWrappingEncoder</h2>
+    <h2><a name="LayoutWrappingEncoder"
+    href="#LayoutWrappingEncoder">LayoutWrappingEncoder</a></h2>
 
     <p>Until logback version 0.9.19, many appenders relied on the
     Layout instances to control the format of log output. As there
@@ -172,7 +172,8 @@ public class LayoutWrappingEncoder<E> extends EncoderBase<E> {
     </p>
     
 
-    <h2 class="doAnchor">PatternLayoutEncoder</h2>
+    <h2><a name="PatternLayoutEncoder"
+    href="#PatternLayoutEncoder">PatternLayoutEncoder</a></h2>
 
     <p>Given that <code>PatternLayout</code> is the most commonly used
     layout, logback caters for this common use-case with
@@ -190,7 +191,7 @@ public class LayoutWrappingEncoder<E> extends EncoderBase<E> {
     logback error codes</a>.
     </p>
 
-     <h4 class="doAnchor" name="immediateFlush"><span class="prop">immediateFlush</span> property</h4>
+     <h4><span class="prop">immediateFlush</span> property</h4>
 
      <p>As a sub-class of <a
      href="../xref/ch/qos/logback/core/encoder/LayoutWrappingEncoder.html"><code>LayoutWrappingEncoder</code></a>,
@@ -223,8 +224,7 @@ public class LayoutWrappingEncoder<E> extends EncoderBase<E> {
 </appender></pre>
 
 
-    <h4 class="doAnchor" name="outputPatternAsHeader">Output pattern
-    string as header</h4>
+    <h4><a name="outputPatternAsHeader" href="#outputPatternAsHeader">Output pattern string as header</a></h4>
 
     <p>In order to facilitate parsing of log files, logback can insert
     the pattern used for the log output at the top of log files.  This
diff --git a/logback-site/src/site/pages/manual/filters.html b/logback-site/src/site/pages/manual/filters.html
index fc15ae5..f5e26f2 100644
--- a/logback-site/src/site/pages/manual/filters.html
+++ b/logback-site/src/site/pages/manual/filters.html
@@ -11,14 +11,11 @@
     <link rel="stylesheet" type="text/css" href="../css/prettify.css" media="screen" /> 
 
   </head>
-  <body onload="prettyPrint(); decorate();">
+  <body onload="prettyPrint()">
     <script type="text/javascript">prefix='../';</script>
     <script type="text/javascript" src="../js/prettify.js"></script>
-    <script type="text/javascript" src="../templates/header.js"></script>
+    <script src="../templates/header.js" type="text/javascript"></script>
     <script type="text/javascript" src="../js/dsl.js"></script>
-    <script type="text/javascript" src="../js/jquery-min.js"></script>
-    <script type="text/javascript" src="../js/decorator.js"></script>
-
     <div id="left">
       <noscript>Please turn on Javascript to view this menu</noscript>
       <script src="../templates/left.js" type="text/javascript"></script>
@@ -62,7 +59,7 @@
 		and turbo filters.
 		</p>
 		
-    <h3 class="doAnchor" name="filter">Regular filters</h3>
+    <h3><a name="filter" href="#filter">Regular filters</a></h3>
 
 		<p>Regular logback-classic filters extend the <a
 		href="../xref/ch/qos/logback/core/filter/Filter.html"><code>Filter</code></a>
@@ -96,8 +93,7 @@
     of day or any other part of the logging event.
     </p>
     
-		<h3 class="doAnchor" name="yourOwnFilter">Implementing your own
-		Filter</h3>
+		<h3>Implementing your own Filter</h3>
 		
 		<p>Creating your own filter is easy. All you have to do is extend
 		the <code>Filter</code> abstract class and implement the
@@ -118,7 +114,7 @@ import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.filter.Filter;
 import ch.qos.logback.core.spi.FilterReply;
 
-public class SampleFilter extends Filter<ILoggingEvent> {
+public class SampleFilter extends Filter>ILoggingEvent> {
 
   @Override
   public FilterReply decide(ILoggingEvent event) {    
@@ -180,7 +176,7 @@ public class SampleFilter extends Filter<ILoggingEvent> {
     <code>AbstractMatcherFilter</code>.
     </p>
 		
-		<h3 class="doAnchor" name="levelFilter">LevelFilter</h3>
+		<h3><a name="levelFilter" href="#levelFilter">LevelFilter</a></h3>
 		
 		<p><a href="../xref/ch/qos/logback/classic/filter/LevelFilter.html">
 		<code>LevelFilter</code></a> filters events based on exact level
@@ -212,7 +208,7 @@ public class SampleFilter extends Filter<ILoggingEvent> {
   </root>
 </configuration></pre>
 
-    <h3 class="doAnchor" name="thresholdFilter">ThresholdFilter</h3>
+   <h3><a name="thresholdFilter" href="#thresholdFilter">ThresholdFilter</a></h3>
 
 		<p>The <a
 		href="../xref/ch/qos/logback/classic/filter/ThresholdFilter.html">
@@ -246,7 +242,8 @@ public class SampleFilter extends Filter<ILoggingEvent> {
 </configuration></pre>
 
 
-    <h2 class="doAnchor" name="evalutatorFilter">EvaluatorFilter</h2>
+    <h2><a name="evalutatorFilter"
+    href="#evalutatorFilter">EvaluatorFilter</a></h2>
 
     <p><a
     href="../xref/ch/qos/logback/core/filter/EvaluatorFilter.html"><code>EvaluatorFilter</code></a>
@@ -270,7 +267,8 @@ public class SampleFilter extends Filter<ILoggingEvent> {
 
     <!-- ======================== GEventEvaluator ========================= -->
 
-    <h3 class="doAnchor" name="GEventEvaluator">GEventEvaluator</h3>
+    <h3><a name="GEventEvaluator"
+    href="#GEventEvaluator">GEventEvaluator</a></h3>
     
     <p><a
     href="../xref/ch/qos/logback/classic/boolex/GEventEvaluator.html">GEventEvaluator</a>
@@ -283,7 +281,7 @@ public class SampleFilter extends Filter<ILoggingEvent> {
     unprecedented flexibility in event
     filtering. <code>GEventEvaluator</code> requires the Groovy
     runtime. Please see the <a
-    href="../setup.html#groovy">corresponding section</a> of
+    href="../setup.html#gEventEvaluator">corresponding section</a> of
     the setup document on adding the Groovy runtime to your class
     path.
     </p>
@@ -318,8 +316,9 @@ public class SampleFilter extends Filter<ILoggingEvent> {
     <b><filter class="ch.qos.logback.core.filter.EvaluatorFilter">      
       <evaluator class="ch.qos.logback.classic.boolex.GEventEvaluator"> 
         <expression>
-           e.level.toInt() >= WARN.toInt() &amp;&amp;  <!-- Stands for && in XML -->
-           !(e.mdc?.get("req.userAgent") =~ /Googlebot|msnbot|Yahoo/ )
+           e.level.toInt() >= WARN.toInt()
+             &amp;&amp;  <!-- Stands for && in XML -->
+           !(e.mdc?.get("req.userAgent") ~= /Googlebot|msnbot|Yahoo/ )
         </expression>
       </evaluator>
       <OnMismatch>DENY</OnMismatch>
@@ -360,8 +359,8 @@ public class SampleFilter extends Filter<ILoggingEvent> {
 
     <!-- ==================== JaninoEventEvaluator ======================== -->
     
-    <h3 class="doAnchor"
-    name="JaninoEventEvaluator">JaninoEventEvaluator</h3>
+    <h3><a name="JaninoEventEvaluator"
+    href="#JaninoEventEvaluator">JaninoEventEvaluator</a></h3>
     
 
     <p>Logback-classic ships with another concrete
@@ -647,7 +646,7 @@ java chapters.filters.FilterEvents src/main/java/chapters/filters/basicConfigura
 </evaluator></pre>
 
 
- 	  <h2 class="doAnchor" name="matcher">Matchers</h2>
+ 	  <h2><a name="matcher" href="#matcher">Matchers</a></h2>
 
     <p>While it is possible to do pattern matching by invoking the <a
     href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html#matches%28java.lang.String%29">matches()</a>
@@ -712,7 +711,7 @@ java chapters.filters.FilterEvents src/main/java/chapters/filters/basicConfigura
     <!-- ===================== TURBO FILTER ============================= -->
     <!-- ================================================================ -->
 
-    <h2 class="doAnchor" name="TurboFilter">TurboFilters</h2>
+    <h2><a name="TurboFilter" href="#TurboFilter">TurboFilters</a></h2>
     
     <p><code>TurboFilter</code> objects all extend the
     	<a href="../xref/ch/qos/logback/classic/turbo/TurboFilter.html">
@@ -741,8 +740,7 @@ java chapters.filters.FilterEvents src/main/java/chapters/filters/basicConfigura
     </p>
 
    	
-   	<h3 class="doAnchor" name="yourOwnTurboFilter">Implementing your
-   	own TurboFilter</h3>
+   	<h3>Implementing your own TurboFilter</h3>
     
     <p>To create your own <code>TurboFilter</code> component, just
     extend the <code>TurboFilter</code> abstract class. As previously,
@@ -937,8 +935,8 @@ public class SampleTurboFilter extends TurboFilter {
 
 
 		  
-    <h3 class="doAnchor"
-    name="DuplicateMessageFilter">DuplicateMessageFilter</h3>
+    <h3><a name="DuplicateMessageFilter"
+    href="#DuplicateMessageFilter">DuplicateMessageFilter</a></h3>
 
     <p>The <code>DuplicateMessageFilter</code> merits a separate
     presentation.  This filter detects duplicate messages, and beyond
@@ -1033,7 +1031,7 @@ logger.debug("Hello {}.", name1);</pre>
     because only 5 repetitions are allowed by default.
     </p>
 
-    <h1 class="doAnchor" name="logbac-access">In logback-access</h1>
+    <h1><a name="logbac-access" href="#logback-access">In logback-access</a></h1>
     
     <p>Logback-access offers most of the features available with
     logback-classic. In particular, <code>Filter</code> objects are
@@ -1047,8 +1045,8 @@ logger.debug("Hello {}.", name1);</pre>
     additional filters, please contact the logback-dev mailing list.
     </p>
 
-		<h2 class="doAnchor"
-		name="countingFilter"><code>CountingFilter</code></h2>
+		<h2><a name="countingFilter"
+		href="#countingFilter"><code>CountingFilter</code></a></h2>
 		
 		<p>With the help of <a
 		href="xref/ch/qos/logback/access/filter/CountingFilter.html"><code>CountingFilter</code></a>
@@ -1087,8 +1085,8 @@ logger.debug("Hello {}.", name1);</pre>
 
     <img alt="CountingFilter via jconsole" src="images/chapters/filters/countingFilter.png" />
 	
-
-    <h3 class="doAnchor" name="access_EvalutorFilter">EvaluatorFilter</h3>
+    <h3><a name="access_EvalutorFilter"
+    href="#access_EvalutorFilter"><code>EvaluatorFilter</code></a></h3>
 
     
     <p><a
diff --git a/logback-site/src/site/pages/manual/groovy.html b/logback-site/src/site/pages/manual/groovy.html
index 7d34167..196e9de 100644
--- a/logback-site/src/site/pages/manual/groovy.html
+++ b/logback-site/src/site/pages/manual/groovy.html
@@ -12,15 +12,12 @@
     <link rel="stylesheet" type="text/css" href="../css/prettify.css" media="screen" />
 
   </head>
-  <body onload="prettyPrint(); decorate();">
+  <body onload="prettyPrint()">
 
     <script type="text/javascript">prefix='../'</script>
     <script type="text/javascript" src="../js/prettify.js"></script>
+    <script src="../templates/header.js" type="text/javascript"></script>
     <script type="text/javascript" src="../js/dsl.js"></script>
-    <script type="text/javascript" src="../templates/header.js"></script>
-    <script type="text/javascript" src="../js/jquery-min.js"></script>
-    <script type="text/javascript" src="../js/decorator.js"></script>
-
     <div id="left">
       <noscript>Please turn on Javascript to view this menu</noscript>
       <script src="../templates/left.js" type="text/javascript"></script>
@@ -30,7 +27,7 @@
     </div>
     <div id="content" class="chapter">
       
-    <h1>Chapter 12: Groovy Configuration</h1>
+      <h1>Chapter 12: Groovy Configuration</h1>
       
       <div class="quote">
       <p><em>It is better to be a human being dissatisfied than a pig
@@ -67,7 +64,7 @@
     </p>
 
 
-    <h2 class="doAnchor">General philosophy</h2>
+    <h2>General philosophy</h2>
     
     <p>As a general rule, <em>logback.groovy</em> files are Groovy
     programs. And since Groovy is a super-set of Java, whatever
@@ -91,43 +88,7 @@
     (GStrings), and if-else statements are available in
     <em>logback.groovy</em> files.</p>
 
-    <h2 class="doAnchor">Automatic imports</h2>
-
-    <p><span class="label">Since 1.0.10</span> In order to reduce
-    unnecessary boilerplate several common types and packages are
-    imported automatically.  Thus, as long as you are only configuring
-    built-in appenders, layouts etc. you do not need to add the
-    corresponding import statement into your script. You will need
-    them for types not covered by the default imports, of course.</p>
-
-    <p>Here is the list of default imports:</p>
-
-    <ul>
-      <li><span class="code">import ch.qos.logback.core.*;</span></li>
-      <li><span class="code">import ch.qos.logback.core.encoder.*;</span></li>
-      <li><span class="code">import ch.qos.logback.core.read.*;</span></li>
-      <li><span class="code">import ch.qos.logback.core.rolling.*;</span></li>
-      <li><span class="code">import ch.qos.logback.core.status.*;</span></li>
-      <li><span class="code">import ch.qos.logback.classic.net.*;</span></li>
-      <li><span class="code">import ch.qos.logback.classic.encoder.PatternLayoutEncoder;</span></li>
-    </ul>
-
-    <p>In addition, all constants in <span
-    class="code">ch.qos.logback.classic.Level</span> are statically
-    imported as is (uppercase) and as lowercased aliases. It follows
-    that your scripts can reference both <em>INFO</em> or
-    <em>info</em> without a static import statement.</p>
-
-
-    <h2 class="doAnchor" name="sift">SiftingAppender no longer supported</h2>
-
-    <p><span class="label">Since version 1.0.12</span>
-    <code>SiftingAppender</code> is no longer supported within groovy
-    configuration files. However, in case there is demand, it may be
-    re-introduced.</p>
-
-    <h2 class="doAnchor" name="entensions">Extensions specific to
-    <em>logback.groovy</em></h2>
+    <h2>Extensions specific to <em>logback.groovy</em></h2>
 
     <p><span class="green">Essentially, <em>Logback.groovy</em> syntax
     consists of half a dozen methods described next; in the reverse
@@ -136,8 +97,6 @@
     exception: appenders MUST be defined before they can be attached
     to a logger.</p>
 
-    
-
     <!-- ========================================================== -->
 
     <h3> • <span class="code">root(Level level, List<String> appenderNames = [])</span></h3>
@@ -151,12 +110,16 @@
 
     <p>To set the level of the root logger to WARN, you would write:</p>
 
-    <pre class="prettyprint source">root(WARN)</pre>
+    <pre class="prettyprint source">import static ch.qos.logback.classic.Level.WARN
+
+root(WARN)</pre>
 
     <p>To set the level of the root logger to INFO, and attach 
     appenders named "CONSOLE" and "FILE" to root, you would write:</p>
 
-    <pre class="prettyprint source">root(INFO, ["CONSOLE", "FILE"])</pre>
+    <pre class="prettyprint source">import static ch.qos.logback.classic.Level.INFO
+
+root(INFO, ["CONSOLE", "FILE"])</pre>
 
     <p>In the previous example, it is assumed that the appenders named
     "CONSOLE" and "FILE" were already defined. Defining appenders will
@@ -185,18 +148,24 @@
     <p>For example, the following script sets the level of the
     "com.foo" logger to INFO.</p>
 
-       <pre class="prettyprint source">logger("com.foo", INFO)</pre>
+       <pre class="prettyprint source">import static ch.qos.logback.classic.Level.INFO
+
+logger("com.foo", INFO)</pre>
 
     <p>The next script sets the level of the "com.foo" logger to
     DEBUG, and attaches the appender named "CONSOLE" to it.</p>
 
-  <pre class="prettyprint source">logger("com.foo", DEBUG, ["CONSOLE"])</pre>
+  <pre class="prettyprint source">import static ch.qos.logback.classic.Level.DEBUG
+
+logger("com.foo", DEBUG, ["CONSOLE"])</pre>
     
-   <p>The next script is similar to the previous one, except that it
+   <p>The next script is similiar to the previous one, except that it
    also sets the the additivity flag of the "com.foo" logger to
    false.</p>
 
-  <pre class="prettyprint source">logger("com.foo", DEBUG, ["CONSOLE"], false)</pre>
+  <pre class="prettyprint source">import static ch.qos.logback.classic.Level.DEBUG
+
+logger("com.foo", DEBUG, ["CONSOLE"], false)</pre>
 
 
     <!-- ========================================================== -->
@@ -227,7 +196,12 @@
     %logger - %msg%n". The appender is then attached to the root
     logger.</p>
 
-    <pre class="prettyprint source">appender("FILE", FileAppender) {
+    <pre class="prettyprint source">import ch.qos.logback.classic.encoder.PatternLayoutEncoder 
+import ch.qos.logback.core.FileAppender
+
+import static ch.qos.logback.classic.Level.DEBUG
+
+appender("FILE", FileAppender) {
   file = "testFile.log"
   append = true
   encoder(PatternLayoutEncoder) {
@@ -263,7 +237,13 @@ root(DEBUG, ["FILE"])</pre>
     class="option">file</span> property.
     </p>
 
-<pre class="prettyprint source"><b>def bySecond = timestamp("yyyyMMdd'T'HHmmss")</b>
+<pre class="prettyprint source">import
+ch.qos.logback.classic.encoder.PatternLayoutEncoder import
+ch.qos.logback.core.FileAppender
+
+import static ch.qos.logback.classic.Level.DEBUG
+
+<b>def bySecond = timestamp("yyyyMMdd'T'HHmmss")</b>
 
 appender("FILE", FileAppender) {
   <b>file = "log-${bySecond}.txt"</b>
@@ -285,8 +265,12 @@ root(DEBUG, ["FILE"])</pre>
     </p>
 
     <pre class="prettyprint source">
+import ch.qos.logback.classic.encoder.PatternLayoutEncoder
+import ch.qos.logback.core.ConsoleAppender
 import chapters.layouts.MySampleConverter
 
+import static ch.qos.logback.classic.Level.DEBUG
+
 conversionRule("sample", MySampleConverter)
 appender("STDOUT", ConsoleAppender) {
   encoder(PatternLayoutEncoder) {
@@ -329,7 +313,7 @@ root(DEBUG, ["STDOUT"])</pre>
     <code>statusListener</code> method and passing a listener class as
     an argument. Here is an example:</p>
 
-    <pre class="prettyprint source">import chapters.layouts.MySampleConverter
+    <pre class="prettyprint source">import ch.qos.logback.core.status.OnConsoleStatusListener
 
 <b>// We highly recommended that you always add a status listener just</b>
 <b>// after the last import statement and before all other statements</b>
@@ -338,35 +322,11 @@ root(DEBUG, ["STDOUT"])</pre>
     <p><a href="configuration.html#statusListener">Status listeners</a> were described in an earlier
     chapter.</p>
 
-    <h3>• <span class="code">jmxConfigurator(String name)</span></h3>
 
-    <p>You can register a <a href="jmxConfig.html"><code>JMXConfigurator</code></a>
-    MBean with this method. Invoke it without any parameters to use Logback's
-    default ObjectName
-    (<code>ch.qos.logback.classic:Name=default,Type=ch.qos.logback.classic.jmx.JMXConfigurator</code>)
-    for the registered MBean:</p>
-
-    <pre class="prettyprint source">jmxConfigurator()</pre>
-
-    <p>To change the value of the <code>Name</code> key to something other than "default",
-    simply pass in a different name as the parameter for the <code>jmxConfigurator</code>
-    method:</p>
-
-    <pre class="prettyprint source">jmxConfigurator('MyName')</pre>
-
-    <p>If you want define the ObjectName completely, use the same syntax but
-    pass in a valid ObjectName string representation as the parameter:</p>
-
-    <pre class="prettyprint source">jmxConfigurator('myApp:type=LoggerManager')</pre>
-
-    <p>The method will first attempt to use the parameter as an ObjectName,
-    and falls back to treating it as the value for the "Name" key if it doesn't
-    represent a valid ObjectName.</p>
 
     <!-- ========================================================== -->
 
-    <h2 class="doAnchor" name="internalDSL">Internal DSL, i.e. it's
-    all groovy baby!</h2>
+    <h2>Internal DSL, i.e. it's all groovy baby!</h2>
 
     <p>The <em>logback.groovy</em> is an internal DSL meaning that its
     contents are executed as a Groovy script. Thus, all the usual
@@ -379,14 +339,19 @@ root(DEBUG, ["STDOUT"])</pre>
     </p>
 
 
-    <h3 class="doAnchor" name="varedef">Variable definitions and
-    GStrings</h3>
+    <h3>Variable definitions and GStrings</h3>
 
     <p>You can define variables anywhere within a
     <em>logback.groovy</em> file, then use the variable within a
     GString. Here is an example.</p>
 
-    <pre class="prettyprint source">// define the USER_HOME variable setting its value 
+    <pre class="prettyprint source">import ch.qos.logback.classic.encoder.PatternLayoutEncoder
+import ch.qos.logback.core.FileAppender
+
+import static ch.qos.logback.classic.Level.DEBUG
+
+
+// define the USER_HOME variable setting its value 
 // to that of the "user.home" system property
 <b>def USER_HOME = System.getProperty("user.home")</b>
 
@@ -400,12 +365,17 @@ appender("FILE", FileAppender) {
 root(DEBUG, ["FILE"])</pre>
 
 
-    <h3 class="doAnchor" name="printing">Printing on the console</h3>
+    <h3>Printing on the console</h3>
 
     <p>You can invoke Groovy's <code>println</code> method to print on
     the console. Here is an example.</p>
 
-    <pre class="prettyprint source">def USER_HOME = System.getProperty("user.home");
+    <pre class="prettyprint source">import ch.qos.logback.classic.encoder.PatternLayoutEncoder
+import ch.qos.logback.core.FileAppender
+
+import static ch.qos.logback.classic.Level.DEBUG
+
+def USER_HOME = System.getProperty("user.home");
 <b>println "USER_HOME=${USER_HOME}"</b>
 
 appender("FILE", FileAppender) {
@@ -418,10 +388,9 @@ appender("FILE", FileAppender) {
 root(DEBUG, ["FILE"])</pre>
 
 
-   <h3 class="doAnchor" name="automaticallyExported">Automatically
-   exported fields</h3>
+   <h3>Automatically exported fields</h3>
 
-   <h4 class="doAnchor" name="hostname">'hostname' variable</h4>
+   <h4><a name="hostname" href="#hostname">'hostname' variable</a></h4>
 
    <p>The 'hostname' variable contains the name of the current
    host. However, due to scoping rules that the authors cannot fully
@@ -430,7 +399,12 @@ root(DEBUG, ["FILE"])</pre>
    point across.
    </p>
 
- <pre class="prettyprint source">// will print "hostname is x" where x is the current host's name
+ <pre class="prettyprint source">import ch.qos.logback.classic.encoder.PatternLayoutEncoder
+import ch.qos.logback.core.ConsoleAppender
+
+import static ch.qos.logback.classic.Level.DEBUG
+
+// will print "hostname is x" where x is the current host's name
 println "Hostname is ${hostname}"
 
 appender("STDOUT", ConsoleAppender) {
@@ -442,7 +416,12 @@ appender("STDOUT", ConsoleAppender) {
    you need to define another variable and assign it the value of
    'hostname' as shown next.</p>
 
- <pre class="prettyprint source">// define HOSTNAME by assigning it hostname
+ <pre class="prettyprint source">import ch.qos.logback.classic.encoder.PatternLayoutEncoder
+import ch.qos.logback.core.ConsoleAppender
+
+import static ch.qos.logback.classic.Level.DEBUG
+
+// define HOSTNAME by assigning it hostname
 def HOSTNAME=hostname
 // will print "hostname is x" where x is the current host's name
 println "Hostname is ${HOSTNAME}"
@@ -453,8 +432,8 @@ appender("STDOUT", ConsoleAppender) {
 }</pre>
 
 
-   <h3 class="doAnchor" name="everythingIsContext">Everything is
-   context aware with a reference to the current context</h3>
+   <h3>Everything is context aware with a reference to the current
+   context</h3>
 
    <p>The execution of the <em>logback.groovy</em> script is done
    within the scope of a <a
@@ -465,7 +444,13 @@ appender("STDOUT", ConsoleAppender) {
    <code>addError</code>() methods to send status messages to the
    context's <code>StatusManager</code>.</p>
 
-   <pre class="prettyprint source">// always a good idea to add an on console status listener
+   <pre class="prettyprint source">import ch.qos.logback.classic.encoder.PatternLayoutEncoder
+import ch.qos.logback.core.FileAppender
+import ch.qos.logback.core.status.OnConsoleStatusListener
+
+import static ch.qos.logback.classic.Level.DEBUG
+
+// always a good idea to add an on console status listener
 statusListener(OnConsoleStatusListener)
 
 // set the context's name to wombat
@@ -488,7 +473,7 @@ appender("FILE", FileAppender) {
 root(DEBUG, ["FILE"])</pre>
 
 
-   <h3 class="doAnchor">Conditional configuration</h3>
+   <h3>Conditional configuration</h3>
    
    <p>Given that Groovy is a fully-fledged programming language,
    conditional statements allow for a single <em>logback.groovy</em>
@@ -500,7 +485,15 @@ root(DEBUG, ["FILE"])</pre>
    output directory of the rolling file appender also depends on the
    host.</p>
    
-   <pre class="prettyprint source">// always a good idea to add an on console status listener
+   <pre class="prettyprint source">import ch.qos.logback.classic.encoder.PatternLayoutEncoder
+import ch.qos.logback.core.rolling.RollingFileAppender
+import ch.qos.logback.core.rolling.TimeBasedRollingPolicy
+import ch.qos.logback.core.ConsoleAppender
+import ch.qos.logback.core.status.OnConsoleStatusListener
+
+import static ch.qos.logback.classic.Level.INFO
+
+// always a good idea to add an on console status listener
 statusListener(OnConsoleStatusListener)
 
 def appenderList = ["ROLLING"]
diff --git a/logback-site/src/site/pages/manual/index.html b/logback-site/src/site/pages/manual/index.html
index acd9bbd..a165a2f 100644
--- a/logback-site/src/site/pages/manual/index.html
+++ b/logback-site/src/site/pages/manual/index.html
@@ -112,14 +112,6 @@
           <a href="migrationFromLog4j.html"><b>Chapter 13: Migration from log4j</b></a>
         </p></li>
 
-        <li><p>
-          <a href="receivers.html"><b>Chapter 14: Receivers</b></a>
-        </p></li>
-
-        <li><p>
-          <a href="usingSSL.html"><b>Chapter 15: Using SSL</b></a>
-        </p></li>
-
       </ul>
     </div>
 
diff --git a/logback-site/src/site/pages/manual/introduction.html b/logback-site/src/site/pages/manual/introduction.html
index f8aa345..95f199e 100644
--- a/logback-site/src/site/pages/manual/introduction.html
+++ b/logback-site/src/site/pages/manual/introduction.html
@@ -10,12 +10,10 @@
     <link rel="stylesheet" type="text/css" href="../css/prettify.css" media="screen" />    
 
   </head>
-  <body onload="prettyPrint(); decorate();">
+  <body onload="prettyPrint()">
     <script type="text/javascript">prefix='../';</script>
     <script type="text/javascript" src="../js/prettify.js"></script>
     <script src="../templates/header.js" type="text/javascript"> </script>
-    <script type="text/javascript" src="../js/jquery-min.js"></script>
-    <script type="text/javascript" src="../js/decorator.js"></script>
     <div id="left">
       <noscript>Please turn on Javascript to view this menu</noscript>
       <script src="../templates/left.js" type="text/javascript"></script>
@@ -48,11 +46,17 @@
     project.  It was designed by Ceki Gülcü, log4j's
     founder.  It builds upon a decade of experience gained in
     designing industrial-strength logging systems. The resulting
-    product, i.e. logback, is faster and has a smaller footprint than
-    all existing logging systems, sometimes by a wide margin. Just as
-    importantly, logback offers <a
-    href="../reasonsToSwitch.html">unique and rather useful
-    features</a> missing in other logging systems.
+    product logback is faster and has a smaller footprint than all
+    existing logging systems, sometimes by a wide margin. Logback also
+    offers unique and rather useful features such as Markers,
+    parameterized logging statements, conditional stack tracing and
+    powerful event filtering. These are only a few examples of the useful
+    features logback has to offer. For its own error reporting,
+    logback relies on <code>Status</code> objects, which greatly
+    facilitate troubleshooting. You may wish to rely on Status objects
+    in contexts other than logging. Logback-core bundles Joran, a
+    powerful and generic configuration system, which can be put to use
+    in your own projects to great effect.
     </p>
 
     <h2>First Baby Step</h2>
@@ -166,7 +170,6 @@ public class HelloWorld2 {
    the following output:</p>
 
 <div class="source longline"><pre>12:49:22.203 [main] DEBUG chapters.introduction.HelloWorld2 - Hello world.
-12:49:22,076 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
 12:49:22,078 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
 12:49:22,093 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.xml]
 12:49:22,093 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Setting up default configuration.
@@ -221,8 +224,20 @@ public class HelloWorld2 {
     produce logging output on the configured appenders.</li>
   </ol>
  
+  <a name="BuildingLogback"></a>
+  <h2>Building logback</h2>  
+  
+  <!-- 
+  
+   Try downloading the file manually from:
+      http://java.sun.com/products/jms/docs.html
+
+  Then, install it using the command:
+      mvn install:install-file -DgroupId=javax.jms -DartifactId=jms \
+          -Dversion=1.1 -Dpackaging=jar -Dfile=/path/to/file 
+  
+   -->
   
-  <h2 class="doAnchor" name="building">Building logback</h2>
   
   <p>As its build tool, logback relies on <a
   href="http://maven.apache.org">Maven</a>, a widely-used open-source
diff --git a/logback-site/src/site/pages/manual/jmxConfig.html b/logback-site/src/site/pages/manual/jmxConfig.html
index 86fee32..63047bf 100644
--- a/logback-site/src/site/pages/manual/jmxConfig.html
+++ b/logback-site/src/site/pages/manual/jmxConfig.html
@@ -12,13 +12,10 @@
 
     <title>Chapter 10: JMX Configuration</title>
   </head>
-  <body onload="prettyPrint(); decorate();">
+  <body onload="prettyPrint()">
     <script type="text/javascript">prefix='../';</script>
     <script type="text/javascript" src="../js/prettify.js"></script>
-    <script type="text/javascript" src="../templates/header.js"></script>
-    <script type="text/javascript" src="../js/jquery-min.js"></script>
-    <script type="text/javascript" src="../js/decorator.js"></script>
-    
+    <script src="../templates/header.js" type="text/javascript"></script>
     <div id="left">
       <noscript>Please turn on Javascript to view this menu</noscript>
       <script src="../templates/left.js" type="text/javascript"></script>
@@ -70,9 +67,9 @@
     in the figure below:
     </p>
     
-    <h3 class="doAnchor" name="jmxConfigurator">Screen-shot of
-    <code>JMXConfigurator</code> viewed in <code>jconsole</code></h3>
-
+    <p><a name="jmxConfigurator" href="#jmxConfigurator">Screen-shot
+    of <code>JMXConfigurator</code> viewed in
+    <code>jconsole</code></a></p>
     <img src="images/chapters/jmxConfigurator/jmxConfigurator.gif" alt="jmxConfigurator"/>   
 
 		<p>Thus, you can</p>
@@ -100,7 +97,7 @@
 
     <img src="images/chapters/jmxConfigurator/statusList.gif" alt="statusList.gif"/>   
 
-    <h3 class="doAnchor" name="leak">Avoiding memory leaks</h3>
+    <h3><a name="leak" href="#leak">Avoiding memory leaks</a></h3>
 
     <p>If your application is deployed in a web-server or an
     application server, the registration of an
@@ -140,8 +137,10 @@ public class MyContextListener implements ServletContextListener {
     <!-- ============ Multiple web-applications  ================== -->
 
     
-    <h2 class="doAnchor" name="multiple"><code>JMXConfigurator</code>
-    with multiple web-applications</h2>
+    <h2>
+      <a name="multiple" href="#multiple"><code>JMXConfigurator</code>
+      with multiple web-applications</a>
+    </h2>
 
     <p>If you deploy multiple web-applications in the same server,
     and if you have not overridden the default <a
@@ -192,8 +191,10 @@ public class MyContextListener implements ServletContextListener {
     
     <!-- ============ JMX enabling your  server ================== -->
 
-    <h3 class="doAnchor" name="jmxEnablingServer">JMX enabling your
-    server</h3>
+    <h3>
+      <a name="jmxEnablingServer" href="#jmxEnablingServer">JMX enabling your
+      server</a>
+    </h3>
 
     <p>If your server runs with JDK 1.6 or later, your server should
     be JMX enabled by default.</p>
diff --git a/logback-site/src/site/pages/manual/layouts.html b/logback-site/src/site/pages/manual/layouts.html
index 7e78711..b3c75f8 100644
--- a/logback-site/src/site/pages/manual/layouts.html
+++ b/logback-site/src/site/pages/manual/layouts.html
@@ -11,14 +11,11 @@
     <link rel="stylesheet" type="text/css" href="../css/prettify.css" media="screen" />
     
   </head>
-  <body onload="prettyPrint(); decorate();">
+  <body onload="prettyPrint()">
     <script type="text/javascript">prefix='../';</script>
     <script type="text/javascript" src="../js/prettify.js"></script>
-    <script type="text/javascript" src="../templates/header.js"></script>
     <script type="text/javascript" src="../js/dsl.js"></script>
-    <script type="text/javascript" src="../js/jquery-min.js"></script>
-    <script type="text/javascript" src="../js/decorator.js"></script>
-
+    <script src="../templates/header.js" type="text/javascript"></script>
     <div id="left">
       <noscript>Please turn on Javascript to view this menu</noscript>
       <script src="../templates/left.js" type="text/javascript"></script>
@@ -41,7 +38,7 @@
     <script src="../templates/creative.js" type="text/javascript"></script>
     <script src="../templates/setup.js" type="text/javascript"></script>
      
-		<h2 class="doAnchor">What is a layout?</h2>
+		<h2>What is a layout?</h2>
 
 		<p>In case you were wondering, layouts have nothing to do with
 		large estates in Florida.  Layouts are logback components
@@ -76,8 +73,9 @@
       <code>ch.qos.logback.classic.spi.ILoggingEvent</code></a>.  This
 			fact will be apparent throughout this section.</p>
 
-		<h2 class="doAnchor" name="writingYourOwnLayout">Writing your own
-		custom Layout</h2>
+		<h2><a name="writingYourOwnLayout"
+		href="#writingYourOwnLayout">Writing your own custom
+		Layout</a></h2>
 
 		<p>Let us implement a simple yet functional layout for the
 			logback-classic module that prints the time elapsed since the
@@ -149,8 +147,9 @@ public class MySampleLayout extends LayoutBase<ILoggingEvent> {
 		contents of exceptions as well.
 		</p>
 
-    <h3 class="doAnchor" name="configuringYourOwnLayout">Configuring
-    your custom layout</h3>
+    <h3><a name="configuringYourOwnLayout"
+    href="#configuringYourOwnLayout">Configuring your custom
+    layout</a></h3>
 
 		<p>Custom layouts are configured as any other component. As
 		mentioned earlier, <code>FileAppender</code> and its sub-classes
@@ -289,7 +288,9 @@ public class MySampleLayout2 extends LayoutBase<ILoggingEvent> {
    <p></p>
 
 
-		<h2 class="doAnchor" name="ClassicPatternLayout">PatternLayout</h2>
+
+		<h2><a name="ClassicPatternLayout"
+		href="#ClassicPatternLayout">PatternLayout</a></h2>
 
 		<p>Logback classic ships with a flexible layout called <a
 		href="../xref/ch/qos/logback/classic/PatternLayout.html">
@@ -413,15 +414,14 @@ WARN  [main]: Message 2</p>
 		listed in the same table cell, they are considered as aliases.
 		</p>
 
-		<table class="bodyTable properties striped" border="0">
+		<table class="bodyTable properties" border="0">
       <tr>
         <th><a name="conversionWord" href="#conversionWord">Conversion Word</a></th>
         <th>Effect</th>
       </tr>
 
 			<tr>
-				<td class="word" name="logger">
-          <a name="logger" href="#logger"><span class="anchor"/></a>
+				<td align="center">
 					<b>c</b>{<em>length</em>} <br /> 				
 					<b>lo</b>{<em>length</em>} <br />
 					<b>logger</b>{<em>length</em>} <br />
@@ -430,15 +430,16 @@ WARN  [main]: Message 2</p>
 				<td>
           Outputs the name of the logger at the origin of the logging
           event.
+					
 
-					<p>This conversion word takes an integer as its first and
+					<p>This conversion word can take an integer as its first and
 					only option. The converter's abbreviation algorithm will
 					shorten the logger name, usually without significant loss of
-					meaning. Setting the value of length option to zero
-					constitutes an exception. It will cause the conversion word
-					to return the sub-string right to the rightmost dot
-					character in the logger name. The next table provides
-					examples of the abbreviation algorithm in action.
+					meaning. Setting the value of this option to zero has
+					special meaning. It will cause the conversion word to return
+					the sub-string right to the rightmost dot character in the
+					logger name. The next table provides examples of the
+					abbreviation algorithm in action.
           </p>
 
 					<table class="bodyTable dark" border="0" cellpadding="8">
@@ -498,8 +499,8 @@ WARN  [main]: Message 2</p>
 				</td>
 			</tr>
 
-			<tr>
-				<td class="word" name="class">
+			<tr class="alt">
+				<td align="center">
 					<b>C</b>{<em>length</em>} <br /> 
 					<b>class</b>{<em>length</em>} <br />
 				</td>
@@ -524,88 +525,81 @@ WARN  [main]: Message 2</p>
 			</tr>
 
       <tr>
-        <td class="word" name="contextName">
+        <td align="center">
           <b>contextName</b><br/>
           <b>cn</b><br/></td>
           <td>Outputs the name of the logger context to which the
           logger at the origin of the event was attached to. </td>
       </tr>
-			<tr>
-        <td class="word" name="date">
+			<tr class="alt">
+        <td align="center">
           <b>d</b>{<em>pattern</em>} <br /> 
           <b>date</b>{<em>pattern</em>} <br />
-          <b>d</b>{<em>pattern</em>, <em>timezone</em>} <br />
-          <b>date</b>{<em>pattern</em>, <em>timezone</em>} <br />
         </td>
         <td>
-         <p>Used to output the date of the logging event.  The date
-         conversion word admits a pattern string as a parameter. The
-         pattern syntax is compatible with the format accepted by <a
-         href="http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html"><code>java.text.SimpleDateFormat</code></a>.</p>
-
-         <p>You can specify the string <em>"ISO8601"</em> for the
-         ISO8601 date format. Note that the %date conversion word
-         defaults to the <a
-         href="http://en.wikipedia.org/wiki/ISO_8601">ISO 8601 date
-         format</a> in the absence of a pattern parameter.</p>
-
-         <p>Here are some sample parameter values. They assume that
-         the actual date is Friday 20th of October, 2006 and that the
-         author has returned to working on this document just after
-         lunch.</p>
+					<p>Used to output the date of the logging event.  The date
+					conversion word admits a pattern string as an option. The
+					pattern syntax is compatible with the format accepted by <a
+					href="http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html"><code>java.text.SimpleDateFormat</code></a>.</p>
+
+					<p>You can specify the string <em>"ISO8601"</em> for the
+					ISO8601 date format. Note that the %date conversion word
+					defaults to the <a
+					href="http://en.wikipedia.org/wiki/ISO_8601">ISO 8601 date
+					format</a> in the absence of a pattern option.</p>
+
+					<p>Here are some sample option values. They assume that the
+					actual date is Friday 20th of October, 2006 and that the
+					author has returned to working on this document just after
+					lunch.</p>
 					
-         <table class="bodyTable dark" cellpadding="8">
-           <tr>
-             <th>Conversion Pattern</th>
-            <th>Result</th>
-           </tr>
-           <tr>
-             <td>%d</td>
-             <td>2006-10-20 14:06:49,812</td>
-           </tr>
-           <tr>
-             <td>%date</td>
-             <td>2006-10-20 14:06:49,812</td>
-           </tr>
-           <tr>
-             <td>%date{ISO8601}</td>
-             <td>2006-10-20 14:06:49,812</td>
-           </tr>			
-           <tr>
-             <td>%date{HH:mm:ss.SSS}</td>
-             <td>14:06:49.812</td>
-           </tr>
-           <tr>
-             <td>%date{dd MMM yyyy;HH:mm:ss.SSS}</td>
-             <td>20 oct. 2006;14:06:49.812	</td>
-           </tr>
-         </table>
-         
-          <p>The second parameter specifies a timezone. For example,
-          the '%date{HH:mm:ss.SSS, Australia/Perth} would print
-          the time in the time zone of Perth, Australia, the world's
-          most isolated city.  Note that in the absence of the
-          timezone parameter, the default timezone of the host Java
-          platform is used.  If the specified timezone identifier is
-          unknown or misspelled, the GMT timezone is assumed as
-          dictated by the <a
-          href="http://docs.oracle.com/javase/6/docs/api/java/util/TimeZone.html#getTimeZone(java.lang.String)">TimeZone.getTimeZone(String)</a>
-          method specification.
+					<table class="bodyTable dark" cellpadding="8">
+						<tr>
+							<th>Conversion Pattern</th>
+							<th>Result</th>
+						</tr>
+            <tr>
+							<td>%d</td>
+							<td>2006-10-20 14:06:49,812</td>
+						</tr>
+						<tr>
+							<td>%date</td>
+							<td>2006-10-20 14:06:49,812</td>
+						</tr>
+						<tr>
+							<td>%date{ISO8601}</td>
+							<td>2006-10-20 14:06:49,812</td>
+						</tr>			
+						<tr>
+							<td>%date{HH:mm:ss.SSS}</td>
+							<td>14:06:49.812</td>
+						</tr>
+						<tr>
+							<td>%date{dd MMM yyyy ;HH:mm:ss.SSS}</td>
+							<td>20 oct. 2006;14:06:49.812	</td>
+						</tr>
+					</table>
+
+          <p>In addition to the date pattern, this converter admits a
+          second option as the timezone. Thus, the
+          '%date{HH:mm:ss.SSS,Australia/Perth} would print the time in
+          the time zone of Perth, Australia, the world's most isolated
+          city.
           </p>
 
-          <p><span class="label">common error</span> Given that the
-          comma ',' character is interpreted as the parameter
-          separator, the pattern <code>HH:mm:ss,SSS</code> will be
-          interpreted as the pattern <code>HM:mm:ss</code> and the
-          timezone <code>SSS</code>. If you wish to include a comma in
-          your date pattern, then simply enclose the pattern between
-          quotes. For example, %date{<b>"</b>HH:mm:ss,SSS<b>"</b>}.
+          <p>Given that the comma ',' character is interpreted as the
+          option separator, the pattern string [HH:mm:ss,SSS] will
+          print the time in the [SSS] time zone which does not
+          exist. Thus, the time will be printed in the default GMT
+          timezone. If you wish to include a comma in your date
+          pattern, then simply enclose the pattern between quotes. For
+          example, %date{<b>"</b>HH:mm:ss,SSS<b>"</b>}.
           </p>
 				</td>
 			</tr>
 
 			<tr>
-				<td class="word" name="file">
+				<td align="center">
 					<b>F / file</b>
 				</td>
 
@@ -621,8 +615,8 @@ WARN  [main]: Message 2</p>
 				</td>
 			</tr>
 
-			<tr >
-				<td class="word" name="caller">
+			<tr class="alt">
+				<td align="center">
 					<b>caller{depth}</b>
 					<b>caller{depth, evaluator-1, ... evaluator-n}</b>
 				</td>
@@ -658,8 +652,8 @@ Caller+1   at mainPackage.sub.sample.Bar.createLoggingRequest(Bar.java:17)
 Caller+2   at mainPackage.ConfigTester.main(ConfigTester.java:38)</pre>
 					
 					<p>This conversion word can also use evaluators to test
-					logging events against a given criterion before computing
-					caller data. For example, using <b>%caller{3,
+					logging events against a given criterion before creating the
+					output. For example, using <b>%caller{3,
 					CALLER_DISPLAY_EVAL}</b> will display three lines of
 					stacktrace, only if the evaluator called
 					<em>CALLER_DISPLAY_EVAL</em> returns a <b>positive</b>
@@ -671,23 +665,25 @@ Caller+2   at mainPackage.ConfigTester.main(ConfigTester.java:38)</pre>
 			</tr>
 
 			<tr>
-				<td class="word" name="line">
+				<td align="center">
 					<b>L / line</b>
 				</td>
 
-				<td><p>Outputs the line number from where the logging
-					request was issued.</p>
+				<td>
+					<p>Outputs the line number from where the logging
+					request was issued.
+					</p>
 
-					<p>Generating the line number information is not
-					particularly fast.  Thus, its use should be avoided unless
-					execution speed is not an issue.
+					<p>Generating the line number information is not particularly
+						fast.  Thus, its use should be avoided unless execution
+						speed is not an issue.
 					</p>
 				</td>
 			</tr>
 
 
-			<tr>
-				<td class="word" name="message">
+			<tr class="alt">
+				<td align="center">
 					<b>m / msg / message</b>
 				</td>
 				<td>
@@ -698,99 +694,108 @@ Caller+2   at mainPackage.ConfigTester.main(ConfigTester.java:38)</pre>
 			</tr>
 
 			<tr>
-				<td class="word" name="method">
+				<td align="center">
 					<b>M / method</b>
 				</td>
 
 				<td>
-					<p>Outputs the method name where the logging request was
-					issued.</p>
-					<p>Generating the method name is not particularly fast.
-					Thus, its use should be avoided unless execution speed is
-					not an issue.</p>
+					<p>
+						Outputs the method name where the logging
+						request was issued.
+					</p>
+					<p>
+						Generating the method name is not particularly fast.
+						Thus, its use should be avoided unless
+						execution speed is not an issue.
+					</p>
 				</td>
 			</tr>
 
-			<tr>
-				<td class="word" name="newline">
+			<tr class="alt">
+				<td align="center">
 					<b>n</b>
 				</td>
 
 				<td>
-					<p>Outputs the platform dependent line separator
-						character or characters.</p>
-					<p>This conversion word offers practically the same
-					performance as using non-portable line separator strings
-					such as "\n", or "\r\n". Thus, it is the preferred way of
-					specifying a line separator.
+					<p>
+						Outputs the platform dependent line separator
+						character or characters.
+					</p>
+					<p>
+						This conversion word offers practically the
+						same performance as using non-portable line
+						separator strings such as "\n", or "\r\n". Thus,
+						it is the preferred way of specifying a line
+						separator.
 					</p>
 				</td>
 
 			</tr>
 
 			<tr>
-				<td class="word" name="level">
+				<td align="center">
 					<b>p / le / level</b>
 				</td>
 				<td>Outputs the level of the logging event.</td>
 			</tr>
 
-			<tr>
+			<tr class="alt">
 
-				<td class="word" name="relative">
+				<td align="center">
 					<b>r / relative</b>
 				</td>
 
-				<td>Outputs the number of milliseconds elapsed since the start
-				of the application until the creation of the logging event.
+				<td>
+					Outputs the number of milliseconds elapsed
+					since the start of the application until the
+					creation of the logging event.
 				</td>
 			</tr>
 
 
 			<tr>
-				<td class="word" name="relative">
+				<td align="center">
 					<b>t / thread</b>
 				</td>
 
-				<td>Outputs the name of the thread that generated the logging
-				event.
+				<td>
+					Outputs the name of the thread that generated
+					the logging event.
 				</td>
 
 			</tr>
 
-			<tr>
-				<td class="word" name="mdc">
-					<b>X</b>{<em>key:-defaultVal</em>} <br /> 
-					<b>mdc</b>{<em>key:-defaultVal</em>} <br />
+			<tr  class="alt">
+				<td align="center">
+					<b>X</b>{<em>key</em>} <br /> 
+					<b>mdc</b>{<em>key</em>} <br />
 				</td>
 
 				<td>
 
-					<p>Outputs the MDC (mapped diagnostic context) associated
-					with the thread that generated the logging event.
+					<p>
+						Outputs the MDC (mapped diagnostic context) associated
+						with the thread that generated the logging event.
 					</p>
 
 					<p>If the <b>mdc</b> conversion word is followed by a key
 					between braces, as in <b>%mdc{userid}</b>, then the MDC
 					value corresponding to the key 'userid' will be output. If
-					the value is null, then the <a
-					href="configuration.html#defaultValuesForVariables">default
-					value</a> specified after the <b>:-</b> operator is
-					output. If no default value is specified than the empty
-					string is output.
+					the that value is null, the empty string is output.
 					</p>
 
-					<p>If no key is given, then the entire content of the MDC
+					<p>If no option is given, then the entire content of the MDC
 					will be output in the format "key1=val1, key2=val2".
 					</p>
 
 					<p>See the <a href="mdc.html">chapter on MDC</a> for more
-					details on the subject.</p>
+					details on the subject.
+					</p>
 
 				</td>
 			</tr>
 			<tr>
-				<td class="word" name="ex">
+				<td align="center">
 					<b>ex</b>{<em>depth</em>} <br /> 
           	<b>exception</b>{<em>depth</em>} <br /> 
 					<b>throwable</b>{<em>depth</em>} <br />
@@ -860,8 +865,9 @@ Caller+2   at mainPackage.ConfigTester.main(ConfigTester.java:38)</pre>
 				</td>
 			</tr>
       
-      <tr>
-				<td class="word" name="xThrowable">
+      <tr class="alt">
+				<td align="center">
+          <a name="xThrowable" href="#xThrowable">
 					<b>xEx</b>{<em>depth</em>} <br /> 
           <b>xException</b>{<em>depth</em>} <br /> 
 					<b>xThrowable</b>{<em>depth</em>} <br />
@@ -869,6 +875,7 @@ Caller+2   at mainPackage.ConfigTester.main(ConfigTester.java:38)</pre>
 					<b>xEx</b>{depth, evaluator-1, ..., evaluator-n} <br />
 					<b>xException</b>{depth, evaluator-1, ..., evaluator-n} <br />
 					<b>xThrowable</b>{depth, evaluator-1, ..., evaluator-n}
+          </a>
 				</td>
 
 				<td>
@@ -936,7 +943,7 @@ Caller+2   at mainPackage.ConfigTester.main(ConfigTester.java:38)</pre>
       </tr>
 
       <tr>
-        <td class="word" name="nopex">
+        <td align="center">
           <b>nopex</b> <br />
           <b>nopexception</b>
         </td>
@@ -955,8 +962,8 @@ Caller+2   at mainPackage.ConfigTester.main(ConfigTester.java:38)</pre>
         </td>
       </tr>
 
-      <tr >
-        <td class="word" name="marker">
+      <tr class="alt">
+        <td align="center">
           <b>marker</b>
         </td>
 
@@ -976,34 +983,27 @@ Caller+2   at mainPackage.ConfigTester.main(ConfigTester.java:38)</pre>
 
 
       <tr>
-        <td class="word" name="property">
+        <td align="center">
           <b>property{key}</b>
         </td>
         
-        <td><p>Outputs the value associated with a property named
-        <em>key</em>. The the relevant docs on how to define ion
-        entitled <a
-        href="configuration.html#variableSubstitution">define
-        variables</a> and <a href="configuration.html#scopes">variable
-        scopes</a>. 
-
-        <!-- XXXXXXXXXXXX -->
-
-        If <em>key</em> is not a property of
-        the logger context, then <em>key</em> will be looked up in the
-        System properties.</p>
+        <td>
+          <p>Outputs the value associated with a context
+          property named <em>key</em>. If <em>key</em> is not a
+          property of the logger context, then <em>key</em> will be
+          looked up in the System properties. </p>
 
 
-         <p>There is no default value for <em>key</em>. If it is
-         omitted, the returned value will be "Property_HAS_NO_KEY",
-         expliciting the error condition.</p>
+          <p>There is no default value for <em>key</em>. If it is
+          omitted, the returned value will be "Property_HAS_NO_KEY",
+          expliciting the error condition.</p>
           
         </td>
       </tr>
 
-      <tr>
-        <td class="word" name="replace">
-          <b>replace(<em>p</em>){r, t}</b>
+      <tr class="alt">
+        <td align="center">
+          <a name="replace" href="#replace"><b>replace(<em>p</em>){r, t}</b></a>
         </td>
         
         <td>
@@ -1025,12 +1025,13 @@ Caller+2   at mainPackage.ConfigTester.main(ConfigTester.java:38)</pre>
 
 
       <tr>
-        <td class="word" name="rootException">
+        <td align="center">
+          <a name="rootException" href="#rootException">		
           <b>rEx</b>{<em>depth</em>} <br /> 
           <b>rootException</b>{<em>depth</em>} <br /> 
           <br />
 					<b>rEx</b>{depth, evaluator-1, ..., evaluator-n} <br />
-					<b>rootException</b>{depth, evaluator-1, ..., evaluator-n}
+					<b>rootException</b>{depth, evaluator-1, ..., evaluator-n}</a>
         </td>
         
         <td>
@@ -1051,7 +1052,7 @@ Wrapped by: org.springframework.BeanCreationException: Error creating bean with
 
          <p>The %rootException converter admits the same optional
          parameters as the %xException converter described above,
-         including depth and evaluators. It outputs also packaging
+         including depth and eveluators. It outputs also packaging
          information. In short, %rootException is very similar to
          %xException, only the order of exception output is reversed.
          </p>
@@ -1066,7 +1067,7 @@ Wrapped by: org.springframework.BeanCreationException: Error creating bean with
 		</table>
 
 
-    <h4 class="doAnchor" name="percentIsSpecial">% character has special meaning</h4>
+    <h4>% character has special meaning</h4>
 
     <p>Given that in the context of conversion patterns the percent
     sign carries special meaning, in order to include it as a literal,
@@ -1074,8 +1075,8 @@ Wrapped by: org.springframework.BeanCreationException: Error creating bean with
     %m%n".
     </p>
 
-    <h4 class="doAnchor" name="restrictionsOnLiterals">Restrictions on
-    literals immediately following conversion words</h4>
+    <h4>Restrictions on literals immediately following conversion
+    words</h4>
 
     <p>In most cases literals naturally contain spaces or other
     delimiting characters so that they are not confused with
@@ -1096,7 +1097,8 @@ Wrapped by: org.springframework.BeanCreationException: Error creating bean with
 
     </p>
 
-    <h2 class="doAnchor" name="formatModifiers">Format modifiers</h2>
+    <h2><a name="formatModifiers" href="#formatModifiers">Format
+    modifiers</a></h2>
 
 		<p>By default the relevant information is output as-is.  However,
 		with the aid of format modifiers it is possible to change the
@@ -1250,8 +1252,8 @@ Wrapped by: org.springframework.BeanCreationException: Error creating bean with
 			</tr>
 		</table>
 
-    <h3 class="doAnchor" name="oneLetterLevel">Output just one letter
-    for the level</h3>
+    <h3><a name="oneLetterLevel" href="#oneLetterLevel">Output just
+    one letter for the level</a></h3>
 
     <p>Instead of printing TRACE, DEBUG, WARN, INFO or ERROR for the
     level, you may want to print just T, D, W, I and E. You could
@@ -1262,7 +1264,8 @@ Wrapped by: org.springframework.BeanCreationException: Error creating bean with
     "<code>%.-1level</code>".
     </p>
     
-		<h2 class="doAnchor" name="cwOptions">Conversion word options</h2>
+		<h2><a name="cwOptions" href="#cwOptions">Conversion word
+		options</a></h2>
 
 		<p>A conversion specifier can be followed by options. The are
 		always declared between braces. We have already seen some of the
@@ -1294,8 +1297,8 @@ Wrapped by: org.springframework.BeanCreationException: Error creating bean with
     previous item at least 14 but at most 16 times.
     </p>
 
-		<h2 class="doAnchor" name="Parentheses">Parentheses are
-		special</h2>
+		<h2><a name="Parentheses" href="#Parentheses">Parentheses are
+		special</a></h2>
 
     <p>In logback, parentheses within the pattern string are treated
     as grouping tokens. Thus, it is possible to group a sub-pattern
@@ -1346,68 +1349,7 @@ Wrapped by: org.springframework.BeanCreationException: Error creating bean with
     [%thread]<b>\)</b>. 
     </p>
 
-    <h2 class="doAnchor" name="coloring">Coloring</h2>
-
-    <p>Grouping by <a href="#Parentheses">parentheses</a> as explained
-    above allows coloring of sub-patterns. As of version 1.0.5,
-    <code>PatternLayout</code> recognizes "%black", "%red",
-    "%green","%yellow","%blue", "%magenta","%cyan", "%white", "%gray",
-    "%boldRed","%boldGreen", "%boldYellow", "%boldBlue",
-    "%boldMagenta""%boldCyan", "%boldWhite" and "%highlight" as
-    conversion words. These conversion words are intended to contain a
-    sub-pattern. Any sub-pattern enclosed by a coloring word will be
-    output in the specified color.
-    </p>
-
-    <p>Below is a configuration file illustrating coloring. Note the
-    %cyan conversion specifier enclosing "%logger{15}". This will
-    output the logger name abbreviated to 15 characters in cyan. The
-    %highlight conversion specifier prints its sub-pattern in bold-red
-    for events of level ERROR, in red for WARN, in BLUE for INFO, and
-    in the default color for other levels.</p>
-
-		<em>
-			Example: Highlighting levels
-			(logback-examples/src/main/java/chapters/layouts/highlighted.xml)
-		</em>
-
-    <span class="asGroovy" onclick="return asGroovy('highlighted');">View as .groovy</span>
-
-
-<pre id="highlighted" class="prettyprint"><configuration debug="true">
-  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-    <!-- On Windows machines setting withJansi to true enables ANSI
-         color code interpretation by the Jansi library. This requires
-         org.fusesource.jansi:jansi:1.8 on the class path.  Note that
-         Unix-based operating systems such as Linux and Mac OS X
-         support ANSI color codes by default. -->
-    <b><withJansi>true</withJansi></b>
-    <encoder>
-      <pattern>[%thread] <b>%highlight(%-5level)</b> <b>%cyan(%logger{15})</b> - %msg %n</pattern>
-    </encoder>
-  </appender>
-  <root level="DEBUG">
-    <appender-ref ref="STDOUT" />
-  </root>
-</configuration></pre>
-
-     <p>Here is the corresponding output:</p>
-
-<pre class="source">[main] <span style="color:#611">WARN</span>  <span style="color:#2bd">c.l.TrivialMain</span> - a warning message 0
-[main] DEBUG <span style="color:#2bd">c.l.TrivialMain</span> - hello world number1
-[main] DEBUG <span style="color:#2bd">c.l.TrivialMain</span> - hello world number2
-[main] <span style="color:#00F">INFO</span>  <span style="color:#2bd">c.l.TrivialMain</span> - hello world number3
-[main] DEBUG <span style="color:#2bd">c.l.TrivialMain</span> - hello world number4
-[main] <span style="color:#611">WARN</span>  <span style="color:#2bd">c.l.TrivialMain</span> - a warning message 5
-[main] <span style="color:#F00">ERROR</span> <span style="color:#2bd">c.l.TrivialMain</span> - Finish off with fireworks</pre>
-
-    <p>It takes very few lines of code to create a coloring conversion
-    word. The section entitled <a
-    href="#customConversionSpecifier">creating a custom conversion
-    specifier</a> discusses the steps necessary for registering a
-    conversion word in your configuration file.</p>
-   
-		<h2 class="doAnchor" name="Evaluators">Evaluators</h2>
+		<h2><a name="Evaluators" href="#Evaluators">Evaluators</a></h2>
 
 		<p>As mentioned above, option lists come in handy when a
 		conversion specifier is required to behave dynamically based on
@@ -1676,8 +1618,9 @@ java.lang.Exception: display
 
 
     
-		<h2 class="doAnchor" name="customConversionSpecifier">Creating a
-		custom conversion specifier</h2>
+		<h2><a name="customConversionSpecifier"
+		href="#customConversionSpecifier">Creating a custom conversion
+		specifier</a></h2>
 
 		<p>Up to this point we have presented the built-in conversion
 		words in <code>PatternLayout</code>. But it is also possible to
@@ -1686,8 +1629,6 @@ java.lang.Exception: display
 		<p>Building a custom conversion specifier consists of two steps.
     </p>
 		
-    <h4>Step 1</h4>
-
 		<p>First, you must extend the <code>ClassicConverter</code>
 		class. <a
 		href="../xref/ch/qos/logback/classic/pattern/ClassicConverter.html">
@@ -1700,32 +1641,59 @@ java.lang.Exception: display
 		<code>ILoggingEvent</code> and returns it as a String. It might
 		abbreviate the logger name in the process.</p>
 		
-		<p>Here is a customer converter which returns the time elapsed
-		since its creaton in nanoseconds:</p>
+		<p>Let us say that our customized <code>ClassicConverter</code>
+		colors the level of the logging event, according to ANSI terminal
+		conventions. Here is a possible implementation:</p>
 		
 <em> Example: Sample Converter Example 
 <a href="../xref/chapters/layouts/MySampleConverter.html">
 (src/main/java/chapters/layouts/MySampleConverter.java)</a></em>
-<pre class="prettyprint source">public class MySampleConverter extends ClassicConverter {
+<pre class="prettyprint source">package chapters.layouts;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.pattern.ClassicConverter;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 
-  long start = System.nanoTime();
+public class MySampleConverter extends ClassicConverter {
 
-  <b>@Override</b>
-  <b>public String convert(ILoggingEvent event) {</b>
-    <b>long nowInNanos = System.nanoTime();</b>
-    <b>return Long.toString(nowInNanos-start);</b>
-  <b>}</b>
-}</pre>
+  private static final String END_COLOR = "\u001b[m";
+
+  private static final String ERROR_COLOR = "\u001b[0;31m";
+  private static final String WARN_COLOR = "\u001b[0;33m";
+
+  @Override
+  <b>public String convert(ILoggingEvent event) {
+    StringBuffer sbuf = new StringBuffer();
+    sbuf.append(getColor(event.getLevel()));
+    sbuf.append(event.getLevel());
+    sbuf.append(END_COLOR);
+    return sbuf.toString();
+  }</b>
+
+  /**
+   * Returns the appropriate characters to change the color for the specified
+   * logging level.
+   */
+  private String getColor(Level level) {
+    switch (level.toInt()) {
+    case Level.ERROR_INT:
+      return ERROR_COLOR;
+    case Level.WARN_INT:
+      return WARN_COLOR;
+    default:
+      return "";
+    }
+  }
+}
+</pre>
 
-		<p>This implementation is pretty straightforward. The
+		<p>This implementation is relatively straightforward. The
 		<code>MySampleConverter</code> class extends
 		<code>ClassicConverter</code>, and implements the
-		<code>convert</code> method which returns the number of
-		nano-seconds elapsed since its creation.
+		<code>convert</code> method where it returns a level string
+		decorated with ANSI coloring codes.
 		</p>
 
-    <h4>Step 2</h4>
-
 		<p>In the second step, we must let logback know about the new
 		<code>Converter</code>. For this purpose, we need to declare the
 		new conversion word in the configuration file, as shown below:</p>
@@ -1734,12 +1702,12 @@ java.lang.Exception: display
  <span class="asGroovy" onclick="return asGroovy('mySampleConverterConfig');">View as .groovy</span>
 <pre id="mySampleConverterConfig" class="prettyprint source"><configuration>
 
-  <b><conversionRule conversionWord="nanos" 
+  <b><conversionRule conversionWord="sample" 
                   converterClass="chapters.layouts.MySampleConverter" /></b>
 	
   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
     <encoder>
-      <pattern><b>%-6nanos</b> [%thread] - %msg%n</pattern>
+      <pattern>%-4relative [%thread] <b>%sample</b> - %msg%n</pattern>
     </encoder>
   </appender>
 
@@ -1753,28 +1721,33 @@ java.lang.Exception: display
 		<code>PatternLayout</code> pattern, as with any other
 		conversion word.</p>
 		
-    <p>The command:</p>
+    <p>Given that ANSI terminal codes do not work on Windows, you can
+    view the results on non-Windows platforms such as Linux or
+    Mac. The following command:</p>
 
     <div class="source">java chapters.layouts.SampleLogging src/main/java/chapters/layouts/mySampleConverterConfig.xml </div>
 
-    <p>should yield output akin to:</p>
+    <p>should yield:</p>
     
-    <pre class="source">4868695 [main] DEBUG - Everything's going well
-5758748 [main] ERROR - maybe not quite...</pre>
+    <p class="source">0    [main] DEBUG - Everything's going well
+3    [main] <span class="red">ERROR</span> - maybe not quite... </p>
 
 
+    <p>Please note that the string "ERROR" is highlighted in red,
+    which was the declared intent of the exercise.</p>
+
 		<p>The reader might want to take a look at other
 		<code>Converter</code> implementations such as
 		<a href="../xref/ch/qos/logback/classic/pattern/MDCConverter.html">
 		<code>MDCConverter</code></a> to learn about more complex
-		behaviours, such as option handling. For creating your own
-		coloring schemes have a look at <a
-		href="../xref/ch/qos/logback/classic/pattern/color/HighlightingCompositeConverter.html"><code>HighlightingCompositeConverter</code></a>.
+		behaviours, such as option handling.
 		</p>
 
    	
 
-    <h2 class="doAnchor" name="ClassicHTMLLayout">HTMLLayout</h2>
+    <h2>
+      <a name="ClassicHTMLLayout" href="#ClassicHTMLLayout">HTMLLayout</a>
+    </h2>
 	
 	  <p><a
 	  href="../xref/ch/qos/logback/classic/html/HTMLLayout.html"><code>HTMLLayout</code></a>
@@ -1894,10 +1867,10 @@ java.lang.Exception: display
 		<code>SMTPAppender</code> so that outgoing email is pleasantly
 		formatted in HTML.
 		</p>
+    <h2><a name="log4jXMLLayout" href="#log4jXMLLayout">Log4j
+    XMLLayout</a></h2>
 
 
-    <h2 class="doAnchor" name="log4jXMLLayout">Log4j XMLLayout</h2>
-
     <p><a
     href="../xref/ch/qos/logback/classic/log4j/XMLLayout.html">XMLLayout</a>
     (part of logback-classic) generates output in a log4j.dtd
@@ -1939,7 +1912,7 @@ java.lang.Exception: display
   </root>
 </configuration> </pre>
     
-		<h1 class="doAnchor" name="logback-access">Logback access</h1>
+		<h1><a name="logback-access" href="#logback-access">Logback access</a></h1>
 
 		<p>Most logback-access layouts are mere adaptations of
 		logback-classic layouts. Logback-classic and logback-access
@@ -1953,7 +1926,9 @@ java.lang.Exception: display
 		logback-classic.</p>
 		
 
-		<h3 class="doAnchor" name="AccessPatternLayout">PatternLayout</h3>
+		<a name="AccessPatternLayout"></a>
+
+		<h3>PatternLayout</h3>
 
 		<p><a href="../xref/ch/qos/logback/access/PatternLayout.html">
 		<code>PatternLayout</code></a> in logback-access can be configured
@@ -1966,49 +1941,53 @@ java.lang.Exception: display
 		<p>Below is a list of conversion specifiers for 
 		<code>PatternLayout</code> in logback-access.</p>
 		
-		<table  class="bodyTable striped" border="0" cellpadding="8">
+		<table  class="bodyTable" border="0" cellpadding="8">
       <tr>
         <th align="center">Conversion Word</th>
         <th align="center">Effect</th>
       </tr>
-      <tr>
-        <td class="word" name="remoteIP">
-          <b>a / remoteIP</b>
-        </td>
+      <tr class="a">
+        <td align="center"><b>a / remoteIP</b></td>
         <td>
-          <p>Remote IP address.</p>
+          <p>
+            Remote IP address.
+          </p>
         </td>
       </tr>
-      <tr>
-        <td class="word" name="localIP"><b>A / localIP</b></td>
+      <tr class="b">
+        <td align="center"><b>A / localIP</b></td>
         <td>
-          <p>Local IP address.</p>
+          <p>
+            Local IP address.
+          </p>
         </td>
       </tr>		
-      <tr>
-        <td class="word" name="bytesSent"><b>b / B / bytesSent</b></td>
+      <tr class="a">
+        <td align="center"><b>b / B / byteSent</b></td>
         <td>
           <p>
             Response's content length.
           </p>
         </td>
       </tr>				
-      <tr>
-        <td class="word" name="clientHost"><b>h / clientHost</b></td>
+      <tr class="b">
+        <td align="center"><b>h / clientHost</b></td>
         <td>
           <p>
             Remote host.
           </p>
         </td>
       </tr>
-      <tr>
-        <td class="word" name="protocol"><b>H / protocol</b></td>
+      <tr class="a">
+        <td align="center"><b>H / protocol</b></td>
         <td>
-          <p>Request protocol.</p>
+          <p>
+            Request protocol.
+          </p>
         </td>
       </tr>
-      <tr>
-        <td class="word" name="remoteLogName"><b>l</b></td>
+      <tr class="b">
+        <td align="center"><b>l</b></td>
         <td>
           <p>
             Remote log name. In logback-access, this converter always
@@ -2017,20 +1996,24 @@ java.lang.Exception: display
         </td>
       </tr>
       
-      <tr>
-        <td class="word" name="reqParameter"><b>reqParameter{paramName}</b></td>
+      <tr class="a">
+        <td align="center"><b>reqParameter{paramName}</b></td>
         <td>
-          <p>Parameter of the response.</p>
+          <p>
+            Parameter of the response.
+          </p>
           <p>This conversion word takes the first option in braces and looks
           for the corresponding parameter in the request.</p>
           <p><b>%reqParameter{input_data}</b> 
           displays the corresponding parameter.</p>
         </td>
       </tr>		
-      <tr>
-        <td class="word" name="header"><b>i{header} / header{header}</b></td>
+      <tr class="b">
+        <td align="center"><b>i{header} / header{header}</b></td>
         <td>
-          <p>Request header.</p>
+          <p>
+            Request header.
+          </p>
           <p>This conversion word takes the first option in braces and looks
           for the corresponding header in the request.</p>
           <p><b>%header{Referer}</b> displays the referer of the request.</p>
@@ -2039,82 +2022,76 @@ java.lang.Exception: display
           </p>
         </td>
       </tr>	
-      <tr >
-        <td class="word" name="requestMethod"><b>m / requestMethod</b></td>
+      <tr class="a">
+        <td align="center"><b>m / requestMethod</b></td>
         <td>
-          <p>Request method.</p>
+          <p>
+            Request method.
+          </p>
         </td>
       </tr>		
-      <tr>
-        <td class="word" name="requestURL"><b>r / requestURL</b></td>
+      <tr class="b">
+        <td align="center"><b>r / requestURL</b></td>
         <td>
           <p>
             URL requested.
           </p>
         </td>
       </tr>
-      <tr>
-        <td class="word" name="statusCode"><b>s / statusCode</b></td>
+      <tr class="a">
+        <td align="center"><b>s / statusCode</b></td>
         <td>
           <p>
             Status code of the request.
           </p>
         </td>
-      </tr>
-      <tr>
-          <td class="word" name="elapsedTime"><b>D / elapsedTime</b></td>
-          <td>
-              <p>
-                  The time taken to serve the request, in milliseconds.
-              </p>
-          </td>
-      </tr>
-      <tr>
-        <td class="word" name="dateAccess"><b>t / date</b></td>
+      </tr>		
+      <tr class="b">
+        <td align="center"><b>t / date</b></td>
         <td>
           <p>Outputs the date of the logging event.  The date
           conversion specifier may be followed by a set of braces
           containing a date and time pattern strings used by
-          <code>java.text.SimpleDateFormat</code>.  <em>ISO8601</em>
-          is also a valid value.
+          <code>java.text.SimpleDateFormat</code>.  <em>ABSOLUTE</em>,
+          <em>DATE</em> or <em>ISO8601</em> are also valid values.
 					</p>
-					<p>For example, <b>%t{HH:mm:ss,SSS}</b> or
-					<b>%t{dd MMM yyyy ;HH:mm:ss,SSS}</b>.
-					If no date format specifier is given then the
-					Common Log Format date format is assumed, that is: <b>%t{dd/MMM/yyyy:HH:mm:ss Z}</b>
+					<p>For example, <b>%d{HH:mm:ss,SSS}</b>,
+					<b>%d{dd MMM yyyy ;HH:mm:ss,SSS}</b> or
+					<b>%d{DATE}</b>.  If no date format specifier is given then
+					ISO8601 format is assumed.
 					</p>
         </td>
       </tr>
-      <tr>
-        <td class="word" name="httpUser"><b>u / user</b></td>
+      <tr class="a">
+        <td align="center"><b>u / user</b></td>
         <td>
           <p>
             Remote user.
           </p>
         </td>
       </tr>		
-      <tr>
-        <td class="word" name="requestURI"><b>U / requestURI</b></td>
+      <tr class="b">
+        <td align="center"><b>U / requestURI</b></td>
         <td>
           <p>
             Requested URI.
           </p>
         </td>
       </tr>		
-      <tr >
-        <td class="word" name="server"><b>v / server</b></td>
+      <tr class="a">
+        <td align="center"><b>v / server</b></td>
         <td>
           <p>Server name.</p>
         </td>
       </tr>
       <tr class="b">
-        <td class="word" name="localPort"><b>localPort</b></td>
+        <td align="center"><b>localPort</b></td>
         <td>
           <p>Local port.</p>
         </td>
       </tr>
       <tr class="a">
-        <td class="word" name="reqAttribute"><b>reqAttribute{attributeName}</b></td>
+        <td align="center"><b>reqAttribute{attributeName}</b></td>
         <td>
           <p>Attribute of the request.</p>
           <p>This conversion word takes the first option in braces and looks
@@ -2124,7 +2101,7 @@ java.lang.Exception: display
         </td>
       </tr>
       <tr class="b">
-        <td class="word" name="reqCookie"><b>reqCookie{cookie}</b></td>
+        <td align="center"><b>reqCookie{cookie}</b></td>
         <td>
           <p>Request cookie.</p>
           <p>This conversion word takes the first option in braces and looks
@@ -2133,7 +2110,7 @@ java.lang.Exception: display
         </td>
       </tr>
       <tr class="a">
-        <td class="word" name="responseHeader"><b>responseHeader{header}</b></td>
+        <td align="center"><b>responseHeader{header}</b></td>
         <td>
           <p>
             Header of the response.
@@ -2144,7 +2121,7 @@ java.lang.Exception: display
         </td>
       </tr>
       <tr class="b">
-        <td class="word" name="requestContent"><b>requestContent</b></td>
+        <td align="center"><b>requestContent</b></td>
         <td>
           <p>This conversion word displays the content of the request,
           that is the request's <code>InputStream</code>. It is used
@@ -2161,7 +2138,7 @@ java.lang.Exception: display
         </td>
       </tr>
       <tr class="a">
-        <td class="word" name="fullRequest"><b>fullRequest</b></td>
+        <td align="center"><b>fullRequest</b></td>
         <td>
           <p>This converter outputs the data associated with the
           request, including all headers and request contents.
@@ -2169,7 +2146,7 @@ java.lang.Exception: display
         </td>
       </tr>
       <tr class="b">
-        <td class="word" name="responseContent"><b>responseContent</b></td>
+        <td align="center"><b>responseContent</b></td>
         <td>
           <p>This conversion word displays the content of the
           response, that is the response's
@@ -2186,7 +2163,7 @@ java.lang.Exception: display
         </td>
       </tr>
       <tr class="a">
-        <td class="word" name="fullResponse"><b>fullResponse</b></td>
+        <td align="center"><b>fullResponse</b></td>
         <td>
           <p>This conversion word takes all the available data
           associated with the response, including all headers of the
@@ -2225,7 +2202,8 @@ java.lang.Exception: display
 	 	begins much like the <em>common</em> pattern but also displays two
 	 	request headers, namely referer, and user-agent.</p>
 
-		<h3 class="doAnchor" name="AccessHTMLLayout">HTMLLayout</h3>
+		<a name="AccessHTMLLayout"></a>
+		<h3>HTMLLayout</h3>
 		
 		<p>The <a
 		href="../xref/ch/qos/logback/access/html/HTMLLayout.html"><code>HTMLLayout</code></a>
diff --git a/logback-site/src/site/pages/manual/loggingSeparation.html b/logback-site/src/site/pages/manual/loggingSeparation.html
index 55cb8e0..f6ef361 100644
--- a/logback-site/src/site/pages/manual/loggingSeparation.html
+++ b/logback-site/src/site/pages/manual/loggingSeparation.html
@@ -10,13 +10,10 @@
     <link rel="stylesheet" type="text/css" href="../css/_print.css" media="print" />
     <link rel="stylesheet" type="text/css" href="../css/prettify.css" media="screen" />
   </head>
-  <body onload="prettyPrint(); decorate();">
+  <body onload="prettyPrint()">
     <script type="text/javascript">prefix='../';</script>
     <script type="text/javascript" src="../js/prettify.js"></script>
-    <script type="text/javascript" src="../templates/header.js"></script>
-    <script type="text/javascript" src="../js/jquery-min.js"></script>
-    <script type="text/javascript" src="../js/decorator.js"></script>
-
+    <script src="../templates/header.js" type="text/javascript"></script>
     <div id="left">
       <noscript>Please turn on Javascript to view this menu</noscript>
       <script src="../templates/left.js" type="text/javascript"></script>
@@ -69,8 +66,8 @@
     of the container itself.
     </p>
 
-    <h2 class="doAnchor" name="easy">The simplest and easiest
-    approach</h2>
+    <h2><a name="easy" href="#easy">The simplest and easiest
+    approach</a></h2>
 
     <p>Assuming your container supports child-first class loading,
     separation of logging can be accomplished by embedding a copy of
@@ -100,8 +97,8 @@
     separation impossible. All hope is not lost. Please read on.
     </p>
 
-    <h2 class="doAnchor" name="contextSelectors">Context
-    Selectors</h2>
+    <h2><a name="contextSelectors" href="#contextSelectors">Context
+    Selectors</a></h2>
 
     <p>Logback provides a mechanism for a single instance of SLF4J and
     logback classes loaded into memory to provide multiple logger
@@ -144,8 +141,8 @@
     </p>
 
 
-    <h3 class="doAnchor"
-    name="ContextJNDISelector">ContextJNDISelector</h3>
+    <h3><a name="ContextJNDISelector"
+    href="#ContextJNDISelector">ContextJNDISelector</a></h3>
 
     <p>Logback-classic ships with a selector called
     <code>ContextJNDISelector</code> which selects the logger context
@@ -169,8 +166,9 @@
     for
     <code>ch.qos.logback.classic.selector.ContextJNDISelector</code>.</p>
 
-    <h3 class="doAnchor" name="settingJNDIVariables">Setting JNDI
-    variables in applications</h3>
+    <h3><a name="settingJNDIVariables"
+    href="#settingJNDIVariables">Setting JNDI variables in
+    applications</a></h3>
     
     <p>In each of your applications, you need to name the logging
     context for the application. For a web-application, JNDI
@@ -217,8 +215,8 @@
     </p>
     
 
-    <h3 class="doAnchor" name="jndiTomcat">Configuring Tomcat for
-    ContextJNDISelector</h3>
+    <h3><a name="jndiTomcat" href="#jndiTomcat">Configuring Tomcat for
+    ContextJNDISelector</a></h3>
 
     <p>First, place the logback jars (that is
     logback-classic-${project.version}.jar,
@@ -236,8 +234,8 @@
     <p class="source">JAVA_OPTS="$JAVA_OPTS -Dlogback.ContextSelector=JNDI"</p>
 
 
-    <h3 class="doAnchor" name="hotDeploy">Hot deploying
-    applications</h3>
+    <h3><a name="hotDeploy" href="#hotDeploy">Hot deploying
+    applications</a></h3>
 
     <p>When the web-application is recycled or shutdown, we strongly
     recommend that the incumbent <code>LoggerContext</code> be closed
@@ -265,7 +263,8 @@
     <code>contextDestroyed()</code> method is invoked <em>last</em>
     during application shutdown. </p>
 
-    <h3 class="doAnchor" name="betterPerf">Better performance</h3>
+    <h3><a name="betterPerf" href="betterPerf">Better
+    performance</a></h3>
 
     <p>When <code>ContextJNDISelector</code> is active, each time a
     logger is retrieved, a JNDI lookup must be performed. This can
@@ -302,8 +301,8 @@
    recycled.</p>
 
 
-   <h2 class="doAnchor" name="tamingStaticRefs">Taming static
-   references in shared libraries</h2>
+   <h2><a name="tamingStaticRefs" href="#tamingStaticRefs">Taming
+   static references in shared libraries</a></h2>
 
    <p><code>ContextJNDISelector</code> works nicely to create logging
    separation when SLF4J and logback artifacts are shared by all
diff --git a/logback-site/src/site/pages/manual/mdc.html b/logback-site/src/site/pages/manual/mdc.html
index b7013e8..48e6aca 100644
--- a/logback-site/src/site/pages/manual/mdc.html
+++ b/logback-site/src/site/pages/manual/mdc.html
@@ -10,13 +10,10 @@
     <link rel="stylesheet" type="text/css" href="../css/_print.css" media="print" />
     <link rel="stylesheet" type="text/css" href="../css/prettify.css" media="screen" />
   </head>
-  <body onload="prettyPrint(); decorate();">
+  <body onload="prettyPrint()">
     <script type="text/javascript">prefix='../';</script>
     <script type="text/javascript" src="../js/prettify.js"></script>
-    <script type="text/javascript" src="../templates/header.js"></script>
-    <script type="text/javascript" src="../js/jquery-min.js"></script>
-    <script type="text/javascript" src="../js/decorator.js"></script>
-
+    <script src="../templates/header.js" type="text/javascript"></script>
     <div id="left">
       <noscript>Please turn on Javascript to view this menu</noscript>
       <script src="../templates/left.js" type="text/javascript"></script>
@@ -153,7 +150,7 @@ public class SimpleMDC {
 
     <p>For the sake of conciseness, we have the omitted the code that
     configures logback with the configuration file <a
-    href="http://github.com/qos-ch/logback/blob/master/logback-examples/src/main/java/chapters/mdc/simpleMDC.xml">simpleMDC.xml</a>. Here
+    href="http://github.com/ceki/logback/blob/master/logback-examples/src/main/java/chapters/mdc/simpleMDC.xml">simpleMDC.xml</a>. Here
     is the relevant section from that file.
     </p>
 
@@ -190,7 +187,7 @@ Richard Nixon - Attributed to the former US president. 17 Nov 1973.</pre></div>
 		invocations.
 		</p>
 		
-		<h3 class="doAnchor">Advanced Use</h3>
+		<h3>Advanced Use</h3>
 		
 		<p>Mapped Diagnostic Contexts shine brightest within client server
 		architectures.  Typically, multiple clients will be served by
@@ -504,7 +501,7 @@ public class NumberCruncherServer extends UnicastRemoteObject
 		
 		
 		
-		<h3 class="doAnchor" name="autoMDC">Automating access to the <code>MDC</code></h3>
+		<h3>Automating access to the <code>MDC</code></h3>
 		
 		<p>As we've seen, the <code>MDC</code> is very useful when dealing
 			with multiple clients. In the case of a web application that
@@ -622,8 +619,8 @@ public class UserServletFilter implements Filter {
 		
 
 
-  <h3 class="doAnchor" name="managedThreads">MDC And Managed
-  Threads</h3>
+  <h3><a name="managedThreads" href="#managedThreads">MDC And Managed
+  Threads</a></h3>
 
   <p>A copy of the mapped diagnostic context can not always be
   inherited by worker threads from the initiating thread. This is the
@@ -642,7 +639,8 @@ public class UserServletFilter implements Filter {
   managed thread.
   </p>
 
-  <h3 class="doAnchor" name="mis">MDCInsertingServletFilter</h3>
+  <h2><a name="mis"
+  href="#mis"><code>MDCInsertingServletFilter</code></a></h2>
 
   <p>Within web applications, it often proves helpful to know the
   hostname, request uri and user-agent associated with a given HTTP
diff --git a/logback-site/src/site/pages/manual/menu.js b/logback-site/src/site/pages/manual/menu.js
index 972dcb7..fea4481 100644
--- a/logback-site/src/site/pages/manual/menu.js
+++ b/logback-site/src/site/pages/manual/menu.js
@@ -1,17 +1,15 @@
 
 document.write('<p class="menu_header">Chapter Index</p>')
 document.write('<p class="menu"><a href="introduction.html"><b>Ch1: Introduction to logback</b></a></p>');
-document.write('<p class="menu"><a href="architecture.html"><b>Ch2: Architecture</b></a></p>');
-document.write('<p class="menu"><a href="configuration.html"><b>Ch3: Configuration</b></a></p>');
-document.write('<p class="menu"><a href="appenders.html"><b>Ch4: Appenders</b></a></p>');
-document.write('<p class="menu"><a href="encoders.html"><b>Ch5: Encoders</b></a></p>');
-document.write('<p class="menu"><a href="layouts.html"><b>Ch6: Layouts</b></a></p>');
-document.write('<p class="menu"><a href="filters.html"><b>Ch7: Filters</b></a></p>');
-document.write('<p class="menu"><a href="mdc.html"><b>Ch8: Mapped Diagnostic Contexts</b></a></p>');
-document.write('<p class="menu"><a href="loggingSeparation.html"><b>Ch9: Logging Separation</b></a></p>');
-document.write('<p class="menu"><a href="jmxConfig.html"><b>Ch10: JMX Configurator</b></a></p>');
-document.write('<p class="menu"><a href="onJoran.html"><b>Ch11: Joran</b></a></p>');
-document.write('<p class="menu"><a href="groovy.html"><b>Ch12: Groovy Configuration</b></a></p>');
-document.write('<p class="menu"><a href="migrationFromLog4j.html"><b>Ch13: Migration from log4j</b></a></p>');
-document.write('<p class="menu"><a href="receivers.html"><b>Ch14: Receivers</b></a></p>');
-document.write('<p class="menu"><a href="usingSSL.html"><b>Ch15: Using SSL</b></a></p>');
+document.write('<p class="menu"><a href="architecture.html"><b>Ch2: Architecture</b></a>');
+document.write('<p class="menu"><a href="configuration.html"><b>Ch3: Configuration</b></a>');
+document.write('<p class="menu"><a href="appenders.html"><b>Ch4: Appenders</b></a>');
+document.write('<p class="menu"><a href="encoders.html"><b>Ch5: Encoders</b></a>');
+document.write('<p class="menu"><a href="layouts.html"><b>Ch6: Layouts</b></a>');
+document.write('<p class="menu"><a href="filters.html"><b>Ch7: Filters</b></a>');
+document.write('<p class="menu"><a href="mdc.html"><b>Ch8: Mapped Diagnostic Contexts</b></a>');
+document.write('<p class="menu"><a href="loggingSeparation.html"><b>Ch9: Logging Separation</b></a>');
+document.write('<p class="menu"><a href="jmxConfig.html"><b>Ch10: JMX Configurator</b></a>');
+document.write('<p class="menu"><a href="onJoran.html"><b>Ch11: Joran</b></a>');
+document.write('<p class="menu"><a href="groovy.html"><b>Ch12: Groovy Configuration</b></a>');
+document.write('<p class="menu"><a href="migrationFromLog4j.html"><b>Ch13: Migration from log4j</b></a>');
diff --git a/logback-site/src/site/pages/manual/migrationFromLog4j.html b/logback-site/src/site/pages/manual/migrationFromLog4j.html
index 96fef84..eac675c 100644
--- a/logback-site/src/site/pages/manual/migrationFromLog4j.html
+++ b/logback-site/src/site/pages/manual/migrationFromLog4j.html
@@ -10,13 +10,10 @@
     <link rel="stylesheet" type="text/css" href="../css/_print.css" media="print" />
     <link rel="stylesheet" type="text/css" href="../css/prettify.css" media="screen" />
   </head>
-  <body onload="prettyPrint(); decorate();">
+  <body onload="prettyPrint();">
     <script type="text/javascript">prefix='../'</script>
     <script type="text/javascript" src="../js/prettify.js"></script>
-    <script type="text/javascript" src="../templates/header.js"></script>
-    <script type="text/javascript" src="../js/jquery-min.js"></script>
-    <script type="text/javascript" src="../js/decorator.js"></script>
-
+    <script src="../templates/header.js" type="text/javascript"></script>
     <div id="left">
       <noscript>Please turn on Javascript to view this menu</noscript>
       <script src="../templates/left.js" type="text/javascript"></script>
@@ -68,7 +65,7 @@
     </p>
 
     
-    <h3 class="doAnchor" name="log4jLayout">Migrating a log4j layout</h3>
+    <h3>Migrating a log4j layout</h3>
 
     <p>Let us begin by migrating a hypothetical and trivially simple
     log4j layout named <a
@@ -139,8 +136,7 @@ public class TrivialLogbackLayout extends <b>LayoutBase<ILoggingEvent></b> {
    <code>activateOptions</code>() method.
    </p>
 
-   <h3 class="doAnchor" name="log4jAppender">Migrating a log4j
-   appender</h3>
+   <h3>Migrating a log4j appender</h3>
    
    <p>Migrating an appender is quite similar to migrating a
    layout. Here is a trivially simple appender called <a
diff --git a/logback-site/src/site/pages/manual/onJoran.html b/logback-site/src/site/pages/manual/onJoran.html
index c5183ae..4e910c5 100644
--- a/logback-site/src/site/pages/manual/onJoran.html
+++ b/logback-site/src/site/pages/manual/onJoran.html
@@ -10,13 +10,10 @@
     <link rel="stylesheet" type="text/css" href="../css/_print.css" media="print" />
     <link rel="stylesheet" type="text/css" href="../css/prettify.css" media="screen" />
   </head>
-  <body  onload="prettyPrint(); decorate();">
+  <body  onload="prettyPrint()">
     <script type="text/javascript">prefix='../'</script>
     <script type="text/javascript" src="../js/prettify.js"></script>
-    <script type="text/javascript"> src="../templates/header.js"</script>
-    <script type="text/javascript" src="../js/jquery-min.js"></script>
-    <script type="text/javascript" src="../js/decorator.js"></script>
-
+    <script src="../templates/header.js" type="text/javascript"></script>
     <div id="left">
       <noscript>Please turn on Javascript to view this menu</noscript>
       <script src="../templates/left.js" type="text/javascript"></script>
@@ -35,15 +32,6 @@
       <p>—BOB DYLAN, <em>The Freewheelin' Bob Dylan</em></p>
     </div>
 
-    <p>Joran stands for a cold north-west wind which, every now and
-    then, blows forcefully on Lake Geneva. Located right in the middle
-    of Western-Europe, the surface of Lake Geneva is smaller than many
-    other European lakes. However, with its average depth of 153
-    meters, it is unusually deep, and happens to be, by volume, the
-    largest sweet water reserve in Western-Europe.
-    </p>
-
-
     <p>As apparent in previous chapters, logback relies on Joran, a
     mature, flexible and powerful configuration framework. Many of the
     capabilities offered by logback modules are only possible on
@@ -63,12 +51,11 @@
     folder.
     </p>
 
-    <p>To install Joran, simply <a
-    href="../download.html">download</a> logback and add
-    <em>logback-core-${project.version}.jar</em> to your
+    <p>To install Joran, simply <a href="../download.html">download</a>
+    logback and add <em>logback-core-${version}.jar</em> to your
     classpath.</p>
     
-    <h2 class="doAnchor">Historical perspective</h2>
+    <h2>Historical perspective</h2>
 
     <p>Reflection is a powerful feature of the Java language, making
     it possible to configure software systems declaratively. For
@@ -79,7 +66,7 @@
     configuration file, expressed in XML format. Annotations available
     in JDK 1.5 and heavily used in EJB 3.0 replace many directives
     previously found in XML files. Joran also makes use of annotations
-    but at a much smaller extent. Due to the dynamic nature of logback
+    but to a much smaller extent. Due to the dynamic nature of logback
     configuration data (compared to EJBs) Joran's use of annotations
     is rather limited.
     </p>
@@ -120,7 +107,7 @@
     exact matches and wildcard matches.
     </p>
 
-    <h3 class="doAnchor" name="saxOrDom">SAX or DOM?</h3>
+    <h3>SAX or DOM?</h3>
 
     <p>Due to the event-based architecture of the SAX API, a tool based
     on SAX cannot easily deal with forward references, that is,
@@ -140,10 +127,12 @@
     order.</em>
     </p>
 
-    <p>Moreover, the SAX API offers element location information which
+    <p>Joran was first implemented in DOM. However, the author
+    migrated to SAX in order to benefit from element location
+    information, available only with the SAX API. Location information
     allows Joran to display the exact line and column number where an
-    error occurred. Location information comes in very handy in the
-    identification of parsing problems.
+    error occurred, which comes in very handy in identifying parsing
+    problems.
     </p>
     
     <h3>Non goals</h3>
@@ -154,7 +143,7 @@
     </p>
 
 
-    <h3 class="doAnchor" name="pattern">Pattern</h3>
+    <h3><a name="pattern" href="#pattern">Pattern</a></h3>
 
     <p>A Joran pattern is essentially a string. There are two kind of
     patterns, <em>exact</em> and <em>wildcard</em>. The pattern "a/b"
@@ -171,7 +160,7 @@
     <code><a></code> element.
     </p>
 
-    <h3 class="doAnchor" name="action">Actions</h3>
+    <h3><a name="action" href="#action">Actions</a></h3>
     
     <p>As mentioned above, Joran parsing rules consists of the
     association of patterns. Actions extend the <a
@@ -216,7 +205,7 @@ public abstract class Action {
    empty/nop implementation provided by <code>Action</code>.</p>
 
 
-   <h3 class="doAnchor" name="ruleStore">RuleStore </h3>
+   <h3><a name="ruleStore" href="#ruleStore">RuleStore</a> </h3>
 
    <p>As mentioned previously, the invocation of actions according to
    matching patterns is a central concept in Joran. A rule is an
@@ -243,8 +232,8 @@ public abstract class Action {
    </p>
    
 
-   <h3 class="doAnchor" name="interpretationContext">Interpretation
-   context</h3>
+   <h3><a name="interpretationContext"
+   href="#interpretationContext">Interpretation context</a></h3>
 
    <p>To allow various actions to collaborate, the invocation of begin
    and end methods include an interpretation context as the first
@@ -263,7 +252,7 @@ public abstract class Action {
    <code>StatusManager</code>.
    </p>
    
-   <h3 class="doAnchor" name="helloWorld">Hello world</h3>
+   <h3><a name="helloWorld" href="#helloWorld">Hello world</a></h3>
    
    <p>The first example in this chapter illustrates the minimal
    plumbing required for using Joran. The example consists of a
@@ -312,7 +301,8 @@ public abstract class Action {
 
     <!-- ====================================================== -->
 
-    <h3 class="doAnchor" name="calculator">Collaborating actions</h3>
+    <h3><a name="calculator" href="#calculator">Collaborating
+    actions</a></h3>
    
     <p>The <em>logback-examples/src/main/java/joran/calculator/</em>
     directory includes several actions which collaborate together
@@ -479,7 +469,7 @@ public abstract class Action {
   <code>end()</code> method.</p>
   -->
 
-  <h3 class="doAnchor" name="implicit">Implicit actions</h3>
+  <h3><a name="implicit" href="#implicit">Implicit actions</a></h3>
 
   <p>The rules defined thus far are called explicit actions because an
   pattern/action association could be found in the rule store for the
@@ -580,8 +570,8 @@ Element [abc] asked to be printed.
   above (see previous paragraph).
   </p>
 
-  <h3 class="doAnchor" name="iaPractice">Implicit actions in
-  practice</h3>
+  <h3><a name="iaPractice" href="#iaPractice">Implicit actions in
+  practice</a></h3>
   
   <p>The respective Joran configurators of logback-classic and
   logback-access include just two implicit actions, namely <a
@@ -639,8 +629,8 @@ Element [abc] asked to be printed.
     </li>
   </ol>
 
-  <h4 class="doAnchor" name="defaultClassMapping">Default class
-  mapping</h4>
+  <h4><a name="defaultClassMapping"
+  href="#defaultClassMapping">Default class mapping</a></h4>
 
   <p>In logback-classic, there are a handful of internal rules mapping
   parent class/property name pairs to a default class. These are
@@ -699,7 +689,7 @@ Element [abc] asked to be printed.
   latest rules.
   </p>
   
-  <h4 class="doAnchor">Collection of properties</h4>
+  <h4>Collection of properties</h4>
 
   
   <p>Note that in addition to single simple properties or single
@@ -707,7 +697,7 @@ Element [abc] asked to be printed.
   properties, be they simple or complex. Instead of a setter method,
   the property is specified by an "adder" method.</p>
 
-  <h3 class="doAnchor" name="newRule">New rules on the fly</h3>
+  <h3><a name="newRule" href="#newRule">New rules on the fly</a></h3>
 
   <p>Joran includes an action which allows the Joran interpreter to
   learn new rules on the fly, that is while interpreting an XML
@@ -722,13 +712,13 @@ Element [abc] asked to be printed.
   </p>
 
   <pre class="prettyprint source">ruleMap.put(new Pattern("*/computation"), new ComputationAction1());
-<b>ruleStore.addRule(new Pattern("/computation/newRule"), new NewRuleAction());</b></pre>
+<b>ruleStore.addRule(new Pattern("/computation/new-rule"), new NewRuleAction());</b></pre>
 
   <p><a
   href="../xref/ch/qos/logback/core/joran/action/NewRuleAction.html"><code>NewRuleAction</code></a>,
   part of logback-core, works pretty much like the other actions.  It
   has a <code>begin()</code> and <code>end()</code> method, and is
-  called each time the parser finds a <em>newRule</em> element. When
+  called each time the parser finds a <em>new-rule</em> element. When
   invoked, the <code>begin()</code> method looks for <em>pattern</em>
   and <em>actionClass</em> attributes. It then instantiates the
   corresponding action class and adds the pattern/action association
@@ -737,24 +727,24 @@ Element [abc] asked to be printed.
 
   <p>Here is how new rules can be declared in an xml file:</p>
 
-  <pre class="prettyprint source"><newRule pattern="*/computation/literal"
+  <pre class="prettyprint source"><new-rule pattern="*/computation/literal"
           actionClass="chapters.onJoran.calculator.LiteralAction"/></pre>
 
-  <p>Using such newRule declarations, we can transform
+  <p>Using such new-rule declarations, we can transform
   <code>NewRuleCalculator</code> to behave like the
   <code>Calculator1</code> application we saw earlier.  involving the
   calculation, could be expressed this way:</p>
 
   <em>Example 10..<span class="autoEx"/>: Configuration file using new
   rules on the fly
-  (logback-examples/src/main/java/chapters/onJoran/newrule/newRule.xml)</em>
+  (logback-examples/src/main/java/chapters/onJoran/newrule/new-rule.xml)</em>
 
   <pre class="prettyprint source"><computation name="toto">
-  <newRule pattern="*/computation/literal" 
+  <new-rule pattern="*/computation/literal" 
             actionClass="chapters.onJoran.calculator.LiteralAction"/>
-  <newRule pattern="*/computation/add" 
+  <new-rule pattern="*/computation/add" 
             actionClass="chapters.onJoran.calculator.AddAction"/>
-  <newRule pattern="*/computation/multiply" 
+  <new-rule pattern="*/computation/multiply" 
             actionClass="chapters.onJoran.calculator.MultiplyAction"/>
 
   <computation>
@@ -768,7 +758,7 @@ Element [abc] asked to be printed.
 </computation></pre>
 
 
-  <p class="command">java java chapters.onJoran.newRule.NewRuleCalculator src/main/java/chapters/onJoran/newRule/newRule.xml</p>
+  <p class="command">java java chapters.onJoran.newRule.NewRuleCalculator src/main/java/chapters/onJoran/newRule/new-rule.xml</p>
 
   <p>yields</p>
 
diff --git a/logback-site/src/site/pages/manual/receivers.html b/logback-site/src/site/pages/manual/receivers.html
deleted file mode 100644
index 205b104..0000000
--- a/logback-site/src/site/pages/manual/receivers.html
+++ /dev/null
@@ -1,541 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
-    <title>Chapter 14: Receivers</title>
-    <link rel="stylesheet" type="text/css" href="../css/common.css" />
-    <link rel="stylesheet" type="text/css" href="../css/screen.css" media="screen" />
-    <link rel="stylesheet" type="text/css" href="../css/_print.css" media="print" />
-    <link rel="stylesheet" type="text/css" href="../css/prettify.css" media="screen"/>    
-  </head>
-  <body onload="prettyPrint(); decorate();">
-    <script type="text/javascript">prefix='../';</script>
-    <script type="text/javascript" src="../js/prettify.js"></script>
-    <script type="text/javascript" src="../templates/header.js"></script>
-    <script type="text/javascript" src="../js/dsl.js"></script>
-    <script type="text/javascript" src="../js/jquery-min.js"></script>
-    <script type="text/javascript" src="../js/decorator.js"></script>
-    <div id="left">      
-      <noscript>Please turn on Javascript to view this menu</noscript>
-      <script src="../templates/left.js" type="text/javascript"></script>
-    </div>    
-    <div id="right">
-      <script src="menu.js" type="text/javascript"></script>
-    </div>
-
-    <div id="content">
-
-      <h1>Chapter 14: Receivers</h1>
-
-      <div class="quote">
-
-        <p><em>You cannot swim for new horizons until you have courage 
-           to lose sight of the shore.</em></p>
-  
-        <p>—WILLIAM FAULKNER</p>
-      </div>
-
-
-      <script src="../templates/creative.js" type="text/javascript"></script>
-      <script src="../templates/setup.js" type="text/javascript"></script>
-    
-      <h2 class="doAnchor" name="whatIsAReceiver">What is a Receiver?</h2>
-    
-      <p>A <em>receiver</em> is a Logback component that receives logging
-      events from a remote appender and logs each received event according
-      to local policy.  Using a combination of socket-based appenders and
-      receivers, it is possible to construct sophisticated topologies
-      for distribution of application logging events over a network.</p>
-  
-      <p>A receiver extends the <a
-      href="../xref/ch/qos/logback/classic/net/ReceiverBase.html">
-      <code>ch.qos.logback.classic.net.ReceiverBase</code></a> class.
-      By virtue of the fact that a receiver extends this class, a
-      receiver participates in the Logback component <a
-      href="../xref/ch/qos/logback/core/spi/LifeCycle.html">LifeCycle</a>
-      and a receiver is <a
-      href="../xref/ch/qos/logback/core/spi/ContextAware.html">
-      ContextAware</a>.</p>
-    
-      <p>Historically, support for logging event delivery over a network
-      connection in Logback has been provided by <code>SocketAppender</code>
-      and the corresponding <code>SimpleSocketServer</code>.  The appender
-      acts as a client, initiating a network connection to the server
-      application, and delivering logging events via the network connection.  
-      The receiver component and corresponding appender support offers much 
-      greater flexibility.</p>
-    
-      <p>A receiver component is configured in <em>logback.xml</em>, just
-      like any other logback component.  This allows the full capabilities
-      of <a href="onJoran.html">Joran</a> to be utilized in configuring
-      a receiver component.  Moreover, <em>any</em> application can 
-      receive logging events from remote appenders by simply configuring
-      one or more receiver components.</p>
-    
-      <p>Connection initiation between an appender and a receiver 
-      can occur in either direction.  A receiver can act in the role of a
-      server, passively listening for connections from remote appender 
-      clients.  Alternatively, a receiver can act in the client role,
-      initiating a connection to a remote appender which is acting in the 
-      server role.  Regardless of the respective roles of the
-      appender and receiver, <em>logging events always flow from 
-      the appender towards the receiver</em>.</p>
-    
-      <p>The flexibility to allow a receiver to initiate the connection
-      to an appender is particularly useful in certain situations:
-      </p>
-      <ul>
-        <li>For security reasons, a central logging server may be
-          located behind a network firewall that does not allow incoming
-          connections.  Using receiver components acting in the client
-          role, the central logging server (inside the firewall) 
-          can initiate connections to the applications of interest 
-          (outside the firewall).
-        </li>
-        <li>It is often desirable for developer tools (such as IDE plugins)
-          and enterprise management applications to have access to the
-          logging event stream of running applications.  Traditionally,
-          Logback has supported this (for example in Logback Beagle) by
-          requiring the recipient application (e.g. a developer tool running
-          in an IDE) to act in the server role, passively listening for 
-          connections from a remote appender.  This can prove difficult to 
-          manage, especially for tools running on a developer's workstation, 
-          which may indeed by mobile.  However, such tools can now be 
-          implemented using a Logback receiver component acting in the 
-          client role, initiating a connection to a remote appender in 
-          order to receive logging events for local display, filtering, 
-          and alerting.
-        </li>
-      </ul>
-
-      <p>A logback configuration can include any number of receiver components
-      acting in any combination of the server or client roles.  The only 
-      restrictions are that each receiver acting in the server role must
-      listen on a distinct port, and each receiver acting in the client
-      role will connect to exactly one remote appender.</p>
-    
-      <h2 class="doAnchor" name="receiverServerComponents">Receivers
-      that Act in the Server Role</h2>
-    
-      <p>A receiver that is configured to act in the server role passively
-      listens for incoming connections from remote appenders.  This is 
-      functionally equivalent to using the standalone
-      <code>SimpleSocketServer</code> application, except that by using
-      the receiver component, <em>any</em> application that uses Logback
-      Classic can receive logging events from remote appenders by simply
-      configuring the receiver in <em>logback.xml</em>.</p>
-        
-      <p>
-        <img border="1" src="images/chapters/receivers/serverSocketReceiver.png" "/>
-      </p>
-
-      <p>Logback includes two receiver components that act in the
-      server role; <a
-      href="../xref/ch/qos/logback/classic/net/server/ServerSocketReceiver.html">
-      <code>ServerSocketReceiver</code></a> and its SSL-enabled
-      subtype
-      <a href="../xref/ch/qos/logback/classic/net/server/SSLServerSocketReceiver.html">
-      <code>SSLServerSocketReceiver</code></a>.  Both of these receiver
-      components are designed to accept connections from incoming
-      <code>SocketAppender</code> (or <code>SSLSocketAppender</code>)
-      clients.</p>
-        
-      <p>The <code>ServerSocketReceiver</code> components provide the 
-      following configurable properties:</p>
-    
-      <table class="bodyTable striped">
-        <tr>
-          <th>Property Name</th>
-          <th>Type</th>
-          <th>Description</th>
-        </tr>
-        <tr>
-          <td><span class="prop" container="serverSocketReceiver">address</span></td>
-          <td><code>String</code></td>
-          <td>The local network interface address on which the receiver
-          will listen.  If this property is not specified, the receiver
-          will listen on all network interfaces.</td>
-        </tr>
-        <tr>
-          <td><span class="prop" container="serverSocketReceiver">port</span></td>
-          <td><code>int</code></td>
-          <td>The TCP port on which the receiver will listen.  If this
-          property is not specified, a default value will be used.</td>
-        </tr>
-        <tr>
-          <td><span class="prop" container="serverSocketReceiver">ssl</span></td>
-          <td><code>SSLConfiguration</code></td>
-          <td>Supported only for <code>SSLServerSocketReceiver</code>, this
-              property provides the SSL configuration that will be used by
-              the receiver, as described in <a href="usingSSL.html">Using SSL</a>.
-          </td>
-        </tr>
-      </table>
-    
-      <h3 class="doAnchor" name="usingServerSocketReceiver">Using
-      ServerSocketReceiver</h3>
-    
-      <p>The following configuration uses the 
-      <code>ServerSocketReceiver</code> component with a minimal local 
-      appender and logger configuration.  Logging events received from
-      a remote appender will be matched by the root logger and delivered
-      to the local console appender.</p>
-    
-      <p class="example">Example: Basic ServerSocketReceiver Configuration
-      (logback-examples/src/main/java/chapters/receivers/socket/receiver1.xml)</p>
-
-      <span class="asGroovy" onclick="return asGroovy('receiver1');">View as .groovy</span>
-  <pre id="receiver1" class="prettyprint source"><configuration debug="true">
-
-  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
-    <encoder>
-      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
-    </encoder>
-  </appender>
-
-  <root level="DEBUG">
-    <appender-ref ref="CONSOLE" />
-  </root>
-
-  <receiver class="ch.qos.logback.classic.net.server.ServerSocketReceiver">
-    <port>${port}</port>
-  </receiver>
-
-</configuration></pre>
-  
-      <p>Note that the receiver component's <em>class</em> 
-      attribute identifies the receiver subtype that we wish to use.  In
-      this example we are using <code>ServerSocketReceiver</code>.</p>
-    
-      <p>Our example server application is very similar in function and
-      design to <code>SimpleSocketServer</code>.  It simply accepts a
-      path for a logback configuration file as a command line argument,
-      and runs the given configuration.  While our example is somewhat
-      trivial, keep in mind that you can configure logback's 
-      <code>ServerSocketReceiver</code> (or <code>SSLServerSocketReceiver</code>) 
-      component in <em>any</em> application.
-      </p>
-    
-      <p>From a shell in the <em>logback-examples</em> directory, 
-      we can run our example server application as follows:</p>
-    
-      <p class="source">java -Dport=6000 <a href="../xref/chapters/receivers/socket/ReceiverExample.html">chapters.receivers.socket.ReceiverExample</a> \ 
-      src/main/java/chapters/receivers/socket/receiver1.xml</p>
-  
-      <p>We can connect to the running receiver using a client application
-      that is configured with a <code>SocketAppender</code>.  Our example
-      client application simply loads a logback configuration that will
-      connect a socket appender to our example receiver.  It then awaits
-      input from the user in the form of a message that will be relayed to
-      the receiver.  We can run the example client application as follows:
-      </p>
-    
-      <p class="source">java -Dhost=localhost -Dport=6000 \
-      <a href="../xref/chapters/receivers/socket/AppenderExample.html">chapters.receivers.socket.AppenderExample </a>\
-      src/main/java/chapters/receivers/socket/appender1.xml</p>
-    
-      <h3 class="doAnchor" name="usingSSLServerSocketReceiver">Using
-      SSLServerSocketReceiver</h3>
-
-      <p>The following configuration repeats the same minimal appender
-      and logger configuration, but uses the SSL-enabled receiver component
-      that acts in the server role.</p>
-
-      <p class="example">Example: Basic SSLServerSocketReceiver Configuration
-      (logback-examples/src/main/java/chapters/receivers/socket/receiver2.xml)</p>
-      <span class="asGroovy" onclick="return asGroovy('receiver2');">View as .groovy</span>
-  <pre id="receiver2" class="prettyprint source"><configuration debug="true">
-
-  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
-    <encoder>
-      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
-    </encoder>
-  </appender>
-
-  <root level="DEBUG">
-    <appender-ref ref="CONSOLE" />
-  </root>
-
-  <receiver class="ch.qos.logback.classic.net.server.SSLServerSocketReceiver">
-    <port>${port}</port>
-    <ssl>
-      <keyStore>
-        <location>${keystore}</location>
-        <password>${password}</password>
-      </keyStore>
-    </ssl>
-  </receiver>
-
-</configuration></pre>
-
-      <p>The essential differences between this configuration and the
-      previous example using <code>ServerSocketReceiver</code> are the 
-      specification of <code>SSLServerSocketReceiver</code> in the
-      <em>class</em> attribute and the presence of the nested 
-      <span class="prop">ssl</span> property, which is used here to 
-      specify the location and password for the key store containing the 
-      receiver's private key and certificate, using substitution variables. 
-      See <a href="usingSSL.html">Using SSL</a> for details on 
-      configuring SSL properties for Logback components.</p>    
- 
-      <p>We can run this configuration using the same example server
-      configuration, with just a couple of additional configuration
-      properties:</p>
-
-      <p class="source">java -Dport=6001 \
-      -Dkeystore=file:src/main/java/chapters/appenders/socket/ssl/keystore.jks \
-      -Dpassword=changeit \
-      chapters.receivers.socket.ReceiverExample \
-      src/main/java/chapters/receivers/socket/receiver2.xml</p>
-  
-      <p>Note that the <em>keystore</em> property given on the command
-      line specifies a file URL that identifies the location of the key 
-      store.  You may also use a classpath URL as described in 
-      <a href="usingSSL.html">Using SSL</a>.
-      </p>
-    
-      <p>We can connect to the running receiver using a client application
-      that is configured with a <code>SSLSocketAppender</code>.  We use 
-      the sample example client application used in the previous example,
-      with a configuration file that uses an SSL-enabled appender.  We
-      run the example as follows:
-      </p>
-    
-      <p class="source">java -Dhost=localhost -Dport=6001 \
-      -Dtruststore=file:src/main/java/chapters/appenders/socket/ssl/truststore.jks \
-      -Dpassword=changeit \
-      chapters.receivers.socket.AppenderExample \
-      src/main/java/chapters/receivers/socket/appender2.xml</p>
-    
-      <p>Note that our example is using a self-signed X.509 credential that 
-      is suitable for testing and experimentation, only.  <strong>In a 
-      production setting, you should obtain an appropriate X.509 credential 
-      to identify your SSL-enabled logback components</strong>.  See 
-      <a href="usingSSL.html">Using SSL</a> for more information.</p>
-  
-      <h2 class="doAnchor" name="receiverClientComponents">Receivers
-      that Act in the Client Role</h2>
-    
-      <p>A receiver that is configured to act in the client role initiates
-      a connection to a remote appender.  The remote appender must be a
-      server type, such as <code>ServerSocketAppender</code>.</p>  
-    
-      <p>
-        <img border="1" src="images/chapters/receivers/socketReceiver.png"/>
-      </p>
-
-      <p>Logback includes two receiver components that act in the client
-      role; <a href="../xref/ch/qos/logback/classic/net/SocketReceiver.html">
-      <code>SocketReceiver</code></a> and its SSL-enabled subtype
-      <a href="../xref/ch/qos/logback/classic/net/SSLSocketReceiver.html">
-      <code>SSLSocketReceiver</code></a>.  Both of these receiver
-      components are designed to initiate a connection to a remote appender
-      that is a <code>ServerSocketAppender</code> 
-      (or <code>SSLServerSocketAppender</code>).</p>
-        
-      <p>The following configuration properties are supported by 
-      <code>SocketReceiver</code> subtypes:</p>
-    
-      <table class="bodyTable striped">
-        <tr>
-        <th>Property Name</th>
-        <th>Type</th>
-        <th>Description</th>
-        </tr>
-        <tr>
-          <td><span class="prop" container="SocketReceiver">remoteHost</span></td>
-          <td><code>String</code></td>
-          <td>The hostname or address of the remote server socket appender.</td>
-        </tr>
-        <tr>
-          <td><span class="prop" container="SocketReceiver">port</span></td>
-          <td><code>int</code></td>
-          <td>The port number of the remote server socket appender.</td>
-        </tr> 
-        <tr>
-          <td><span class="prop" container="socket">reconnectionDelay</span></td>
-          <td><code>int</code></td>
-          <td>
-            A positive integer representing the number of milliseconds to wait
-            before attempting to reconnect after a connection failure.  The
-            default value is 30000 (30 seconds).
-          </td>
-        </tr>
-        <tr>
-          <td><span class="prop" container="SocketReceiver">ssl</span></td>
-          <td><code>SSLConfiguration</code></td>
-          <td>Supported only for <code>SSLSocketReceiver</code>, this
-              property provides the SSL configuration that will be used for
-              this receiver, as described in <a href="usingSSL.html">Using SSL</a>.
-          </td>
-        </tr>
-      </table>
-        
-      <h3 class="doAnchor" name="usingSocketReceiver">Using
-      SocketReceiver</h3>
-
-      <p>The configuration used for <code>SocketReceiver</code>
-      is quite similar to the previous example that used
-      <code>ServerSocketReceiver</code>.  The differences relate to the 
-      fact that the roles of client and server are reversed; a receiver
-      of type <code>SocketReceiver</code> is a client, and the remote
-      appender acts as a server.</p>
-        
-      <p class="example">Example: Basic SocketReceiver Configuration
-      (logback-examples/src/main/java/chapters/receivers/socket/receiver3.xml)</p>
-      <span class="asGroovy" onclick="return asGroovy('receiver3');">View as .groovy</span>
-  <pre id="receiver3" class="prettyprint source"><configuration debug="true">
-    
-  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">    
-    <encoder>
-      <pattern>%date %-5level [%thread] %logger - %message%n</pattern>
-    </encoder>
-  </appender>
-
-  <root level="DEBUG">
-    <appender-ref ref="CONSOLE" />
-  </root>  
-
-  <receiver class="ch.qos.logback.classic.net.SocketReceiver">
-    <remoteHost>${host}</remoteHost>
-    <port>${port}</port>
-    <reconnectionDelay>10000</reconnectionDelay>
-  </receiver>
-
-</configuration></pre>
-        
-      <p>This configuration will cause logback to connect to a 
-      <code>ServerSocketAppender</code> running on the host and port specified
-      by the <em>host</em> and <em>port</em> substitution variables.  Logging
-      events received from the remote appender will be logged locally 
-      (according to the configuration shown here) via a console appender.
-      </p>
-   
-      <p>Assuming you are in the <em>logback-examples/</em> directory, 
-      you can run this example configuration using the following command:</p>
-
-         
-
-      <p>The example loads the configuration and then simply waits for logging
-      events from the remote appender.  If you run this example when the remote
-      appender is not running, you'll see <em>connection refused</em> messages
-      appearing in the log output, periodically.  The receiver will 
-      periodically attempt to reconnect to the remote appender until it 
-      succeeds or until the logger context is shut down.  The delay
-      interval between attempts is configurable using the 
-      <span class="prop">reconnectionDelay</span> property as shown in the
-      example configuration.<p class="source">java -Dhost=localhost -Dport=6000 \
-      chapters.receivers.socket.ReceiverExample \
-      src/main/java/chapters/receivers/socket/receiver3.xml</p>
-
-      <p>We can provide a remote appender to which our example receiver
-      can connect, using the same appender example used previously.  The 
-      example loads a logback configuration containing a 
-      <code>ServerSocketAppender</code>, and then waits input from the
-      user consisting of a message that will be delivered to connected
-      receivers.  We can run the example appender application as follows:
-      </p>
-
-      <p class="source">java -Dport=6000 \
-      chapters.receivers.socket.AppenderExample \
-      src/main/java/chapters/receivers/socket/appender3.xml</p>   
-
-      <p>If you enter a message to send when the receiver is not connected,
-      note that the message is simply discarded.</p>
-
-      <h3 class="doAnchor" name="usingSSLSocketReceiver">Using
-      SocketSSLReceiver</h3>
-
-
-      <p>The configuration needed for <code>SSLSocketReceiver</code> is very 
-      similar to that used with <code>SocketReceiver</code>.  The essential 
-      differences are in the class specified for the receiver and the ability 
-      to nest the <span class="prop">ssl</span> property to specify SSL 
-      configuration properties.  The following example illustrates a basic 
-      configuration:
-      </p>
-   
-      <p class="example">Example: Basic SSLSocketReceiver Configuration
-      (logback-examples/src/main/java/chapters/receivers/socket/receiver4.xml)</p>
-      <span class="asGroovy" onclick="return asGroovy('receiver4');">View as .groovy</span>
-  <pre id="receiver4" class="prettyprint source"><configuration debug="true">
-
-  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">    
-    <encoder>
-      <pattern>%date %-5level [%thread] %logger - %message%n</pattern>
-    </encoder>         
-  </appender>
-
-  <root level="DEBUG">
-    <appender-ref ref="CONSOLE" />
-  </root>  
- 
-  <receiver class="ch.qos.logback.classic.net.SSLSocketReceiver">
-    <remoteHost>${host}</remoteHost>
-    <port>${port}</port>
-    <reconnectionDelay>10000</reconnectionDelay>
-    <ssl>
-      <trustStore>
-        <location>${truststore}</location>
-        <password>${password}</password>
-      </trustStore>
-    </ssl>
-  </receiver>
-
-</configuration></pre>
-
-      <p>Note that the <em>class</em> attribute now specifies 
-      <code>SSLSocketReceiver</code> and that in addition to the configuration
-      properties shown in the previous example, this configuration contains
-      an SSL configuration specifying the location and password for a 
-      trust store that will be used in validating that the remote appender is
-      trusted.  See <a href="usingSSL.html">Using SSL</a> for more information 
-      on configuring SSL properties.
-      </p>
-  
-      <p>You can run this example configuration using the following command:</p>
-  
-      <p class="source">java -Dhost=localhost -Dport=6001 \
-      -Dtruststore=file:src/main/java/chapters/appenders/socket/ssl/truststore.jks \
-      -Dpassword=changeit \
-      chapters.receivers.socket.ReceiverExample \
-      src/main/java/chapters/receivers/socket/receiver4.xml</p>   
-   
-      <p>Once started, the receiver attempts to connect to the specified 
-      remote appender.  Assuming that the appender is not yet running, you
-      will see a "connection refused" message appearing in the log output
-      periodically; the receiver will periodically retry the connection to
-      the remote appender after delaying for the period of time specified by
-      the <span class="prop">reconnectionDelay</span> property.
-      </p>
-  
-      <p>We can provide a remote appender to which our example receiver
-      can connect, using the same appender example used previously.  The 
-      example loads a logback configuration containing a 
-      <code>SSLServerSocketAppender</code>, and then awaits input from the  
-      user consisting of a message that will be delivered to connected
-      receivers.  We can run the example appender application as follows:
-      </p>
-
-      <p class="source">java -Dport=6001 \
-      -Dkeystore=file:src/main/java/chapters/appenders/socket/ssl/keystore.jks \
-      -Dpassword=changeit \
-      chapters.receivers.socket.AppenderExample \
-      src/main/java/chapters/receivers/socket/appender4.xml</p>   
-
-      <p>If you enter a message to send when the receiver is not connected,
-      note that the message is simply discarded.</p>
-
-      <p>It is important to note once again that our example is using a 
-      self-signed X.509 credential that is suitable for testing and 
-      experimentation, only.  <strong>In a production setting, you should 
-      obtain an appropriate X.509 credential to identify your SSL-enabled
-      logback components</strong>.  See <a href="usingSSL.html">Using SSL</a> 
-      for more information.</p>
-  
-        <script src="../templates/footer.js" type="text/javascript"></script>
-
-    </div>
-  </body>  
-</html>
diff --git a/logback-site/src/site/pages/manual/usingSSL.html b/logback-site/src/site/pages/manual/usingSSL.html
deleted file mode 100644
index b6dd8eb..0000000
--- a/logback-site/src/site/pages/manual/usingSSL.html
+++ /dev/null
@@ -1,1294 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
-    <title>Chapter 15: Using SSL</title>
-    <link rel="stylesheet" type="text/css" href="../css/common.css" />
-    <link rel="stylesheet" type="text/css" href="../css/screen.css" media="screen" />
-    <link rel="stylesheet" type="text/css" href="../css/_print.css" media="print" />
-    <link rel="stylesheet" type="text/css" href="../css/prettify.css" media="screen" />    
-
-  </head>
-  <body onload="prettyPrint(); decorate();">
-    <script type="text/javascript">prefix='../';</script>
-    <script type="text/javascript" src="../js/prettify.js"></script>
-    <script type="text/javascript" src="../templates/header.js"></script>
-    <script type="text/javascript" src="../js/dsl.js"></script>
-    <script type="text/javascript" src="../js/jquery-min.js"></script>
-    <script type="text/javascript" src="../js/decorator.js"></script>
-    <div id="left">      
-      <noscript>Please turn on Javascript to view this menu</noscript>
-      <script src="../templates/left.js" type="text/javascript"></script>
-    </div>    
-    <div id="right">
-      <script src="menu.js" type="text/javascript"></script>
-    </div>
-    <div id="content">    
-      <h1>Chapter 15: Using SSL</h1>
-      
-      <div class="quote">
-
-        <p><em>The whole difference between construction and creation is 
-        exactly this: that a thing constructed can only be loved after it 
-        is constructed; but a thing created is loved before it exists.</em></p>
-        <p>—CHARLES DICKENS</p>
-      </div>
-
-
-      <script src="../templates/creative.js" type="text/javascript"></script>
-      <!-- script src="../templates/setup.js" type="text/javascript"></script -->
-
-      <p>Logback supports the use of the Secure Sockets Layer 
-         (SSL) when delivering log events from a socket-based appender
-         to a remote receiver.  When using an SSL-enabled appender and  
-         corresponding receiver, serialized logging events are delivered 
-         over a secure channel.
-      </p>
-      
-      <h2 class="doAnchor">SSL and Component Roles</h2>
-      
-      <p>Logback components such as appenders and receivers may act in
-      either the server role or the client role, with respect to network
-      connection initiation. When acting in the server role, a logback
-      component passively listens for connections from remote client
-      components.  Conversely, a component acting in the client role 
-      initiates a connection to remote server component.  For example, 
-      an appender acting in the <em>client</em> role connects to a 
-      receiver acting in the <em>server</em> role.  Or a receiver
-      acting in the <em>client</em> role connects to an appender
-      acting in the <em>server</em> role.</p>
-      
-      <p>The roles of the components are generally determined by the
-      component type.  For example, an <code>SSLServerSocketAppender</code>
-      is an appender component that acts in the server role, while an
-      <code>SSLSocketAppender</code> is an appender component that acts
-      in the client role.  Thus the developer or application administrator 
-      can configure Logback components to support the desired direction
-      of network connection initiation.</p>
-      
-      <p>The direction of connection initiation is significant in the 
-      context of SSL, because in SSL a server component must possess an
-      X.509 credential to identify itself to connecting clients.  A
-      client component, when connecting to the server, uses the server's
-      certificate to validate that the server is trusted.  The
-      developer or application administrator must be aware of the 
-      roles of Logback components, so as to properly configure the
-      server's key store (containing the server's X.509 credential) 
-      and the client's trust store (containing self-signed 
-      root certificates used when validating server trust).</p>
-      
-      <p>When SSL is configured for <em>mutual authentication</em>, then
-      both the server component and the client component must possess
-      valid X.509 credentials whose trust can be asserted by their 
-      respective peer.  Mutual authentication is configured in the
-      server component, therefore the developer or application 
-      administrator must be aware of which components are acting in 
-      the server role.</p>
-      
-      <p>In this chapter, we use the term <em>server component</em>
-      or simply <em>server</em> to refer to a Logback component such
-      as an appender or receiver that is acting in the server role.  We
-      use the term <em>client component</em> or simply <em>client</em>
-      to refer to a component that is acting in the client role.
-            
-      <h2 class="doAnchor">SSL and X.509 Certificates</h2>
-      
-      <p>In order to use SSL-enabled Logback components, you will need an
-         X.509 credential (a private key, corresponding certificate,
-         and CA certification chain) to identify your components
-         that act as SSL servers.  If you wish to use mutual authentication, 
-         you will also need credentials for your components that 
-         act as SSL clients.
-      </p>      
-      <p>While you can use a credential issued by a commercial
-         certification authority (CA), you can also use a certificate issued
-         from your own internal CA or even a self-signed certificate.  The
-         following is all that is required:
-      </p> 
-      <ol>
-        <li>The server component must be configured 
-            with a key store containing the server's private key, 
-            corresponding certificate, and CA certification chain
-             (if not using a self-signed certificate).
-        </li>
-        <li>The client component must be configured 
-            with a trust store containing trusted root CA 
-            certificate(s) or the server's self-signed root certificate.
-        </li>
-      </ol>
-          
-      <h2 class="doAnchor">Configuring Logback Components for SSL</h2>
-      <p>The Java Secure Sockets Extension (JSSE) and Java Cryptography 
-         Architecture (JCA) which is used to implement Logback's SSL
-         support has many configurable options, and a pluggable provider
-         framework that allows the built-in SSL and cryptographic
-         capabilities of the platform to be replaced or augmented.
-         SSL-enabled Logback components provide the ability to fully specify 
-         all of the configurable aspects of the SSL engine and cryptographic 
-         providers, to meet your unique security needs.
-      </p>
-      
-      <h3>Basic SSL Configuration using JSSE System Properties</h3>
-      <p>Fortunately, nearly all of the configurable SSL properties for
-         SSL-enabled Logback components have reasonable defaults.  In 
-         most cases all that is needed is the configuration of some JSSE 
-         system properties.
-      </p>
-      
-      <p>The remainder of this section describes the specific JSSE
-         properties that are needed in most environments. See 
-         <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#InstallationAndCustomization">
-         Customizing JSSE</a> in the <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html">
-         JSSE Reference Guide</a> for more information on setting JSSE
-         system properties to customize JSSE.      
-      </p>
-
-      <p>If you're using any of Logback's SSL-enabled appender or receiver
-         components that act in the server role (e.g. 
-         <code>SSLServerSocketReceiver</code>, 
-         <code>SSLServerSocketAppender</code>,
-         or <code>SimpleSSLSocketServer</code>) you'll need to configure 
-         JSSE system properties that provide the location, type, and 
-         password of the key store containing a private key and 
-         certificate.
-      </p>
-      
-      <h4><a name="basicConfig.keyStore"></a>
-          System Properties for Server Key Store Configuration</h4>
-      <table class="bodyTable striped">
-        <tr>
-          <th>Property Name</th>
-          <th>Description</th>
-        </tr>
-        <tr>
-          <td><code>javax.net.ssl.keyStore</code></td>
-          <td>Specifies a filesystem path to the file containing your
-              server components' private key and certificate.</td>
-        </tr>
-        <tr>
-          <td><code>javax.net.ssl.keyStoreType</code></td>
-          <td>Specifies the key store type.  If this property is not
-              specified, the platform's default type (JKS) is assumed.
-          </td>
-        </tr>
-        <tr>
-          <td><code>javax.net.ssl.keyStorePassword</code></td>
-          <td>Specifies the password needed to access the key store.
-          </td>
-        </tr>
-      </table>
-
-      <p>See <a href="#Examples">Examples</a> below for examples of
-         setting these system properties when starting an application
-         that uses Logback's SSL-enabled server components.
-      </p>
-         
-      <p>If your server component is using a certificate 
-         that was signed by a commercial certification authority (CA), 
-         <strong>you probably don't need to provide <em>any</em> SSL 
-         configuration in your applications that use SSL-enabled client 
-         components</strong>.  When using a commercially-signed 
-         certificate for your server  component, simply setting the 
-         system key store properties for JVM that runs the server 
-         component is usually all that is needed.
-      </p>
-               
-      <p>If you are using either a self-signed server certificate
-         or your server certificate was signed by a
-         certification authority (CA) that is not among those whose root
-         certificates are in the Java platform's default trust store
-         (e.g. when your organization has its own internal certification
-         authority), you will need to configure the JSSE system
-         properties that provide the location, type, and password of the
-         trust store containing your server's certificate or trusted
-         root certificates for the certification authority (CA) that
-         signed your server's certificate.  <strong>These properties will 
-         need to be set in each application that utilizes an SSL-enabled
-         client component</strong>.
-      </p>
-        
-      <h4><a name="basicConfig.trustStore"></a>
-          System Properties for Client Trust Store Configuration</h4>
-      <table class="bodyTable striped">
-        <tr>
-          <th>Property Name</th>
-          <th>Description</th>
-        </tr>
-        <tr>
-          <td><code>javax.net.ssl.trustStore</code></td>
-          <td>Specifies a filesystem path to the file containing your
-              server component's certificate or trusted root
-              certificate(s) for the certification authority (CA) that
-              signed the server certificate.</td>
-        </tr>
-        <tr>
-          <td><code>javax.net.ssl.trustStoreType</code></td>
-          <td>Specifies the trust store type.  If this property is not
-              specified, the platform's default type (JKS) is assumed.
-          </td>
-        </tr>
-        <tr>
-          <td><code>javax.net.ssl.trustStorePassword</code></td>
-          <td>Specifies the password needed to access the trust store.
-          </td>
-        </tr>
-      </table>
-
-      <p>See <a href="#Examples">Examples</a> below for examples of
-         setting these system properties when starting an application 
-         that utilizes Logback's SSL-enabled client components.
-      </p>         
-            
-      <h3 class="doAnchor"><a name="SSLConfiguration"></a>
-         Advanced SSL Configuration</h3>
-      <p>In certain situations, the basic SSL configuration using 
-         JSSE system properties is not adequate.  For example, if you
-         are using the <code>SSLServerSocketReceiver</code> component in a web
-         application, you may wish to use a different credential to
-         identify your logging server for your remote logging clients
-         than the credential that your web server uses to identify
-         itself to web clients.  You might wish to use SSL client
-         authentication on your logging server to ensure that only
-         authentic and authorized remote loggers can connect. Or perhaps
-         your organization has strict policies regarding the SSL
-         protocols and cipher suites that may be utilized on the
-         organization's network.  For any of these needs, you will need
-         to make use of Logback's advanced configuration options for SSL.
-      </p>
-      <p>When configuring a Logback component that supports SSL, you 
-         specify the SSL configuration using the <code>ssl</code> 
-         property in the configuration of the component.          
-      </p>      
-      <p>For example, if you wish to use <code>SSLServerSocketReceiver</code>
-         and configure the key store properties for your logging 
-         server's credential, you could use a configuration such as the 
-         following.
-      </p>
-
-      <span class="asGroovy" onclick="return asGroovy('logback-ssl-serverKeyStore');">View as .groovy</span>
-      <pre id="logback-ssl-serverKeyStore" class="prettyprint source"><configuration>
-
-  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
-    <encoder>
-      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
-    </encoder>
-  </appender>
-  
-  <root level="debug">
-    <appender-ref ref="CONSOLE" />
-  </root>
-
-  <receiver class="ch.qos.logback.classic.net.server.SSLServerSocketReceiver">
-    <ssl>
-      <keyStore>
-        <location>classpath:/logging-server-keystore.jks</location>
-        <password>changeit</password>
-      </keyStore>
-    </ssl>
-  </receiver> 
-
-</configuration></pre>
-
-      <p>This configuration specifies the location of the key store
-         as <em>logging-server-keystore.jks</em> at the root of
-         the application's classpath.  You could alternatively 
-         specify a <code>file:</code> URL to identify the location of
-         the key store.
-      </p>
-      <p>If you wanted to use <code>SSLSocketAppender</code> in your
-         application's Logback configuration, but did not want to change
-         the application's default trust store using the JSSE
-         <code>javax.net.ssl.trustStore</code> property, you could 
-         configure the appender as follows.
-      </p>          
-
-      <span class="asGroovy" onclick="return asGroovy('logback-ssl-clientTrustStore');">View as .groovy</span>
-      <pre id="logback-ssl-clientTrustStore" class="prettyprint source"><configuration>
-  <appender name="SOCKET" class="ch.qos.logback.classic.net.SSLSocketAppender">
-    <ssl>
-      <trustStore>
-        <location>classpath:/logging-server-truststore.jks</location>
-        <password>changeit</password>
-      </trustStore>
-    </ssl>
-  </appender>
-  
-  <root level="debug">
-    <appender-ref ref="SOCKET" />
-  </root>
-
-</configuration></pre>
-
-      <p>This configuration specifies the location of the trust store
-         as <em>logging-server-truststore.jks</em> at the root of
-         the application's classpath.  You could alternatively 
-         specify a <code>file:</code> URL to identify the location of
-         the trust store.
-      </p>
-
-      <h4>SSL Configuration Properties</h4>
-      
-      <p>JSSE exposes a large number of configurable options, and 
-         Logback's SSL support makes nearly all of them available for
-         you to specify in your SSL-enabled component configuration.  
-         When using XML configuration, SSL properties are introduced to 
-         these components by nesting an <ssl> element in the 
-         component configuration.  This configuration element corresponds 
-         to the 
-         <a href="../xref/ch/qos/logback/core/net/ssl/SSLConfiguration.html">
-         <code>SSLConfiguration</code></a> class.
-      </p>
-      
-      <p>When configuring SSL for your components
-         you need only configure those SSL properties for which the
-         defaults are not adequate.  Overspecifying the SSL configuration
-         is often the cause of difficult-to-diagnose problems.
-      </p>
- 
-      <p>The following table describes the top-level SSL configuration
-         properties.  Many of these properties introduce additional
-         subproperties, which are described in tables that follow 
-         after the top-level properties are described.
-      </p>
-            
-      <table class="bodyTable striped">
-        <tr>
-          <th>Property Name</th>
-          <th>Type</th>
-          <th>Description</th>
-        </tr>
-        <tr>
-          <td><span class="prop" container="ssl">keyManagerFactory</span></td>
-          <td><a href="../xref/ch/qos/logback/core/net/ssl/KeyManagerFactoryFactoryBean.html">
-              <code>KeyManagerFactoryFactoryBean</code></a>
-          </td>
-          <td>Specifies the configuration used to create a
-              <a href="http://docs.oracle.com/javase/1.5.0/docs/api/javax/net/ssl/KeyManagerFactory.html">
-              <code>KeyManagerFactory</code></a>.  The Java platform's default 
-              factory will be used if this property is not configured.  See
-              <a href="#KeyManagerFactoryFactoryBean">Key Manager Factory
-              Configuration</a>
-              below. 
-          </td>
-        </tr>
-        <tr>
-          <td><a name="ssl.keyStore"></a><span class="prop" container="ssl">keyStore</span></td>
-          <td><a href="../xref/ch/qos/logback/core/net/ssl/KeyStoreFactoryBean.html">
-              <code>KeyStoreFactoryBean</code></a>
-          </td>
-          <td>
-            <p>Specifies the configuration used to create a
-               <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/security/KeyStore.html">
-               <code>KeyStore</code></a>.  The KeyStore created by this property
-               should contain a single X.509 credential (consisting of a 
-               private key, corresponding certificate, and CA certificate chain).
-               This credential is presented by the local SSL peer to the remote
-               SSL peer.
-            </p>
-            <p>When configuring an SSL client (e.g. <code>SSLSocketAppender</code>),
-               the <span class="prop" container="ssl">keyStore</span> property
-               is needed only if the remote peer is configured to require
-               client authentication. 
-            </p>
-            <p>When configuring an SSL server (e.g. <code>SimpleSSLSocketServer</code>)
-               the <span class="prop" container="ssl">keyStore</span> property
-               specifies the key store containing the server's credential.  If
-               this property is not configured, the JSSE's
-               <code>javax.net.ssl.keyStore</code> system property must be
-               configured to provide the location of the server's key store.
-               See <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#InstallationAndCustomization">
-               Customizing JSSE</a> in the 
-               <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html">
-               JSSE Reference Guide</a> for more information on setting JSSE
-               system properties.
-            </p>
-            <p>See <a href="#KeyStoreFactoryBean">Key Store Configuration</a>
-               below. 
-            </p>
-          </td>
-        </tr>
-        <tr>
-          <td><span class="prop" container="ssl">parameters</span></td>
-          <td><a href="../xref/ch/qos/logback/core/net/ssl/SSLParametersConfiguration.html">
-              <code>SSLParametersConfiguration</code></a></td>
-          <td>Specifies various parameters used in SSL session negotiation.
-              See <a href="#SSLParametersConfiguration">SSL Parameters Configuration</a>
-              below.
-          </td>
-        </tr>
-        <tr>
-          <td><span class="prop" container="ssl">protocol</span></td>
-          <td><code>String</code></td>
-          <td>Specifies the SSL protocol that will be used to create an 
-              <a href="http://docs.oracle.com/javase/1.5.0/docs/api/javax/net/ssl/SSLContext.html">
-              <code>SSLContext</code></a>.
-              See the <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#AppA">
-              Standard Names</a> specification in the 
-              <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html">
-              JSSE Reference Guide</a>.  The Java platform's default protocol 
-              will be used if this property is not configured.
-          </td>
-        </tr>
-        <tr>
-          <td><span class="prop" container="ssl">provider</span></td>
-          <td><code>String</code></td>
-          <td>Specifies the name of the JSSE provider that will be used to
-              create an 
-              <a href="http://docs.oracle.com/javase/1.5.0/docs/api/javax/net/ssl/SSLContext.html">
-              <code>SSLContext</code></a>.  The Java platform's default JSSE 
-              provider will be used if this property is not configured.
-          </td>
-        </tr>
-        <tr>
-          <td><span class="prop" container="ssl">secureRandom</span></td>
-          <td><a href="../xref/ch/qos/logback/core/net/ssl/SecureRandomFactoryBean.html">
-              <code>SecureRandomFactoryBean</code></a>
-          </td>
-          <td>Specifies the configuration used to create a
-              <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/security/SecureRandom.html">
-              <code>SecureRandom</code></a> — a secure random number
-              generator.  The Java platform's default generator will be used  
-              if this property is not configured.  See
-              <a href="#SecureRandomFactoryBean">Secure Random Generator
-              Configuration</a> below. 
-          </td>
-        </tr>
-        <tr>
-          <td><span class="prop" container="ssl">trustManagerFactory</span></td>
-          <td><a href="../xref/ch/qos/logback/core/net/ssl/TrustManagerFactoryFactoryBean.html">
-              <code>TrustManagerFactoryFactoryBean</code></a>
-          </td>
-          <td>Specifies the configuration used to create a
-              <a href="http://docs.oracle.com/javase/1.5.0/docs/api/javax/net/ssl/TrustManagerFactory.html">
-              <code>TrustManagerFactory</code></a>.  The Java platform's default 
-              factory will be used if this property is not configured.  See
-              <a href="#TrustManagerFactoryFactoryBean">Trust Manager Factory</a>
-              below. 
-          </td>
-        </tr>
-        <tr>
-          <td><a name="ssl.trustStore"></a><span class="prop" container="ssl">trustStore</span></td>
-          <td><a href="../xref/ch/qos/logback/core/net/ssl/KeyStoreFactoryBean.html">
-              <code>KeyStoreFactoryBean</code></a>
-          </td>
-          <td>
-            <p>Specifies the configuration used to create a
-               <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/security/KeyStore.html">
-               <code>KeyStore</code></a> used for validating identity of the
-               remote SSL peer.  The KeyStore created by this property
-               should contain one or more <em>trust anchors</em> — self-signed
-               certificates marked as "trusted" in the keystore.  Typically,
-               the trust store contains self-signed CA certificates.  
-            </p>
-            <p>The trust store specified by this property overrides any trust 
-               store specified by the JSSE's <code>javax.net.ssl.trustStore</code> 
-               system property and the platform's default trust store.See <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#InstallationAndCustomization">
-               Customizing JSSE</a> in the 
-               <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html">
-               JSSE Reference Guide</a> for more information on setting JSSE
-               system properties.
-            </p>
-          </td>
-        </tr>
-      </table>
-      
-      <h4 class="doAnchor"><a name="KeyStoreFactoryBean"></a>
-          Key Store Configuration</h4>
-          
-      <p>The <a href="../xref/ch/qos/logback/core/net/ssl/KeyStoreFactoryBean.html">
-         <code>KeyStoreFactoryBean</code></a> specifies the 
-         configuration needed to create a 
-         <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/security/KeyStore.html">
-         <code>KeyStore</code></a> containing X.509 credentials.  The properties
-         of this factory bean can be used in the
-         <a href="#ssl.keyStore"><span class="prop" container="ssl">keyStore</span></a> 
-         and 
-         <a href="#ssl.trustStore"><span class="prop" container="ssl">trustStore</span></a>
-         properties of the <a href="#SSLConfiguration">SSL Configuration</a>.
-      </p>
- 
-      <table class="bodyTable striped">
-        <tr>
-          <th>Property Name</th>
-          <th>Type</th>
-          <th>Description</th>
-        </tr>
-        <tr>
-          <td><span class="prop" container="keyStore">location</span></td>
-          <td><code>String</code></td>
-          <td>A URL that specifies the location of the key store.  Use
-              a <code>file:</code> URL to specify the location of the
-              keystore on a filesystem.  Use a <code>classpath:</code>
-              URL to specify a keystore than can be found on the classpath.
-              If the URL doesn't specify a scheme, <code>classpath:</code>
-              is assumed.</td>
-        </tr>
-        <tr>
-          <td><span class="prop" container="keyStore">password</span></td>
-          <td><code>String</code></td>
-          <td>Specifies the password needed to access the key store.</td>
-        </tr>
-        <tr>
-          <td><span class="prop" container="keyStore">provider</span></td>
-          <td><code>String</code></td>
-          <td>Specifies the name of the JCA provider that will be used to
-              create a <code>KeyStore</code>.  The Java 
-              platform's default key store provider will be used if this 
-              property is not configured.
-          </td>
-        </tr>
-        <tr>
-          <td><span class="prop" container="keyStore">type</span></td>
-          <td><code>String</code></td>
-          <td>Specifies the <code>KeyStore</code> type.
-              See the <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/CryptoSpec.html#AppA">
-              Standard Names</a> specification in the 
-              <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/CryptoSpec.html">
-              Java Cryptography Architecture</a> specification.  The Java 
-              platform's default key store type will be used  if this property 
-              is not configured.
-          </td>
-        </tr>
-      </table>
-      
-      <h4><a name="KeyManagerFactoryFactoryBean"></a>
-          Key Manager Factory Configuration</h4>
-          
-      <p>The <a href="../xref/ch/qos/logback/core/net/ssl/KeyManagerFactoryFactoryBean.html">
-         <code>KeyManagerFactoryFactoryBean</code></a> specifies the 
-         configuration needed to create a 
-         <a href="http://docs.oracle.com/javase/1.5.0/docs/api/javax/net/ssl/KeyManagerFactory.html">
-         <code>KeyManagerFactory</code></a>.  Generally, it isn't necessary
-         to explicitly configure the key manager factory, as the platform's
-         default factory is adequate for most needs.
-      </p>
-
-      <table class="bodyTable striped">
-        <tr>
-          <th>Property Name</th>
-          <th>Type</th>
-          <th>Description</th>
-        </tr>
-        <tr>
-          <td><span class="prop" container="keyManagerFactory">algorithm</span></td>
-          <td><code>String</code></td>
-          <td>Specifies the <code>KeyManagerFactory</code> algorithm name.
-              See the <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#AppA">
-              Standard Names</a> specification in the 
-              <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html">
-              JSSE Reference Guide</a>.  The Java platform's default key 
-              manager algorithm will be used if this property is not configured.
-          </td>
-        </tr>
-        <tr>
-          <td><span class="prop" container="keyManagerFactory">provider</span></td>
-          <td><code>String</code></td>
-          <td>Specifies the name of the JCA provider that will be used to
-              create a <code>SecureRandom</code> generator.  The Java 
-              platform's default JSSE provider will be used if this property 
-              is not configured.
-          </td>
-        </tr>
-      </table>
-
-      <h4 class="doAnchor"><a name="SecureRandomFactoryBean"></a>
-          Secure Random Generator Configuration</h4>
-          
-      <p>The <a href="../xref/ch/qos/logback/core/net/ssl/SecureRandomFactoryBean.html">
-         <code>SecureRandomFactoryBean</code></a> specifies the 
-         configuration needed to create a 
-         <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/security/SecureRandom.html">
-         <code>SecureRandom</code></a> generator.  Generally, it isn't necessary
-         to explicitly configure the secure random generator, as the platform's
-         default generator is adequate for most needs.
-      </p>
- 
-      <table class="bodyTable striped">
-        <tr>
-          <th>Property Name</th>
-          <th>Type</th>
-          <th>Description</th>
-        </tr>
-        <tr>
-          <td><span class="prop" container="secureRandom">algorithm</span></td>
-          <td><code>String</code></td>
-          <td>Specifies the <code>SecureRandom</code> algorithm name.
-              See the <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/CryptoSpec.html#AppA">
-              Standard Names</a> specification in the 
-              <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/CryptoSpec.html">
-              Java Cryptography Architecture</a> specification.  The Java 
-              platform's default random number generation algorithm will be used 
-              if this property is not configured.
-          </td>
-        </tr>
-        <tr>
-          <td><span class="prop" container="secureRandom">provider</span></td>
-          <td><code>String</code></td>
-          <td>Specifies the name of the JCA provider that will be used to
-              create a <code>SecureRandom</code> generator.  The Java 
-              platform's default JSSE provider will be used if this property 
-              is not configured.
-          </td>
-        </tr>
-      </table>
-      
-      <h4><a name="SSLParametersConfiguration"></a>
-          SSL Parameters Configuration</h4>
-          
-      <p>The <a href="../xref/ch/qos/logback/core/net/ssl/SSLParametersConfiguration.html">
-         <code>SSLParametersConfiguration</code></a> allows the customization
-         of allowed SSL protocols, cipher suites, and client authentication
-         options. 
-      </p>
-
-      <table class="bodyTable striped">
-        <tr>
-          <th>Property Name</th>
-          <th>Type</th>
-          <th>Description</th>
-        </tr>
-        <tr>
-          <td><a name="parameters.excludedCipherSpecs"></a>
-              <span class="prop" container="parameters">excludedCipherSpecs</span></td>
-          <td><code>String</code></td>
-          <td>
-            <p>Specifies a comma-separated list of SSL cipher spec names or
-               patterns to disable during session negotiation.  This property is
-               used to filter the cipher suites supported by the SSL engine, 
-               such that any cipher spec matched by this property is disabled.
-            </p>
-            <p>Each field in the comma-separated list specified for this 
-               property may be a simple string or a regular expression.
-            </p>
-            <p>See the <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#AppA">
-              Standard Names</a> specification in the 
-              <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html">
-              JSSE Reference Guide</a> for a list of cipher spec names.
-            </p>
-          </td>
-        </tr>
-        <tr>
-          <td><a name="parameters.includedCipherSpecs"></a>
-              <span class="prop" container="parameters">includedCipherSpecs</span></td>
-          <td><code>String</code></td>
-          <td>
-            <p>Specifies a comma-separated list of SSL cipher spec names or
-               patterns to enable during session negotiation.  This property is
-               used to filter the cipher suites supported by the SSL engine, 
-               such that only those cipher suites matched by this property are 
-               enabled.
-            </p>
-            <p>Each field in the comma-separated list specified for this 
-               property may be a simple string or a regular expression.
-            </p>
-            <p>See the <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#AppA">
-              Standard Names</a> specification in the 
-              <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html">
-              JSSE Reference Guide</a> for a list of cipher spec names.
-            </p>
-          </td>
-        </tr>
-        <tr>
-          <td><a name="parameters.excludedProtocols"></a>
-              <span class="prop" container="parameters">excludedProtocols</span></td>
-          <td><code>String</code></td>
-          <td>
-            <p>Specifies a comma-separated list of SSL protocol names or
-               patterns to disable during session negotiation.  This property is
-               used to filter the protocols supported by the SSL engine, 
-               such that any protocol matched by this property is disabled.
-            </p>
-            <p>Each field in the comma-separated list specified for this 
-               property may be a simple string or a regular expression.
-            </p>
-            <p>See the <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#AppA">
-              Standard Names</a> specification in the 
-              <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html">
-              JSSE Reference Guide</a> for a list of protocol names.
-            </p>
-          </td>
-        </tr>
-        <tr>
-          <td><a name="parameters.includedProtocols"></a>
-              <span class="prop" container="parameters">includedProtocols</span></td>
-          <td><code>String</code></td>
-          <td>
-            <p>Specifies a comma-separated list of SSL protocol names or
-               patterns to enable during session negotiation.  This property is
-               used to filter the protocols supported by the SSL engine, 
-               such that only those protocols matched by this property are 
-               enabled.
-            </p>
-            <p>Each field in the comma-separated list specified for this 
-               property may be a simple string or a regular expression.
-            </p>
-            <p>See the <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#AppA">
-              Standard Names</a> specification in the 
-              <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html">
-              JSSE Reference Guide</a> for a list of protocol names.
-            </p>
-          </td>
-        </tr>
-        <tr>
-          <td><a name="parameters.needClientAuth"></a>
-              <span class="prop" container="parameters">needClientAuth</span></td>
-          <td><code>boolean</code></td>
-          <td>Set this property to the value <code>true</code> to 
-              configure a server to <em>require</em> a valid client
-              certificate.  This property is ignored when configured
-              for a client component such as <code>SSLSocketAppender</code>.
-          </td>
-        </tr>
-        <tr>
-          <td><a name="parameters.wantClientAuth"></a>
-              <span class="prop" container="parameters">wantClientAuth</span></td>
-          <td><code>boolean</code></td>
-          <td>Set this property to the value <code>true</code> to 
-              configure the server to <em>request</em> a client
-              certificate.  This property is ignored when configured
-              for a client component such as <code>SSLSocketAppender</code>.
-          </td>
-        </tr>
-      </table>
-      
-      <h4><a name="TrustManagerFactoryFactoryBean"></a>
-          Trust Manager Factory Configuration</h4>
-          
-      <p>The <a href="../xref/ch/qos/logback/core/net/ssl/TrustManagerFactoryFactoryBean.html">
-         <code>TrustManagerFactoryFactoryBean</code></a> specifies the 
-         configuration needed to create a 
-         <a href="http://docs.oracle.com/javase/1.5.0/docs/api/javax/net/ssl/TrustManagerFactory.html">
-         <code>TrustManagerFactory</code></a>.  Generally, it isn't necessary
-         to explicitly configure the trust manager factory, as the platform's
-         default factory is adequate for most needs.
-      </p>
-
-      <table class="bodyTable striped">
-        <tr>
-          <th>Property Name</th>
-          <th>Type</th>
-          <th>Description</th>
-        </tr>
-        <tr>
-          <td><span class="prop" container="trustManagerFactory">algorithm</span></td>
-          <td><code>String</code></td>
-          <td>Specifies the <code>TrustManagerFactory</code> algorithm name.
-              See the <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#AppA">
-              Standard Names</a> specification in the 
-              <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html">
-              JSSE Reference Guide</a>.  The Java platform's default key 
-              manager algorithm will be used if this property is not configured.
-          </td>
-        </tr>
-        <tr>
-          <td><span class="prop" container="trustManagerFactory">provider</span></td>
-          <td><code>String</code></td>
-          <td>Specifies the name of the JCA provider that will be used to
-              create a <code>SecureRandom</code> generator.  The Java 
-              platform's default JSSE provider will be used if this property 
-              is not configured.
-          </td>
-        </tr>
-      </table>
-      
-      <h2 class="doAnchor"><a name="Examples"></a>Examples</h2>
-
-      <h3>Using JSSE System Properties</h3>
-      <p>JSSE system properties can be used to specify the location and 
-      password for a key store containing your server's X.509 credential,
-      or to specify the location and password for a trust store 
-      containing self-signed root CA certificates used by your client
-      components to validate server trust.</p>
-
-      <h4>Specifying the Server's Key Store</h4>
-      <p>When running a server component, you need to specify the location
-      and password for the key store containing the server's credential.
-      One way to do this is using JSSE system properties.  The following
-      example shows a command line that could be used to start the
-      <code>SimpleSSLSocketServer</code> that is shipped with Logback.</p>
-    
-      <p class="source">java -DkeyStore=/etc/logback-server-keystore.jks \
-     -DkeyStorePassword=changeit -DkeyStoreType=JKS \
-     ch.qos.logback.net.SimpleSSLSocketServer 6000 /etc/logback-server-config.xml</p>
-              
-      <p>Note that when using the JSSE <em>keyStore</em> system property,
-      a path to the key store is specified.  When specifying the location
-      in <em>logback.xml</em>, a URL for the key store is specified.</p>
-      
-      <p>While this example starts the standalone server application
-      provided with Logback, the same system properties could be specified
-      to start any application that uses an SSL-enabled Logback server
-      component.
-      
-      <h4>Specifying the Client's Trust Store</h4>
-      
-      <p>When using a client component, you need to specify the location
-      and password for a trust store containing root CA certificates used
-      for validating server trust.  One way to do this is using JSSE
-      system properties.  The following example shows a command line
-      that could be used to start an application named 
-      <code>com.example.MyLoggingApplication</code> that uses one or
-      more of Logback's SSL-enabled client components.</p>
-
-      <p class="source">java -DtrustStore=/etc/logback-client-truststore.jks \
-     -DtrustStorePassword=changeit -DtrustStoreType=JKS \
-     com.example.MyLoggingApplication</p>
-      
-      <p>Note that when using the JSSE <em>trustStore</em> system property,
-      a path to the key store is specified.  When specifying the location
-      in <em>logback.xml</em>, a URL for the trust store is specified.</p>
-      
-      <h3>Creating and Using a Self-Signed Server Component Credential</h3>
-      <p>To generate a self-signed certificate, you can use the <em>keytool</em>
-      utility that is shipped with the Java Runtime Environment (JRE).
-      The instructions below walk through the process of creating a
-      self-signed X.509 credential in a key store for your server 
-      component and creating a trust store for use with your client
-      components.
-      </p>
-      
-      <h4>Creating the server component credential:</h4>
-      <p>The following command will generate the self-signed client
-      credential in a file named <em>server.keystore</em>.</p>
-      <pre class="source">keytool -genkey -alias server -dname "CN=my-logging-server" \
-    -keyalg RSA -validity 365 -keystore server.keystore
-Enter keystore password: <Enter password of your choosing>
-Re-enter new password: <Re-enter same password>
-Enter key password for <my-logging-server>
-	(RETURN if same as keystore password):  <Press RETURN>
-</pre>
-
-      <p>The name <em>my-logging-server</em> used in the <em>dname</em>
-      may be any valid name of your choosing.  You may wish to use the
-      fully-qualified domain name of the server host. The
-      <em>validity</em> argument specifies the number of calendar days
-      from the present date until the credential expires.</p>
-      
-      <p>In production settings, it is especially important to choose a
-      strong password for the key store containing your server credential.
-      This password protects the server's private key, preventing it
-      from being used by an authorized party.  Make note of the
-      password, because you will need it in subsequent steps and when
-      configuring your server.
-      </p>
-
-      <h4>Creating a trust store for client components:</h4>
-      <p>For use in the configuration of your client components, the 
-      server's certificate needs to be exported from the key store
-      created in the previous step, and imported into a trust store.  The
-      following commands will export the certificate and import it into
-      a trust store named <em>server.truststore</em>.</p>
-      
-      <pre class="source">keytool -export -rfc -alias server -keystore server.keystore \
-    -file server.crt
-Enter keystore password: <Enter password you chose for in previous step>
-
-keytool -import -alias server -file server.crt -keystore server.truststore
-Enter keystore password: <Enter password of your choosing>
-Re-enter new password: <Re-enter same password>
-Owner: CN=my-logging-server
-Issuer: CN=my-logging-server
-Serial number: 6e7eea40
-Valid from: Sun Mar 31 07:57:29 EDT 2013 until: Mon Mar 31 07:57:29 EDT 2014
-
-   ...
-
-Trust this certificate? [no]:  <Enter "yes">
-</pre>
-
-      <p>The first command exports the server's certificate (but not the
-      server's private key) from the key store and into a file named
-      <em>server.crt</em>.  The second step creates a new trust store
-      named <em>server.truststore</em> containing the server certificate.
-      </p>
-      
-      <p>In production settings, it is especially important to choose a
-      strong password for the trust store that is different from the 
-      password you chose of the server key store.  Make note of this
-      password, because you will need it when configuring your appender
-      clients.
-      </p>
-          
-      <h4>Configuring the server component:</h4>
-      <p>You will need to copy the <em>server.keystore</em> file into your 
-      server application's configuration.  The key store can be placed
-      with your application's classpath resources, or it may simply be
-      placed somewhere on the server host's filesystem.  When specifying
-      the location of the key store in the configuration, you will use
-      either a <code>classpath:</code> URL or <code>file:</code> URL, as
-      appropriate.  A example server configuration follows:</p>
-
-      <p class="example">Example: Server Component Configuration</p>
-      <pre class="prettyprint source"><configuration debug="true">
-  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
-    <encoder>
-      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
-    </encoder>
-  </appender>
-  
-  <root level="DEBUG">
-    <appender-ref ref="CONSOLE" />
-  </root>
-
-  <server class="ch.qos.logback.classic.net.server.SSLServerSocketReceiver">
-    <ssl>
-      <keyStore>
-        <location>classpath:server.keystore</location>
-        <password>${server.keystore.password}</password>
-      </keyStore>
-    </ssl>
-  </server>
-</configuration></pre>
-      
-      <p>This example assumes that the key store is located at the root
-      of the application's classpath.</p>
-      
-      <p>Note that this configuration specifies the key store password
-      using the <em>server.keystore.password</em> substitution variable.
-      This approach would allow you to avoid storing the password in
-      any configuration file.  For example, your application could
-      prompt for this password on the console at startup, and then 
-      set the <em>server.keystore.password</em> as a system property 
-      using the entered password before configuring the logging system.
-      </p>
-      
-      <h4>Configuring client components:</h4>
-      <p>You will need to copy the <em>server.truststore</em> file into
-      the application configuration of each application that uses an
-      SSL-enabled component acting in the client mode.  The trust store 
-      can be placed with your application's classpath resources, or it
-      may simply be placed somewhere on the filesystem.  When specifying 
-      the location of the trust store in the configuration, you will use 
-      either a <code>classpath:</code> URL or <code>file:</code> URL, as
-      appropriate.  A example appender client configuration follows:</p>
-
-      <p class="example">Example: Appender Client Configuration</p>
-
-      <pre class="prettyprint source"><configuration debug="true">
-  <appender name="SOCKET" class="ch.qos.logback.classic.net.SSLSocketAppender">
-    <remoteHost>${host}</remoteHost>
-    <ssl>
-      <trustStore>
-        <location>classpath:server.truststore</location>
-        <password>${server.truststore.password}</password>
-      </trustStore>
-    </ssl>
-  </appender>
-
-  <root level="DEBUG">
-    <appender-ref ref="SOCKET" />
-  </root>
-</configuration></pre>
-
-      <p>This example assumes that the trust store is located at the root
-      of the application's classpath.</p>
-      
-      <p>Note that this configuration specifies the trust store password
-      using the <em>server.truststore.password</em> substitution variable.
-      This approach would allow you to avoid storing the password in
-      any configuration file.  For example, your application could
-      prompt for this password on the console at startup, and then 
-      set the <em>server.truststore.password</em> as a system property 
-      using the entered password before configuring the logging system.
-      </p>
-
-      <h2>Auditing the SSL Configuration</h2>
-      <p>In settings where secure communications are required, it is often
-      necessary to audit the configuration of components that use SSL to
-      validate conformance with local security policies.  The SSL
-      support in Logback addresses this need by providing detailed
-      logging of SSL configuration when Logback is initialized.  You can 
-      enable audit logging using the <code>debug</code> property in the
-      configuration:</p>
-      
-      <pre class="prettyprint source"><configuration debug="true">
-  
-  ...
-  
-</configuration></pre>
-
-      <p>With the debug property enabled, all of the relevant aspects of
-      the resulting SSL configuration will be logged when the logging
-      system is initialized.  A representative example of the information
-      logged for SSL follows.</p>
-      
-      <p class="example">Example: SSL Configuration Audit Logging</p>
-      
-      <pre>06:46:31,941 |-INFO in SSLServerSocketReceiver at 4ef18d37 - SSL protocol 'SSL' provider 'SunJSSE version 1.6'
-06:46:31,967 |-INFO in SSLServerSocketReceiver at 4ef18d37 - key store of type 'JKS' provider 'SUN version 1.6': file:src/main/java/chapters/appenders/socket/ssl/keystore.jks
-06:46:31,967 |-INFO in SSLServerSocketReceiver at 4ef18d37 - key manager algorithm 'SunX509' provider 'SunJSSE version 1.6'
-06:46:31,973 |-INFO in SSLServerSocketReceiver at 4ef18d37 - secure random algorithm 'SHA1PRNG' provider 'SUN version 1.6'
-06:46:32,755 |-INFO in SSLParametersConfiguration at 4a6f19d5 - enabled protocol: SSLv2Hello
-06:46:32,755 |-INFO in SSLParametersConfiguration at 4a6f19d5 - enabled protocol: SSLv3
-06:46:32,755 |-INFO in SSLParametersConfiguration at 4a6f19d5 - enabled protocol: TLSv1
-06:46:32,756 |-INFO in SSLParametersConfiguration at 4a6f19d5 - enabled cipher suite: SSL_RSA_WITH_RC4_128_MD5
-06:46:32,756 |-INFO in SSLParametersConfiguration at 4a6f19d5 - enabled cipher suite: SSL_RSA_WITH_RC4_128_SHA
-06:46:32,756 |-INFO in SSLParametersConfiguration at 4a6f19d5 - enabled cipher suite: TLS_RSA_WITH_AES_256_CBC_SHA
-</pre>
-
-      <p>The output shown here has been truncated for brevity's sake, 
-      but would typically include the complete list of protocols, 
-      providers, algorithms, and cipher suites, as well as the location
-      of key store and trust store resources utilized in the configuration.
-      </p>
-      
-      <p>While none of this audit logging is particularly sensitive,
-      best practices for security would suggest that this logging should
-      not remain enabled in production settings after the configuration
-      has been validated.  Audit logging is disabled when the 
-      <code>debug</code> property is removed or set to <code>false</code>.
-      </p>
-      
-      <h2>Resolving SSL Exceptions</h2>
-      <p>When SSL is misconfigured, it generally results in the client
-         and server components being unable to negotiate an agreeable 
-         session.  This problem usually manifests itself as exceptions 
-         being thrown by both parties when the client attempts to connect 
-         to the server.
-      </p>
-      <p>The content of the exception messages varies depending on whether 
-         you are looking at the client's log or the server's log.  This
-         is mostly due to inherent protocol limitations in error reporting
-         during session negotiation.  As a consequence of this fact,
-         in order to troubleshoot session negotiation problems, you will
-         usually want to look at the logs of both the client and the
-         server.
-      </p>
-      
-      <h3>Server's Certificate is Not Available</h3>
-      <p>When starting the server component, you
-         see the following exception in the log:</p>
-         
-      <p><em>javax.net.ssl.SSLException: No available certificate or 
-         key corresponds to the SSL cipher suites which are enabled</em>
-      </p>
-      
-      <p>In most cases this means that you have not configured 
-         the location of the key store containing the server's private 
-         key and corresponding certificate.
-      </p>
-      
-      <h4>Solution</h4>
-      <p>Using either the 
-         <a href="#basicConfig.keyStore">Key Store system
-         properties</a> or the <a href="#ssl.keyStore">
-         <span class="prop">keyStore</span></a> property of the 
-         server component's <span class="prop">ssl</span> property, 
-         you must specify the location and password for the key store 
-         containing the server's private key and certificate.
-      </p>
-      
-      <h3>Client Does Not Trust the Server</h3>
-      <p>When the client attempts to connect to the server, you see the 
-      following exception in the log:</p>
-      
-      <p><em>javax.net.ssl.SSLHandshakeException: 
-              sun.security.validator.ValidatorException: 
-              PKIX path building failed</em>
-      </p>
-      <p>This problem is the result of the server presenting a certificate
-         the client does not trust.  The most common cause is that you 
-         are using a self-signed server certificate (or a server 
-         certificate that was signed by your organization's internal
-         certification authority) and you have not configured the client
-         so that it references a trust store containing the server's 
-         self-signed certificate (or the trusted root certificate(s) for 
-         the CA that signed your server certificate).         
-      </p> 
-      <p>This problem can also occur if your server certificate has
-         expired or has been revoked.  If you have access to the server
-         log you will likely see the following exception logged
-         each time the client attempts to connect:
-      </p>
-      
-      <p><em>javax.net.ssl.SSLHandshakeException: Received fatal alert: ...</em>
-      </p>
-      
-      <p>The remainder of the exception message will usually provide a
-         code that indicates why the client rejected the server's
-         certificate.
-      </p>
-      <table class="bodyTable striped">
-        <tr>
-          <th>Code</th>
-          <th>Description</th>
-        </tr>
-        <tr>
-          <td><code>certificate_unknown</code></td>
-          <td>Usually indicates that the client's trust store has not
-              been properly configured.
-          </td>
-        </tr>
-        <tr>
-          <td><code>certificate_expired</code></td>
-          <td>Indicates that the server's certificate has expired and
-              needs to be replaced.
-          </td>
-        </tr>
-        <tr>
-          <td><code>certificate_revoked</code></td>
-          <td>Indicates that the issuing certification authority (CA)
-              has revoked the server's certificate and the certificate
-              needs to be replaced.
-          </td>
-        </tr>
-      </table>
-        
-      <h4>Solutions</h4>
-      <p>If the server's log message is reporting <code>certificate_unknown</code>
-         then using either the <a href="#basicConfig.trustStore">Trust Store system
-         properties</a> or the <a href="#ssl.trustStore">
-         <span class="prop">trustStore</span></a> property of the 
-         appender component's <span class="prop">ssl</span> property, 
-         you must specify the location and password for the trust 
-         store containing the server's self-signed certificate or
-         the issuing certificate authority's root certificate.
-      </p>
-
-      <p>If the server's log message is reporting 
-         <code>certificate_expired</code> or <code>certificate_revoked</code> 
-         the server needs a new certificate.  The new certificate 
-         and associated private key needs to be placed in the key store 
-         specified in the server's configuration.  And, if using 
-         a self-signed server certificate, the server's certificate also
-         needs to be placed in the trust store specified in the appender
-         client's configuration.
-      </p>
-      
-      <h3>Server Does Not Trust the Client</h3>
-      <p>NOTE: <strong>This problem can occur only if you have explicitly 
-         configured the server to request a client certificate (using 
-         either the <a href="#parameters.needClientAuth"><span class="prop">needClientAuth</span></a> or 
-         <a href="#parameters.wantClientAuth"><span class="prop">wantClientAuth</span></a>
-         property)</strong>.
-      </p>
- 
-      <p>When the client attempts to connect to the logging
-         server, you see the following exception in the client's log:
-      </p>
-      
-      <p><em>javax.net.ssl.SSLHandshakeException:  Received fatal 
-         alert: ...</em>
-      </p>
-
-      <p>The remainder of the exception message will usually provide a
-         code that indicates why the server rejected the client's
-         certificate.
-      </p>
-      <table class="bodyTable striped">
-        <tr>
-          <th>Code</th>
-          <th>Description</th>
-        </tr>
-        <tr>
-          <td><code>certificate_unknown</code></td>
-          <td>Usually indicates that the server's trust store has not
-              been properly configured.
-          </td>
-        </tr>
-        <tr>
-          <td><code>certificate_expired</code></td>
-          <td>Indicates that the client's certificate has expired and
-              needs to be replaced.
-          </td>
-        </tr>
-        <tr>
-          <td><code>certificate_revoked</code></td>
-          <td>Indicates that the issuing certification authority (CA)
-              has revoked the client's certificate and the certificate
-              needs to be replaced.
-          </td>
-        </tr>
-      </table>
-        
-      <h4>Solutions</h4>
-      <p>If the client's log message is reporting <code>bad_certificate</code>
-         then using either the <a href="#basicConfig.trustStore">Trust Store system
-         properties</a> or the <a href="#ssl.trustStore">
-         <span class="prop">trustStore</span></a> property of the 
-         server component's <span class="prop">ssl</span> property, 
-         you must specify the location and password for the trust 
-         store containing the client's self-signed certificate or
-         the issuing certificate authority's root certificate.
-      </p>
-
-      <p>If the server's log message is reporting 
-         <code>certificate_expired</code> or <code>certificate_revoked</code> 
-         the client needs a new certificate.  The new certificate 
-         and associated private key needs to be placed in the key store 
-         specified in the client's configuration.  And, if using 
-         a self-signed client certificate, the client's certificate also
-         needs to be placed in the trust store specified in the 
-         servers's configuration.
-      </p>
-      
-      <h3>Client and Server Cannot Agree on a Protocol</h3>
-      <p>NOTE: <strong>This problem usually occurs only when you are
-         explicitly 
-         <a href="#parameters.excludedProtocols">excluding</a> or 
-         <a href="#parameters.includedProtocols">including</a> SSL 
-         protocols in your configuration</strong>.
-      </p>
-
-      <p>When the client attempts to connect to the server, you see 
-         the following exception in the log:</p>
-      
-      <p><em>javax.net.ssl.SSLHandshakeException:  Received fatal 
-         alert: handshake_failure</em>
-      </p>
-      
-      <p>The server's log message is usually more descriptive.  For
-         example:</p>
-      
-      <p><em>javax.net.ssl.SSLHandshakeException: SSLv2Hello is disabled</em>
-      </p>
-      
-      <p>Generally, this means that you have excluded a protocol from
-         one of the peers and not the other.</p>
-         
-      <h4>Solution</h4>
-      <p>Check the values specified for the 
-         <a href="#parameters.excludedProtocols"><span class="prop">excludedProtocols</span></a> and
-         <a href="#parameters.includedProtocols"><span class="prop">includedProtocols</span></a>
-         properties on both the server and client.
-      </p>
-
-      <h3>Client and Server Cannot Agree on a Cipher Suite</h3>
-      <p>NOTE: <strong>This problem usually occurs only when you are
-         explicitly 
-         <a href="#parameters.excludedCipherSuites">excluding</a> or 
-         <a href="#parameters.includedCipherSuites">including</a> SSL 
-         cipher suites in your configuration</strong>.
-      </p>
-      
-      <p>When the client attempts to connect to the
-         server, you see the following exception in the log:
-      </p>
-      
-      <p><em>javax.net.ssl.SSLHandshakeException:  Received fatal 
-         alert: handshake_failure</em>
-      </p>
-      
-      <p>The server's log message is usually more descriptive:
-      </p>
-      
-      <p><em>javax.net.ssl.SSLHandshakeException: no cipher suites in common</em>
-      </p>
-      
-      <p>This means that you have configured the cipher suites on the
-         server and client such that the intersection
-         of their respective sets of enabled cipher suites is empty.</p>
-      
-      <h4>Solution</h4>
-      <p>Check the values specified for the 
-         <a href="#parameters.excludedCipherSuites"><span class="prop">excludedCipherSuites</span></a> and
-         <a href="#parameters.includedCipherSuites"><span class="prop">includedCipherSuites</span></a>
-         properties on both the server and client.
-      </p>
-         
-      <script src="../templates/footer.js" type="text/javascript"></script>
-
-    </div>
-  </body>
-</html>
\ No newline at end of file
diff --git a/logback-site/src/site/pages/news.html b/logback-site/src/site/pages/news.html
index 39170b1..0d5da58 100644
--- a/logback-site/src/site/pages/news.html
+++ b/logback-site/src/site/pages/news.html
@@ -27,620 +27,6 @@
     the <a href="http://www.qos.ch/mailman/listinfo/announce">QOS.ch
     announce</a> mailing list.</p>
 
-    <hr width="80%" align="center" />
-
-    <h3>2nd of April, 2014 - Release of version 1.1.2</h3>
-
-    <p>Create an abstract method, createOutputStream, as an extension point
-    for subclasses of SyslogBaseAppender to create their own OutputStream.
-    <a href="http://jira.qos.ch/browse/LOGBACK-890">LOGBACK-890</a>
-    </p>
-
-    <p>Removed deprecated constructors in <code>SocketAppender</code>
-    and related classes.</p>
-
-    <p>Fixed incorrect date format in <code>SyslogAppender</code>.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-936">LOGBACK-936</a>)
-    </p>
-
-    <p>Fixed <code>NullPointerException</code> when substituting blank variables
-    (<a href="http://jira.qos.ch/browse/LOGBACK-959">LOGBACK-959</a>)
-
-    <p>Fixed <code>NullPointerException</code> that occurs when stopping a
-    <code>SyslogAppender</code> that did not properly initialize, e.g.,
-    due to a hostname resolution failure.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-960">LOGBACK-960</a>)
-    </p>
-
-    <p>Use fair locking in <code>OutputStreamAppender</code>. Patch provided by
-    Sergey Bykov.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-268">LOGBACK-268</a>)
-    </p>
-
-    <p>In case of missing included files, IncludeAction no longer
-    prints a stack trace but prints a warning instead. (<a
-    href="http://jira.qos.ch/browse/LOGBACK-954">LOGBACK-954</a>)
-
-    <hr width="80%" align="center" />
-
-    <h3>5th of February, 2014 - Release of version 1.1.1</h3>
-
-    <p>Logback now supports an unlimited level of <a
-    href="manual/configuration.html#variableSubstitution">variable</a>
-    resolution graphs rather than being limited to one level deep
-    resolution.  This enhancement was requested by Anton Wiedermann in
-    <a href="http://jira.qos.ch/browse/LOGBACK-943">LOGBACK-943</a>
-    with Eric Dahl providing the relevant pull request.
-    </p>
-
-    <p>Fixed <a
-    href="http://jira.qos.ch/browse/LOGBACK-942">LOGBACK-942</a> which
-    was causing <code>SocketAppender</code> to drop events. Eric Dahl
-    provided the relevant pull request.
-    </p>
-
-    <hr width="80%" align="center" />
-
-    <h3>January 28th, 2014 - Release of version 1.1.0</h3>
-
-    <p>Previously, logback silently ignored configuration files that did
-    not have the ".xml" or ".groovy" file extension. Now, a <code>LogbackException</code>
-    is thrown to flag this error.
-    </p>
-
-    <p>Groovy configuration now supports <code>appenderRef</code>, which
-    allows the use of <code>AsyncAppender</code> in Groovy.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-269">LOGBACK-269</a>)
-    </p>
-
-    <p><code>SizeAndTimeBasedFNATP</code> now supports a protected function
-    <code>#createArchiveRemover</code> that allows subclasses to specify
-    a custom archive remover used in <code>RollingFileAppender</code>. The
-    default archive remover is <code>SizeAndTimeBasedArchiveRemover</code>.
-    </p>
-
-    <p><code>PackagingDataCalculator</code> now catches and ignores
-    <code>UnsupportedOperationException</code> so that it can determine
-    whether the JVM supports <code>Reflection#getCallerClass()</code>
-    without printing that exception's stack trace. This only affects
-    Java 7u40+, which removed support for <code>Reflection#getCallerClass()</code>.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-885">LOGBACK-885</a>)
-    </p>
-
-    <p>To facilitate debugging, <code>SimpleSocketServer</code> now names
-    its threads: "<b>Logback SimpleSocketServer (port <i>PORTNUM</i>)</b>".
-    <code>SocketNode</code> client threads are named:
-    "<b>Logback SocketNode (client: <i>IPADDR</i>)</b>".
-    </p>
-
-    <p>Fixed silently lost messages from <code>SyslogAppender</code>
-    when they exceeded the system datagram size limit. The default max
-    message size was hard coded to 65KB but now matches the system limit
-    (as read from
-    <a href="http://docs.oracle.com/javase/6/docs/api/java/net/DatagramSocket.html#getSendBufferSize()">
-    <code>DatagramSocket#getSendBufferSize()</code></a>) unless a
-    nonzero limit is specified via <code>SyslogAppender#setMaxMessageSize()</code>.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-926">LOGBACK-926</a>)
-    </p>
-
-    <p>Fixed various documentation typos, including
-    <a href="http://jira.qos.ch/browse/LOGBACK-466">LOGBACK-466</a>,
-    <a href="http://jira.qos.ch/browse/LOGBACK-768">LOGBACK-768</a>,
-    <a href="http://jira.qos.ch/browse/LOGBACK-904">LOGBACK-904</a>,
-    <a href="http://jira.qos.ch/browse/LOGBACK-921">LOGBACK-921</a>,
-    and
-    <a href="http://jira.qos.ch/browse/LOGBACK-927">LOGBACK-927</a>.
-    </p>
-
-    <p><code>ContextBase.setStatusManager</code> now correctly validates
-    the given status manager.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-912">LOGBACK-912</a>)
-    </p>
-
-    <p>The <code>SocketNode</code> creates an <code>ObjectInputStream</code>
-    using the socket's input stream, which blocks waiting for the
-    stream header. This wait has been moved from the constructor to
-    <code>SocketNode.run()</code> so that the node can be created without
-    blocking.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-350">LOGBACK-350</a>)
-    </p>
-
-    <p>Fixed <code>SecurityException</code> during initialization
-    in Google AppEngine.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-760">LOGBACK-760</a>)
-    </p>
-
-    <p>The <code><include></code> element now allows optional
-    resources (previously, only optional files).
-    (<a href="http://jira.qos.ch/browse/LOGBACK-644">LOGBACK-928</a>)
-    </p>
-
-    <p>Added new layout conversion word (<b>%D</b> or <b>%elapsedTime</b>),
-    which gets the time taken to serve the request. This applies
-    only to Jetty and Tomcat logs via logback-access.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-320">LOGBACK-320</a>)
-    </p>
-
-    <p>Fixed SMTP error when the subject line contained multiple
-    new-lines.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-865">LOGBACK-865</a>)
-    </p>
-
-    <p>Fixed unnecessary re-initialization of the servlet's
-    <code>LoggerContext</code> while attempting to destroy it.
-    </p>
-
-    <p>Added the following syslog facilities to <code>SyslogStartConverter</code>:
-    NTP, AUDIT, ALERT, CLOCK
-    (<a href="http://jira.qos.ch/browse/LOGBACK-754">LOGBACK-754</a>)
-    </p>
-
-    <p>Fixed <code>NullPointerException</code> when setting a JUL
-    logger's level to null, which should have reset the logger level
-    to the parent's effective level.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-906">LOGBACK-906</a>)
-    </p>
-
-    <p>Added support to get suppressed exceptions. This is currently
-    only implemented for <code>RootCauseFirstThrowableProxyConverter</code>
-    and <code>ThrowableProxyConverter</code>.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-516">LOGBACK-516</a>)
-    </p>
-
-    <p>Fixed problem of Janino classes not found in some environments
-    (axis2, GWT, etc.).
-    (<a href="http://jira.qos.ch/browse/LOGBACK-832">LOGBACK-832</a>)
-    </p>
-
-    <p>Fixed various unit tests, including modifications for consistent
-    results in Jenkins.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-842">LOGBACK-842</a>)
-    </p>
-
-    <p>Allow Gaffer to read the <code>logback.debug</code> system
-    property to enable verbose output during Groovy-based configuration.
-    Also added debug statements to Gaffer.
-    </p>
-
-    <p>Fixed <code>IllegalArgumentException</code> when missing periods
-    and dollar signs in the logger name.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-384">LOGBACK-384</a>)
-    </p>
-
-    <p>Fixed <code>NullPointerException</code> during JNDI lookup.</p>
-
-    <p>Fixed dangling data source connections from <code>DBAppender</code>
-    that caused <i>"maximum open cursors exceeded"</i>.</p>
-
-    <p>Fixed incorrect stack trace depth when specifying <code>%throwable</code>
-    with argument.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-160">LOGBACK-160</a>)
-    </p>
-
-    <p>Fixed MySQL setup script to use lower-case table name to
-    match the references in the file. This had caused an error
-    on systems where case sensitivity matters.</p>
-
-    <p>Fixed <code>NullPointerException</code> when getting code source in
-    <code>PackagingDataCalculator</code>.</p>
-
-    <p>The search path for <code>logback-access.xml</code> is now
-    <code>${catalina.base}</code> and then <code>${catalina.home}</code>
-    if not found.
-    (<a href="http://jira.qos.ch/browse/LOGBACK-844">LOGBACK-844</a>)
-    </p>
-
-    <p>The <code>LoggingEvent</code> constructor delays message
-    formatting so that it can be computed lazily by the
-    <code>getFormattedMessage</code> method. This fixes <a
-    href="http://jira.qos.ch/browse/LOGBACK-873">LOGBACK-873</a> and
-    re-fixes <a
-    href="http://jira.qos.ch/browse/LOGBACK-495">LOGBACK-495</a>.
-    </p>
-
-    <p><code>PackagingDataCalculator</code> now checks for the case
-    where the caller has no protection domain. This fixes <a
-    href="http://jira.qos.ch/browse/LOGBACK-617">LOGBACK-617</a>
-    reported by Yuri de Wit. The relevant fix was provided by Mikhail
-    Mazursky.
-    </p>
-    
-
-    <hr width="80%" align="center" />
-
-    <h3>May 10th, 2013 - Release of version 1.0.13</h3>
-  
-    <p>In logback-access MANIFEST file, imports of Jetty and Tomcat
-    are now optional. This fixes <a
-    href="http://jira.qos.ch/browse/LOGBACK-300">LOGBACK-300</a>
-    reported by Christian Brensing who also provided the appropriate
-    pull request.
-    </p>
-
-    <p>Logback will now correctly parses variables with a default
-    separator string nested within accolades, e.g. "{a:-b}". Such
-    strings resemble variable references but lack the $ prefix, e.g
-    "${a:-b}". This fixes <a
-    href="http://jira.qos.ch/browse/LOGBACK-859">LOGBACK-859</a>
-    reported by Yoni Moses.</p>
-
-    <p>In <code>InterpretationContext</code> class replaced code using
-    JDK 1.6 API with code using JDK 1.5. This fixes <a
-    href="http://jira.qos.ch/browse/LOGBACK-860">LOGBACK-860</a>
-    reported by Bas Stoker.
-    </p>
-
-    <p>Updated the "org.fusesource.jansi:jansi" dependency to version
-    1.9.</p>
-
-    <hr width="80%" align="center" />
-
-    <h3>April 26th, 2013 - Release of version 1.0.12</h3>
-    
-    <p>A new <code>SSLSocketAppender</code> extends the basic 
-    <code>SocketAppender</code> providing the ability to deliver 
-    logging events over the Secure Socket Layer (SSL).  The 
-    corresponding <code>SimpleSSLSocketServer</code> extends the classic 
-    <code>SimpleSocketServer</code> as a basic logging server 
-    application that receives logging events from a 
-    <code>SSLSocketAppender</code>.</p>
-      
-    <p class="highlight">Receiver components are configured in
-    logback.xml just like any other logback component.</p>
-
-    <p>While <code>SimpleSocketServer</code> (and its new SSL-enabled
-    counterpart, <code>SimpleSSLSocketServer</code>) provide an 
-    easy-to-use standalone logging server application, a new component
-    type known as a <em>receiver</em> allows <em>any</em> application 
-    to receive logging events from remote appenders over a TCP/IP network 
-    connection, using Logback Classic.  Receiver components are 
-    configured in <em>logback.xml</em> just like any other logback 
-    component.</p>
-      
-    <p>A receiver can either listen passively for connections from
-    remote <code>SocketAppender</code> components acting as clients, 
-    or it can assume the client role, initiating a connection to a 
-    remote appender acting as a server.  The receiver components 
-    shipped with Logback include full support for logging event 
-    delivery over the Secure Sockets Layer (SSL).</p>
-
-    <p>All of the new socket-based receiver and appender components were 
-    contributed by Carl Harris.  See 
-    <a href="manual/receivers.html">Receivers</a> in the Logback Manual 
-    for more information on configuring receiver components.  See 
-    <a href="manual/appenders.html#SocketAppender">SocketAppender</a> and
-    <a href="manual/appenders.html#serverSocketAppender">ServerSocketAppender</a>
-    for information on configuring appenders as event sources for
-    receiver components.</p>
-
-    <p><code>RollingFileAppender</code> will now detect when <span
-    class="option">file</span> property collides with <span
-    class="option">fileNamePattern</span>, emit <a
-    href="codes.html#rfa_collision">an error message</a> and refuse to
-    initialize. This was requested in <a
-    href="http://jira.qos.ch/browse/LOGBACK-796">LOGBACK-796</a> by
-    Karl Pietrzak who also provided a patch.
-    </p>
-
-    <p>In configuration files, the <code><include></code> element
-    now admits the <span class="attr">optional</span> attribute. This
-    fixes <a
-    href="http://jira.qos.ch/browse/LOGBACK-230">LOGBACK-230</a>
-    reported by Attila Kiraly. Many thanks to Tommy Becker who
-    contributed a patch.</p>
-
-    <p>In response to <a
-    href="http://jira.qos.ch/browse/LOGBACK-829">LOGBACK-829</a>,
-    serialization of <code>Logger</code> instances has been
-    significantly simplified and much unnecessary bloat removed. As an
-    added bonus, the new serialization of <code>Logger</code> objects
-    is also compatible with serialization streams using older Logger
-    instances. <code>Logger</code> instances serialized by logback
-    1.0.11 and earlier can be read by logback version 1.0.12 and later
-    and <em>vice-versa</em>.
-    </p>
-
-    <p>The code detecting whether Groovy is available on the class
-    path deals with the case where logback binaries are installed as
-    endorsed libraries. This fixes <a
-    href="http://jira.qos.ch/browse/LOGBACK-831">LOGBACK-831</a>.
-    </p>
-
-    <p class="highlight">Groovy configurator no longer supports
-    <code>SiftingAppender</code>.</p>
-
-    <p>In response to <a
-    href="http://jira.qos.ch/browse/LOGBACK-244">LOGBACK-244</a>, <a
-    href="http://jira.qos.ch/browse/LOGBACK-724">LOGBACK-724</a> and
-    in particular patches provided by Tommy Becker and David Roussel
-    component tracking code has been simplified and completely
-    re-written. <code>SiftingAppender</code> now supports the <a
-    href="manual/appenders.html#siftTimeout">timeout</a> and <a
-    href="manual/appenders.html#siftMaxAppenderCount">maxAppenderCount</a>
-    parameters. As a direct consequence of modifications to component
-    tracking code, the groovy configurator no longer supports
-    <code>SiftingAppender</code>.</p>
-
-    <p>SiftingAppender now propagates properties defined elsewhere in
-    the configuration file into the configuration process of nested
-    appenders. This fixes <a
-    href="http://jira.qos.ch/browse/LOGBACK-833">LOGBACK-833</a> with
-    David Roussel providing the appropriate patch.
-    </p>
-
-    <p>As all other actions affecting properties,
-    <code>TimestampAction</code> now inserts the user-specified
-    property into the local scope by default. The property was
-    inserted into the context scope in earlier versions of logback.
-    This fixes <a
-    href="http://jira.qos.ch/browse/LOGBACK-835">LOGBACK-835</a> with
-    David Roussel providing the appropriate patch.
-    </p>
-
-    <p>Logback is now able to retrieve the name of localhost when
-    running under OS X and Java 7. This issue was reported by <a
-    href="http://jira.qos.ch/browse/LOGBACK-749">LOGBACK-749</a> by
-    Oliver Schrenk with patches provided by Ralph Goers and Pavel
-    Valodzka.
-    </p>
-
-    <p>The <a href="manual/layouts.html#mdc">mdc</a> converter can now
-    handle default values. This feature was requested in <a
-    href="http://jira.qos.ch/browse/LOGBACK-246">LOGBACK-246</a> by
-    Michael Osipov with Denis Bazhenov providing a patch.
-    </p>
-
-    <p><code>DBAppender</code> in logback-classic module no longer
-    assumes that caller information is always available. This fixes <a
-    href="http://jira.qos.ch/browse/LOGBACK-805">LOGBACK-805</a>
-    reported by Daris Cooper who also provided a corrective patch.</p>
-
-    <p>In order to simplify our build, several unit tests have been
-    ported from Scala to Java. It follows that logback no longer
-    depends on Scala, not even during the test phase of the build.</p>
-
-    <h3>25th of March, 2013 - Release of version 1.0.11</h3>
-
-
-    <p>Under Unix*, the basic/quick file rename method supplied by
-    Java does not work if the source and target files are on different
-    file systems. This problem was reported in <a
-    href="http://jira.qos.ch/browse/LOGBACK-108">LOGBACK-108</a> by
-    Daniel Potter. In order to deal with this issue, logback now will
-    perform rename by copying if the source and target files are on
-    different file systems and the host JDK is version 1.7 or
-    later. See also the related <a
-    href="codes.html#renamingError">error code</a>.</p>
-
-
-    <p>The "cn" conversion word now correctly maps to
-    <code>ContextNameConverter</code> class. This fixes <a
-    href="http://jira.qos.ch/browse/LOGBACK-463">LOGBACK-463</a>
-    reported by Michael Osipov with Mark A. Ziesemer providing the
-    appropriate patch.
-    </p>
-
-    <p>Added gray to the list of <a
-    href="manual/layouts.html#coloring">ANSI colors supported by
-    logback</a>. The relevant pull request was kindly provided by
-    Craig P. Motlin.</p>
-
-    <p>The <code>discoverConnectionProperties()</code> method in class
-    <code>ConnectionSourceBase</code> no longer leaks
-    connections. This fixes <a
-    href="http://jira.qos.ch/browse/LOGBACK-798">LOGBACK-798</a>
-    reported by Sayevskiy Viacheslav. Many thanks to Ivan
-    (Wee-Willie-Winkie) who contributed the appropriate fix.
-    </p>
-
-    <p>In logback-access, more correct determination of whether
-    contents of an <code>HttpServletRequest</code> are URL encoded or
-    not. The <a href="https://github.com/qos-ch/logback/pull/71">bug
-    fix</a> was submitted by David Schneider. The same issue was later
-    independently reported by Grzegorz Kuligowski in <a
-    href="http://jira.qos.ch/browse/LOGBACK-814">LOGBACK-814</a>.</p>
-
-    <p>Both <code>SocketAppenderBase</code> and
-    <code>SimpleSocketServer</code> now use a socket factory to create
-    sockets. These changes were asked in <a
-    href="http://jira.qos.ch/browse/LOGBACK-815">LOGBACK-815</a> and
-    <a href="http://jira.qos.ch/browse/LOGBACK-816">LOGBACK-816</a> by
-    Carl Harris who also contributed the relevant patch.
-    </p>
-
-    <hr width="80%" align="center" />
-
-    <h3>15th of March, 2013 - Release of version 1.0.10</h3>
-
-    <p>Upgraded the (optional) groovy dependency to version 2.0.7
-    (from 2.0.0).</p>
-
-    <p>The logger cache field in <code>LoggerContext</code> now uses a
-    <code>ConcurrentHashMap</code> instead of a regular
-    <code>HashMap</code>. This dramatically improves the speed of
-    logger retrieval and incidentally fixes <a
-    href="http://jira.qos.ch/browse/LOGBACK-142">LOGBACK-142</a>.
-    </p>
-
-    <p>In <code>SyslogAppender</code> allow <a
-    href="manual/appenders.html#syslogSuffixPattern">suffixPattern</a>
-    to begin with literal text. This issue was reported Bruno Polaco
-    in <a href="http://jira.qos.ch/browse/LOGBACK-782">LOGBACK-782</a>
-    who also provided the relevant patch.
-    </p>
-    
-    <p>In order to reduce unnecessary boilerplate several common types
-    and packages are now <a
-    href="manual/groovy.html#AutomaticImports">imported
-    automatically</a>. This feature was contributed by Joris
-    Kuipers.</p>
-
-    <p>Computation of caller information now takes into account Groovy
-    frames (if nunning under Groovy). This fixes <a
-    href="http://jira.qos.ch/browse/LOGBACK-811">LOGBACK-811</a>.</p>
-
-  
-  
-    <hr width="80%" align="center" />
-
-    <h3>December 5th, 2012 - Release of version 1.0.9</h3>
-
-    <p>Removed an erroneous compile-time dependency on Tomcat in the
-    logback-classic module. This issue was reported by Arnaud
-    Heritier.</p>
-
-    <hr width="80%" align="center" />
-
-    <h3>December 4th, 2012 - Release of version 1.0.8</h3>
-
-    <div class="breaking">
-      <h4>logback-classic updated to use SLF4J version 1.7.2 instead
-      of version 1.6.6.</h4>
-      <p>The logback-classic module now uses SLF4J version 1.7.2
-      instead of version 1.6.6. This only impacts projects running
-      under an OSGi platform as SLF4J versions 1.7.x and 1.6.x are
-      100% binary compatible.</p>
-    </div>
-
-    <p>Fixed incorrect <code>BufferStream</code> assignment after
-    recovery in <code>ResilientFileOutputStream</code>. This issue was
-    reported in <a
-    href="http://jira.qos.ch/browse/LOGBACK-765">LOGBACK-765</a> by
-    David Markwick.
-    </p>
-
-    <p>Fixed incorrect parsing of variables in case of colon character
-    followed by a dollar character. This issue was reported in <a
-    href="http://jira.qos.ch/browse/LOGBACK-744">LOGBACK-744</a>.</p>
-
-    <p><code>SyslogAppender</code> now sends out the header line of
-    stack traces. This issue was reported <a
-    href="http://jira.qos.ch/browse/LOGBACK-411">LOGBACK-411</a> and
-    separately as <a
-    href="http://jira.qos.ch/browse/LOGBACK-750">LOGBACK-750</a>.</p>
-
-    <p>A <code>StatusListener</code> implementing
-    <code>LifeCycle</code> interface was not started if specified via
-    the <code>logback.statusListenerClass</code> system property. This
-    issue was reported in <a
-    href="http://jira.qos.ch/browse/LOGBACK-767">LOGBACK-767</a> by
-    Adam Sokowicz.
-    </p>
-
-    <p>In order to avoid duplication, automatic status printing will
-    be disabled if the user explicitly registers a status
-    listerner.</p>
-
-    <p>Added <code>OnErrorConsoleStatusListener</code> to print status
-    messages on the error console, i.e. on System.err. This feature
-    was requested in <a
-    href="http://jira.qos.ch/browse/LOGBACK-292">LOGBACK-292</a> by
-    Abraham Lin. </p>
-
-    <p>Added <code>NopStatusListener</code> class which simply drops
-    incoming status messages. By <a
-    href="manual/configuration.html#logback.statusLC">explicitly
-    registering</a> a <code>NopStatusListener</code> listener,
-    automatic status printing can be turned off.
-    </p>
-
-
-    <hr width="80%" align="center" />
-
-    <h3>24th of August, 2012 - Release of version 1.0.7</h3>
-
-    <div class="breaking">
-      <h4>Janino library upgraded to version 2.6.1.</h4>
-
-      <p>As of Janino version 2.6.0, in addition to
-      <em>janino.jar</em>, <em>commons-compiler.jar</em> needs to be
-      on the class path as well. Please see the <a
-      href="setup.html#janino">Janino setup</a> instructions.</p>
-    </div>
-    
-    <p>
-    </p>
-
-    <div class="breaking">
-      <h4>Groovy dependency upgraded to version 2.0.0.</h4>
-
-      <p>Please see the <a href="setup.html#groovy">Groovy setup</a>
-      instructions.</p>
-    </div>
-
-    <p>The code handling variable substitution has been completely
-    re-written. As requested in <a
-    href="http://jira.qos.ch/browse/LOGBACK-729">LOGBACK-729</a>,
-    variables can be now be nested arbitrarily, even within the
-    default value section. For example,
-    <code>${a${b:-c}:-${d:-e}}</code> is now a valid logback variable
-    expression yielding "e", assuming variables with the keys 'd', 'b'
-    and 'ac' are undefined. The new variable substitution code is
-    designed to be backward compatible with existing configuration
-    files.
-    </p>
-    
-
-    <p>Substitution properties are now correctly recognized by <span
-    class="attr">scan</span> and <span class="attr">scanPeriod</span>
-    attributes of <code><configuration></code> element in
-    configuration files. This fixes <a
-    href="http://jira.qos.ch/browse/LOGBACK-396">LOGBACK-396</a>
-    reported by Oh Chin Boon</p>
-
-    <p>The color-related conversion words now set the default color
-    correctly. Xu Huisheng provided the relavant patch.
-    </p>
-    
-    <p>Fixed a race-condition in <code>AsyncAppender</code> and its
-    worker thread. This issue was reported in <a
-    href="http://jira.qos.ch/browse/LOGBACK-720">LOGBACK-720</a> by
-    Arnd Hannemann who also supplied the relevant patch.</p>
-
-
-    <p>If a <code>PropertyDefiner</code> implements
-    <code>LifeCycle</code>, then its <code>start()</code> method will
-    now be invoked.</p>
-
-    <p>Added the <span class="prop">includeCallerData</span> property
-    in <code><a
-    href="manual/appenders.html#smtpIncludeCallerData">SMTPAppender</a></code>
-    to precompute caller data before storing events for future
-    transmission. This property addresses <a
-    href="http://jira.qos.ch/browse/LOGBACK-734">LOGBACK-734</a>
-    reported by Patrick Hogarty.
-    </p>
-    
-    <hr width="80%" align="center" />
-
-    <h3>7th of June, 2012 - Release of version 1.0.6</h3>
-
-    <p><a
-    href="manual/appenders.html#SMTPAppender"><code>SMTPAppender</code></a>
-    now supports the retrieval of a <code>javax.mail.Session</code>
-    resource from JNDI. This feature was requested in <a
-    href="http://jira.qos.ch/browse/LBCLASSIC-332">LBCLASSIC-332</a>
-    by Hrotko Gabor.</p>
-
-    <p>Listeners passed to <code>statusListener()</code> method in
-    <code>GafferConfigurator</code> (the groovy configurator) are now
-    correctly started.</p>
-
-    <hr width="80%" align="center" />
-
-    <h3>6th of June, 2012 - Release of version 1.0.5</h3>
-
-    <p><a
-    href="manual/appenders.html#ConsoleAppender"><code>ConsoleAppender</code></a>
-    can now activate the <a href="http://jansi.fusesource.org">Jansi
-    library</a> for ANSI color code support on Windows
-    systems. Unix-based operating systems such as Linux and Mac OS X
-    already support ANSI color codes by default.</p>
-
- 
-    <p><code>PatternLayout</code> now supports <a
-    href="manual/layouts.html#coloring">composite conversion
-    specifiers for coloring</a>.</p>
 
     <hr width="80%" align="center" />
 
@@ -655,8 +41,8 @@
 
     <p><code>SMTPAppender</code> now admits the <span
     class="prop">asynchronousSending</span> property, set to 'true' by
-    default. However, it can be set to 'false' for synchronous email
-    transmission. This property was requested in <a
+    default. However, it can be set to 'false' for syncronous email
+    transmisison. This property was requested in <a
     href="http://jira.qos.ch/browse/LBCLASSIC-323">LBCLASSIC-323</a>
     by Patrick Houk.</p>
 
@@ -727,8 +113,8 @@
     </p>
 
     <p><code>SMTPAppender</code> failed to transmit messages under JDK
-    1.5. After some investigation, Dave discovered that this was due to
-    setting the <code>corePoolSize</code> parameter of the relevant
+    1.5. After some investigation, Dave dicovered that this was due to
+    setting the <code>corePoolSize</code> parameter of the relavant
     <code>ThreadPoolExecutor</code> to 0. Setting
     <code>corePoolSize</code> to a higher value, e.g. 1, under JDK 1.5
     solves the problem and fixes <a
@@ -746,7 +132,7 @@
 
     <h3>26th of April, 2012 - Release of version 1.0.2</h3>
 
-    <div class="breaking">
+    <div style="border: 1px solid #F44; background-color: #FED; padding-left: 1ex; padding-right: 1ex;">
 
     <h4><span class="label">Breaking change partially reverted in
     1.0.3</span><br/>By default <code>PatternLayout</code> will now output
@@ -808,7 +194,7 @@
     name pattern of <a
     href="manual/appenders.html#TimeBasedRollingPolicy">TimeBasedRollingPolicy</a>. Auxiliary
     %d tokens must be marked as such by passing the AUX
-    parameter. This feature was requested in <a
+    paramater. This feature was requested in <a
     href="http://jira.qos.ch/browse/LBCORE-242">LBCORE-242</a> by
     Thomas Corte.</p>
 
@@ -852,7 +238,7 @@
     href="http://jira.qos.ch/browse/LBACCESS-17">LBACCESS-17</a>
     reported by Grzegorz Grzybek.</p>
 
-    <div class="breaking">
+    <div style="border: 1px solid #F44; background-color: #FED; padding-left: 1ex; padding-right: 1ex;">
 
     <h4>Breaking change: properties are no longer automatically
     inserted into the context</h4>
@@ -924,7 +310,7 @@
 
     <p>Logback-classic now supports printing stack traces "root cause
     first" instead of the standard "root cause last". See the
-    documentation for <a
+    documentaiton for <a
     href="manual/layouts.html#rootException">%rootException</a>
     converter for further details. The <code>%rootException</code>
     converter was contributed by Tomasz Nurkiewicz in relation with <a
@@ -949,7 +335,7 @@
 
     <p><code>LogbackMDCAdapter</code> now synchronizes over its thread
     local map. This prevents
-    <code>ConcurrentModificationException</code> from occurring while a
+    <code>ConcurrentModificationException</code> from occuring while a
     child thread copies the map from the parent. This fixes <a
     href="http://jira.qos.ch/browse/LBCLASSIC-289">LBCLASSIC-289</a>
     reported by Josh Oddman.</p>
@@ -1035,19 +421,19 @@
 
     <h3>January 25th, 2011 - Release of version 0.9.28</h3>
 
-    <div class="breaking">
- 
-      <h4>Breaking change: In the Context interface, the previously
-      misspelled property <code>bithTime</code> is now renamed as
-      <code>birthTime</code>.</h4>
-      
-      <p>In the <a
-      href="apidocs/ch/qos/logback/core/Context.html">Context</a>
-      interface, the previously misspelled property
-      <code>bithTime</code> is now renamed as
-      <code>birthTime</code>. This is a backward-incompatible
-      change. All pre-existing references to "bithTime" property now
-      need to referenced as "birthTime".</p>
+    <div style="border: 1px solid #F44; background-color: #FED; padding-left: 1ex; padding-right: 1ex;">
+  
+    <h4>Breaking change: In the Context interface, the previously
+    misspelled property <code>bithTime</code> is now renamed as
+    <code>birthTime</code>.</h4>
+
+    <p>In the <a
+    href="apidocs/ch/qos/logback/core/Context.html">Context</a>
+    interface, the previously misspelled property
+    <code>bithTime</code> is now renamed as
+    <code>birthTime</code>. This is a backward-incompatible
+    change. All pre-existing references to "bithTime" property now
+    need to referenced as "birthTime".</p>
     </div>
 
     <p>Fixed <a href="http://jira.qos.ch/browse/LBCLASSIC-238">issue
@@ -1291,7 +677,7 @@
     <h3>March 24, 2010 - Release of version 0.9.19</h3>
 
 
-    <div class="breaking">
+    <div style="border: 1px solid #F44; background-color: #FED; padding-left: 1ex; padding-right: 1ex;">
 
     <h4>Breaking change: FileAppender now expects an Encoder</h4>
 
@@ -1323,8 +709,7 @@
 
     <br/>
 
-    <div class="breaking">
-
+    <div style="border: 1px solid #F44; background-color: #FED; padding-left: 1ex; padding-right: 1ex;">
 
       <h4>Breaking change: DBAppender in logback-classic expects four
       additional columns
@@ -1754,7 +1139,7 @@ ALTER TABLE logging_event ADD arg3 VARCHAR(254);</pre>
 
     <h3>29th of December 2008 - Release of version 0.9.14</h3>
 
-    <p>Corrected a serious dead-lock problem occurring during
+    <p>Corrected a serious dead-lock problem occuring during
     configuration. It was reported in <a
     href="http://jira.qos.ch/browse/LBCLASSIC-81">LBCLASSIC-81</a> by
     Holger Mense.</p>
diff --git a/logback-site/src/site/pages/reasonsToSwitch.html b/logback-site/src/site/pages/reasonsToSwitch.html
index c6f150a..f8fd8f8 100644
--- a/logback-site/src/site/pages/reasonsToSwitch.html
+++ b/logback-site/src/site/pages/reasonsToSwitch.html
@@ -10,11 +10,9 @@
     <link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
 
   </head>
-  <body onload="decorate();">
+  <body>
     <script type="text/javascript">prefix='';</script>
     <script src="templates/header.js" type="text/javascript"></script>
-    <script type="text/javascript" src="js/jquery-min.js"></script>
-    <script type="text/javascript" src="js/decorator.js"></script>
     <div id="left">
       <noscript>Please turn on Javascript to view this menu</noscript>
       <script src="templates/left.js" type="text/javascript"></script>
@@ -23,24 +21,20 @@
 		
 		<h2>Reasons to prefer logback over log4j</h2>
 
-    <p>Logback brings a very large number of improvements over log4j,
-    big and small. They are too many to enumerate exhaustively.
-    Nevertheless, here is a non-exhaustive list of reasons for
-    switching to logback from log4j. Keep in mind that logback is
-    conceptually very similar to log4j as both projects were founded
-    by the same developer. If you are already familiar with log4j, you
-    will quickly feel at home using logback. If you like log4j, you
-    will probably love logback.</p>
+    <p>Here is a non-exhaustive list of reasons for switching to
+    logback from log4j. Keep in mind that logback is conceptually very
+    similar to log4j as both projects were founded by the same
+    developer. If you are already familiar with log4j, you will
+    quickly feel at home using logback.</p>
 
-
-    <h3 class="doAnchor" name="fasterImpl">Faster implementation</h3>
+    <h3><a name="fasterImpl" href="#fasterImpl">Faster implementation</a></h3>
 
     <p>Based on our previous work on log4j, logback internals have
     been re-written to perform about ten times faster on certain
     critical execution paths. Not only are logback components faster,
     they have a smaller memory footprint as well.</p>
 
-    <h3 class="doAnchor" name="tdd">Extensive battery of tests</h3>
+    <h3><a name="tdd" href="#tdd">Extensive battery of tests</a></h3>
 
     <p>Logback comes with a very extensive battery of tests developed
     over the course of several years and untold hours of work. While
@@ -51,8 +45,8 @@
     conditions.
     </p>
     
-    <h3 class="doAnchor" name="slf4j">logback-classic speaks SLF4J
-    natively</h3>
+    <h3><a name="slf4j" href="#slf4j">logback-classic speaks SLF4J
+    natively</a></h3>
 
     <p>Since the <code>Logger</code> class in logback-classic
     implements the SLF4J API natively, you incur zero overhead when
@@ -65,21 +59,21 @@
     in switching logging frameworks.
     </p>
     
-    <h3 class="doAnchor" name="docs">Extensive documentation</h3>
+    <h3><a name="docs" href="#docs">Extensive documentation</a></h3>
     
-    <p>Logback ships with detailed and constantly updated
+    <p>Logback ships with over two hundred pages of constantly updated
     documentation.</p>
 
-    <h3 class="doAnchor" name="DSL">Configuration files in XML or
-    Groovy</h3>
+    <h3><a name="DSL" href="#DSL">Configuration files in XML or
+    Groovy</a></h3>
 
     <p>The traditional way of configuring logback is via an XML
     file. Most of the examples in the documentation use this XML
     syntax. However, as of logback version 0.9.22, <a
     href="manual/groovy.html">configuration files written in
     Groovy</a> are also supported. Compared to XML, Groovy-style
-    configuration is more intuitive, consistent and has a shorter
-    syntax.
+    configuration is more intuitive, consistent and has a much
+    shorter syntax.
     </p>
 
     <p>
@@ -89,21 +83,23 @@
     logback.groovy</a>.
     </p>
 
-    <h3 class="doAnchor" name="autoScan">Automatic reloading of
-    configuration files</h3>
+    <p>We also plan to support configuration files written in
+    Scala.</p>
+    
+
+    <h3><a name="autoScan" href="#autoScan">Automatic reloading of
+    configuration files</a></h3>
 
     <p>Logback-classic can <a
     href="manual/configuration.html#autoScan">automatically reload its
     configuration file upon modification</a>. The scanning process is
-    fast, contention-free, and dynamically scales to millions of
-    invocations per second spread over hundreds of threads. It also
-    plays well within application servers and more generally within
-    the JEE environment as it does <em>not</em> involve the creation
-    of a separate thread for scanning.
-   </p>
+    both fast and safe as it does <em>not</em> involve the creation of
+    a separate thread for scanning. This technical subtlety ensures
+    that logback plays well within application servers and more
+    generally within the JEE environment.</p>
 
-    <h3 class="doAnchor" name="grace">Graceful recovery from I/O
-    failures</h3>
+    <h3><a name="grace" href="#grace">Graceful recovery from I/O
+    failures</a></h3>
 
     <p>Logback's <code>FileAppender</code> and all its sub-classes,
     including <code>RollingFileAppender</code>, can gracefully recover
@@ -114,8 +110,8 @@
     from the previous error condition.
     </p>
     
-    <h3 class="doAnchor" name="maxHistory">Automatic removal of old
-    log archives</h3>
+    <h3><a name="maxHistory" href="#maxHistory">Automatic removal of
+    old log archives</a></h3>
 
     <p>By setting the <span class="option">maxHistory</span> property
     of <a
@@ -129,8 +125,8 @@
     files older than 12 months will be automatically removed.
     </p>
 
-    <h3 class="doAnchor" name="compression">Automatic compression of
-    archived log files</h3>
+    <h3><a name="compression" href="#compression">Automatic
+    compression of archived log files</a></h3>
 
     <p><a
     href="manual/appenders.html#RollingFileAppender">RollingFileAppender</a>
@@ -140,7 +136,7 @@
     duration of the compression.
     </p>
 
-    <h3 class="doAnchor" name="prudent">Prudent mode</h3>
+    <h3><a name="prudent" href="#prudent">Prudent mode</a></h3>
 
     <p>In <a href="manual/appenders.html#prudent">prudent mode</a>,
     multiple <code>FileAppender</code> instances running on multiple
@@ -149,15 +145,15 @@
     <code>RollingFileAppender</code>.
     </p>
 
-    <h3 class="doAnchor" name="lilith">Lilith</h3>
+    <h3><a name="lilith" href="#lilith">Lilith</a></h3>
 
     <p><a href="http://lilith.huxhorn.de/">Lilith</a> is a logging and
     access event viewer for logback. It is comparable to log4j's
     chainsaw, except that Lilith is designed to handle large amounts of
     logging data without flinching.</p>
   
-    <h3 class="doAnchor" name="conditional">Conditional processing of
-    configuration files</h3>
+    <h3><a name="conditional" href="#conditional">Conditional
+    processing of configuration files</a></h3>
 
     <p>Developers often need to juggle between several logback
     configuration files targeting different environments such as
@@ -172,7 +168,7 @@
     </p>
 
 
-    <h3 class="doAnchor" name="filters">Filters</h3>
+    <h3><a name="filters" href="#filters">Filters</a></h3>
 
     <p>Logback comes with a wide array of <a
     href="manual/filters.html">filtering capabilities</a> going much
@@ -205,7 +201,7 @@
     </p>
     
 
-    <h3 class="doAnchor" name="sift">SiftingAppender</h3>
+    <h3><a name="sift" href="#sift">SiftingAppender</a></h3>
     
     <p><a
     href="manual/appenders.html#SiftingAppender">SiftingAppender</a>
@@ -216,8 +212,9 @@
     user go into distinct log files, one log file per user.
     </p>
     
-    <h3 class="doAnchor" name="packagingData">Stack traces with
-    packaging data</h3>
+    <h3><a name="packagingData" href="#packagingData">Stack traces
+    with packaging data</a>
+    </h3>
 
     <p>When logback prints an exception, the stack trace will include
     packaging data. Here is a sample stack trace generated by the <a
@@ -255,9 +252,9 @@ java.lang.Exception: 99 is invalid
     their IDE</a>.
     </p>
 
-    <h3 class="doAnchor" name="logbackAccess">Logback-access,
+    <h3><a name="logbackAccess" href="#logbackAccess">Logback-access,
     i.e. HTTP-access logging with brains, is an integral part of
-    logback</h3>
+    logback</a></h3>
 
     <p>Last but not least, the logback-access module, part of the
     logback distribution, integrates with Servlet containers such as
@@ -266,7 +263,7 @@ java.lang.Exception: 99 is invalid
     design, all the logback-classic features you love are
     available in logback-access as well.</p>
 
-    <h3 class="doAnchor" name="inSummary">In summary</h3>
+    <h3><a name="inSummary" href="#inSummary">In summary</a></h3>
 
     <p>We have listed a number of reasons for preferring logback over
     log4j. Given that logback builds upon on our previous work on
diff --git a/logback-site/src/site/pages/recipes/emailPerTransaction.html b/logback-site/src/site/pages/recipes/emailPerTransaction.html
index 203ec07..e6d60c1 100644
--- a/logback-site/src/site/pages/recipes/emailPerTransaction.html
+++ b/logback-site/src/site/pages/recipes/emailPerTransaction.html
@@ -358,7 +358,7 @@ MDC.put("txId", transactionId); </pre>
      buffers</a>.  </p>
 
      <p>To deal with this problem, we instruct SMTPAppender to discard
-     the appropriate buffer at the end of each transaction. This is done by
+     apprioate buffer at the end of each transaction. This is done by
      logging an event marked as "FINALIZE_SESSION". Here is a modified
      version of <code>PrimeAction</code> which marks the end of a
      transaction with "FINALIZE_SESSION".
@@ -415,7 +415,7 @@ public class PrimeAction extends Action {
       <defaultValue>default</defaultValue>
     </discriminator>
 
-    <b><cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker"></b>
+    <b><cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTrackerImpl"></b>
       <b><maxNumberOfBuffers>512</maxNumberOfBuffers></b>
     <b></cyclicBufferTracker></b>
 
diff --git a/logback-site/src/site/pages/setup.html b/logback-site/src/site/pages/setup.html
index df76d03..9dcbca4 100644
--- a/logback-site/src/site/pages/setup.html
+++ b/logback-site/src/site/pages/setup.html
@@ -7,33 +7,29 @@
     <link rel="stylesheet" type="text/css" href="css/common.css" />
     <link rel="stylesheet" type="text/css" href="css/screen.css" media="screen" />
     <link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
-    <link rel="stylesheet" type="text/css" href="css/prettify.css" media="screen" />
+
   </head>
-  <body onload="prettyPrint(); decorate();">
+  <body>
     <script type="text/javascript">prefix='';	</script>
 
-    <script type="text/javascript" src="templates/header.js"></script>
-    <script type="text/javascript" src="js/prettify.js"></script>
-    <script type="text/javascript" src="js/jquery-min.js"></script>
-    <script type="text/javascript" src="js/decorator.js"></script>
-    
+    <script src="templates/header.js" type="text/javascript"></script>
     <div id="left">
-      <script type="text/javascript" src="templates/left.js"></script>
+      <script src="templates/left.js" type="text/javascript"></script>
     </div>
   
     <div id="content">
 	
 	
-    <h2 class="doAnchor">Classpath Setup</h2>
+    <h2>Classpath Setup</h2>
 
     <p>In order to run the examples provided in the documentation, you
     need to add the following jars to your class path:
     </p>
 
     <ul>
-      <li>logback-core-${project.version}.jar</li>
-      <li>logback-classic-${project.version}.jar</li>
-      <li>logback-examples-${project.version}.jar</li>
+      <li>logback-core-${version}.jar</li>
+      <li>logback-classic-${version}.jar</li>
+      <li>logback-examples-${version}.jar</li>
       <li>slf4j-api-${slf4j.version}.jar</li>
     </ul>
     
@@ -44,8 +40,7 @@
     
 
 
-    <h3 class="doAnchor" name="commandLine">Running from the command
-    line</h3>
+    <h3><a href="">Running from the command line</a></h3>
     
     <p>Assuming your current directory is
     <em>$LOGBACK_HOME/logback-examples</em>, where
@@ -54,8 +49,8 @@
     <em>chapters.introduction.HelloWord1</em> with the following command:
     </p>
 
-    <p class="source">java -cp lib/slf4j-api-${slf4j.version}.jar;../logback-core-${project.version}.jar;\
- ../logback-classic-${project.version}.jar;logback-examples-${project.version}.jar\
+    <p class="source">java -cp lib/slf4j-api-${slf4j.version}.jar;../logback-core-${version}.jar;\
+ ../logback-classic-${version}.jar;logback-examples-${version}.jar\
  chapters.introduction.HelloWorld1</p>
 
    <p>It is more convenient to set the CLASSPATH environment variable
@@ -78,8 +73,8 @@
    <em>$LOGBACK_HOME/logback-examples</em> directory.
    </p>
 
-   <h3 class="doAnchor" name="SMTP"><code>SMTPAppender</code> requires
-   JavaMail API</h3>
+   <h3><a name="SMTP" href="#SMTP"><code>SMTPAppender</code> requires
+   JavaMail API</a></h3>
 
    <p><code>SMTPAppender</code> related examples require the JavaMail
    API version 1.4 or later. Once you <a
@@ -87,162 +82,92 @@
    JavaMail</a>, you need to place <em>mail.jar</em> on your class
    path.</p>
    
-   <p>Here is the corresponding Maven dependency declaration for your
-   convenience.</p>
-
-
 
-   <pre class="prettyprint source"><!-- The javax.activation:activation:1.1 dependency will be -->
-<!-- automatically pulled in by Maven's transitivity rules -->
-<dependency>
-  <groupId>javax.mail</groupId>
-  <artifactId>mail</artifactId>
-  <version>${javax.mail.version}</version>
-</dependency></pre>
-
-   <h3 class="doAnchor" name="groovy"><code>GEventEvaluator</code> and
-   <em>logback.groovy</em> configuration files require the Groovy
-   runtime</h3>
+   <h3><a name="gEventEvaluator"
+   href="#gEventEvaluator"><code>GEventEvaluator</code> requires the
+   Groovy runtime</a></h3>
    
    <p><code>GEventEvaluator</code> depends on the Groovy runtime. It
-   was tested with Groovy version ${groovy.version}. Similarly, as the
-   name indicates <a href="manual/groovy.html">groovy
-   configuration</a> files require the groovy runtime to be present on
-   your class path.
+   was tested with Groovy version 1.7.2.
    </p>
    
-   <p>Here is the corresponding Maven dependency declaration for your
-   convenience.
-   </p>
-
 
-   <pre class="prettyprint source"><dependency>
-  <groupId>org.codehaus.groovy</groupId>
-  <artifactId>groovy-all</artifactId>
-  <version>${groovy.version}</version>
-</dependency></pre>
-
-
-   <h3 class="doAnchor" name="janino">Conditional processing and
-   <code>JaninoEventEvaluator</code> require the Janino library</h3>
+   <h3><a name="janino" href="#janino">Evaluators and more
+   specifically <code>JaninoEventEvaluator</code> require
+   Janino</a></h3>
    
-   <p><a href="manual/configuration.html#conditional">Conditional
-   processing</a> in configuration files requires the <a
-   href="http://docs.codehaus.org/display/JANINO/Home"><b>Janino
-   library</b></a>. Moreover, the evaluator examples based on
-   <code>JaninoEventEvaluator</code> require Janino as well.  Once you
-   download Janino, simply place <em>commons-compiler.jar</em> and
-   <em>janino.jar</em> on your application's class path.
-   </p>
-
-   <p><span class="label notice">Don't forget</span> As of Janino
-   version 2.6.0, in addition to <em>janino.jar</em>,
-   <em>commons-compiler.jar</em> needs to be on the class path as well.</p>
-
-   <p>Here is the corresponding Maven dependency declaration for your
-   convenience.
-   </p>
-
-   <pre class="prettyprint source"><!-- The org.codehaus.janino:commons-compiler:${janino.version} dependency -->
-<!-- will be automatically pulled in by Maven's transitivity rules -->
-<dependency>
-  <groupId>org.codehaus.janino</groupId>
-  <artifactId>janino</artifactId>
-  <version>${janino.version}</version>
-</dependency></pre>
-
-
-
+   <p>The evaluator examples which are mostly based on
+   <code>JaninoEventEvaluator</code> require <a
+   href="http://docs.codehaus.org/display/JANINO/Home"><b>Janino</b></a>
+   version 2.5.10 or later. Once you have downloaded Janino, you need to
+   place <em>janino.jar</em> on your class path.</p>
    
     
 
-   <h3 class="doAnchor" name="ide">Building with an IDE</h3>
+   <h3><a name="ide" href="#ide">Building with an IDE</a></h3>
    
-   <p>If you wish to contribute to the project or just hack for fun,
-   you will probably want to import logback as a project into your
-   favorite IDE. Logback uses Maven as its build tool. Logback offers
-   a Groovy-based configurator so there is a dependency on the Groovy
-   language. It follows that your IDE should have plugins for Maven
-   and Groovy in order to <em>build</em> logback from your within
-   IDE. The Groovy dependency just mentioned is a <em>build-time</em>
-   dependency. The only mandatory logback dependency at runrime is the
-   JRE, unless of course you wish to use the Groovy configurator in
-   which case Groovy runtime will be a required dependency as
+   <p>If you wish to contribute to hack to the project or just hack it
+   for your own needs, you will probably want to import logback as a
+   project into your favorite IDE. Logback uses Maven as its build
+   tool. The Scala language is used in certain logback test
+   cases. Moreover, logback offers a Groovy-based configurator so
+   there is a dependency on the Groovy language as well. It follows
+   that your IDE should have plugins for Maven, Scala and Groovy in
+   order to <em>build</em> logback from your within IDE. The
+   Scala+Groovy dependecy just mentioned are <em>build-time</em>
+   dependencies. The only mandatory logback dependency at runrime is
+   the JRE, unless of course you wish to use the Groovy configurator
+   in which case Groovy runtime will be a required dependency as
    well. Also note that building from the command line is fairly
    trivial, the command 'mvn install' given from $LOGBACK_HOME folder
    should suffice. </p>
 
-   <p><span class="label">ask for help</span> Notwithstanding the
-   instructions below, if you have trouble building logback from the
-   sources, just ask for help on the logback-dev mailing list.</p>
-
-   <h3 class="doAnchor" name="idea">Building logback with IntelliJ
-   IDEA</h3>
+   <h3>Building logback with IntelliJ IDEA</h3>
 
    <p>Assuming you have the latest version of IntelliJ IDEA installed,
-   no additional plugin installation is necessary. IntelliJ IDEA
-   supports Maven as well as Groovy out of the box. You can import
-   logback into IDEA by selecting File→ New Project → Import
-   from external model→ Maven, then select $LOGBACK_HOME as the
-   Root directory. The import should finish successfully in a few
-   seconds.</p>
-
-   <h3 class="doAnchor" name="eclipse">Building with Eclipse</h3>
+   the only required additional plugin is the Scala plugin. IntelliJ
+   IDEA supports Maven as well as Groovy out of the box. Once you have
+   the Scala plugin installed, you can import logback into
+   IDEA. Select File→ New Project → Import from external
+   model→ Maven, then select $LOGBACK_HOME as the Root
+   directory. The import should finish successfully in a few
+   seconds. If you import logback before the scala-plugin is
+   installed, you would need to re-import logback as a project after
+   the Scala plugin is installed.</p>
+
+   <h3>Building with Eclipse</h3>
 
    <p>Building logback under Eclipse is a little trickier. Here are
    instructions for building logback under Eclipse in 61 easy steps.
    </p>
 
    <p>The author does not wish to unduly disparage
-   <code>m2eclipse</code>. However, as of this writing, that is
-   October 2011, it appears that the key to building logback under
-   Eclipse is to avoid using <code>m2eclipse</code>. If you have
+   <code>m2eclipse</code>. However, as of this writing that is October
+   2011, it appears that the key to building logback under Eclipse is
+   to avoid using <code>m2eclipse</code>. If you have
    <code>m2eclipse</code> installed, you can disable it by removing
-   the Maven Nature for a given project. In later versions of Eclipse,
-   m2eclipse is installed bu default. As of logback version 1.0.7, the
-   <em>pom.xml</em> file for logback-core now deactivates m2eclipse as
-   explained in <a
-   href="http://wiki.eclipse.org/M2E_plugin_execution_not_covered#ignore_plugin_goal">M2E
-   plugin wiki</a>.
-   </p>
-
-   <p>And without further ado here are the steps:
+   the Maven Nature for a given project. And without further ado here
+   are the steps:
    </p>
    
 
    <ol>
-     <li>Install Eclipse</li>
-
-<!--     <li>in <em>eclipse.ini</em> file modify the parameter "mx",
+     <li>Install Eclipse Indigo, aka Eclipse 3.7</li>
+     <li>in <em>eclipse.ini</em> file modify the parameter "mx",
      i.e. change -Xmx384m to -Xmx1384m</li>
--->
-
-     <li>Install the Groovy plugin for Eclipse. 
-
-       <ul>
-         <li>
-           <p>You first need to determine the update site appropriate
-           for your version of Eclipse. The list of available update
-           sites is available from <a
-           href="http://groovy.codehaus.org/Eclipse+Plugin">Groovy
-           project documentation</a>.
-           </p>
-           <p>For example, for Eclipse 4.2 (Juno) the URL of the
-           update site is
-           "http://dist.springsource.org/release/GRECLIPSE/e4.2/".
-           </p>
-         </li>
-         
-         <li>In Eclipse, select Help → Intall new Software →
-         Work with the update site you chose in the previous step and
-         then Select "Groovy-Eclipse Feature". Installation of other
-         plugins in particular "m2e Configurator for Groovy-Eclipse"
-         is <b>not</b> necessary
-         </li>
-       </ul>
-    </li>
 
+     <li>In Eclipse, select Help → Intall new Software →
+     Work with <a
+     href="http://dist.springsource.org/release/GRECLIPSE/e3.7/">http://dist.springsource.org/release/GRECLIPSE/e3.7/</a>
+     and then Select "Groovy-Eclipse Feature". Installation of other
+     plugins in particular "m2e Configurator for Groovy-Eclipse" is
+     <b>not</b> necessary</li>
 
+     <li>Similar to the previous step, install Scala IDE for Eclipse
+     plugin from <a
+     href="http://download.scala-ide.org/releases-29/2.0.0-beta">http://download.scala-ide.org/releases-29/2.0.0-beta</a>. Installation
+     of "JDT Weaving" or "Scala IDE for Eclipse Source feature" are
+     not necessary.</li>
 
      <li><pre>cd $LOGBACK_HOME</pre>
 
@@ -258,12 +183,18 @@
      in $LOGBACK_HOME</li>
 
      <li>In Eclipse, import the logback project: Import→
-     General→ Existing Projects into Workspace, select
+     General→ Existing Prokects into Workspace, select
      $LOGBACK_HOME folder for the import
      </li>   
+
+    
+     <li>In Eclipse, add the scala nature to logback-core project:
+     (right click on logback-core project→ Configure→ Add
+     Scala Nature)
+     </li>   
      
      <li>In Eclipse, remove the
-     logback-classic/target/generated-sources/groovy-stubs/main
+     logback-classic/target/generated-sources/groovy-sttubs/main
      directory from the list of source folders (logback-classic→
      project properties → Java Build Path)
      </li>   
@@ -279,10 +210,13 @@
      
    </ol>
 
+   <p>The above should also work for Helios (Eclipse 3.6). The only
+   difference is that the Groovy-Eclipse feature needs to be installed
+   from <a
+   href="http://dist.springsource.org/release/GRECLIPSE/e3.6/">http://dist.springsource.org/release/GRECLIPSE/e3.6/</a>.
+   </p>
 
-   <p>The above listed procedure has been last tested by the author
-   using Eclipse Juno on April 4th 2013.</p>
-
+	
    <script src="templates/footer.js" type="text/javascript"></script>
 </div>
 </body>
diff --git a/logback-site/src/site/pages/templates/creative.js b/logback-site/src/site/pages/templates/creative.js
index 78b2b40..abe2078 100644
--- a/logback-site/src/site/pages/templates/creative.js
+++ b/logback-site/src/site/pages/templates/creative.js
@@ -3,7 +3,7 @@ document.write('           cellspacing="0" width="70%">');
 document.write('      <tr>');
 document.write('        <td>        ');
 document.write('          <p class="author">');
-document.write('            Authors: Ceki Gülcü, Sébastien Pennec, Carl Harris');
+document.write('            Authors: Ceki Gülcü, Sébastien Pennec');
 document.write('          <br/>');
 document.write('          Copyright © 2000-2012, QOS.ch</p>');
 document.write('        </td>');
diff --git a/logback-site/src/site/pages/templates/footer.js b/logback-site/src/site/pages/templates/footer.js
index 0f4685b..e31068f 100644
--- a/logback-site/src/site/pages/templates/footer.js
+++ b/logback-site/src/site/pages/templates/footer.js
@@ -3,13 +3,11 @@ document.write('<table class="footer" border="0">')
 
 document.write('<tr>')
 
-document.write('<td valign="top">Copyright © 2013  <a href="http://www.qos.ch/">QOS.ch</a></td>')
+document.write('<td valign="top">Copyright © 2012  <a href="http://www.qos.ch/">QOS.ch</a></td>')
 
-document.write('  <td rowspan="2">');
-document.write('    <a href="http://twitter.com/qos_ch">');
-document.write('      <img alt="Follow @qos_ch" src="http://www.slf4j.org/images/follow_us.png" />');
-document.write('    </a>');
-document.write('  </td>');
+document.write('  <td rowspan="2">')
+document.write('    <script type="text/javascript" src="http://www.ohloh.net/p/13616/widgets/project_users.js"></script>')
+document.write('  </td>')
 
 
 document.write('</tr>')
diff --git a/logback-site/src/site/pages/templates/left.js b/logback-site/src/site/pages/templates/left.js
index cf769dd..de0b705 100644
--- a/logback-site/src/site/pages/templates/left.js
+++ b/logback-site/src/site/pages/templates/left.js
@@ -1,5 +1,4 @@
 
-document.write('<div class="menuGroup">');
 document.write('<p class="menu_header">Logback project</p>');
 document.write('<p class="menu"><a href="' + prefix + 'index.html">Introduction</a></p>');
 document.write('<p class="menu"><a href="' + prefix + 'download.html">Download</a></p>');
@@ -24,8 +23,4 @@ document.write('<p class="menu"><a href="http://logback.qos.ch/translator/">log4
 document.write('<p class="menu"><a href="http://logback.qos.ch/translator/asGroovy.html">logback.XML to Groovy</a>');
 
 document.write('</p>');
-document.write('</div>');
 
-document.write('<p/>');
-
-document.write('<div class="jobadd"><p><a href="'+prefix +'job.html">Your career<br/>@QOS.ch</a></p></div>');
\ No newline at end of file
diff --git a/logback-site/src/site/pages/volunteer.html b/logback-site/src/site/pages/volunteer.html
index 5a5fd36..a0964d3 100644
--- a/logback-site/src/site/pages/volunteer.html
+++ b/logback-site/src/site/pages/volunteer.html
@@ -22,48 +22,26 @@
   
     <h2>Call for volunteers</h2>
 
-    <p>We are looking for volunteers in the following areas.</p>
+    <p>We are looking for volunteers in the following areas (in order
+    of decreasing priority).</p>
 
     <ol>
-      <li><span class="label">top priority</span> <b>logback in 10 minutes</b> 
+      <li><b>logback in 10 minutes</b> 
       
-      <p>We are looking for a volunteer, preferably a native English
-      speaker, to write a short document describing logback for
-      beginners, entitled say "logback in 10 minutes". This document
-      is likely to be the most widely read document of the
-      project. Writing such a document is an excellent opportunity to
-      learn logback. Obviously, there would be plenty of editorial
-      help and guidance coming from the logback developers.
+      <p>We are looking for a volunteer to write a short document
+      describing logback for beginners, entitled say "logback in 10
+      minutes". This document is likely to be the most widely read
+      document of the project. Writing such a document is an excellent
+      opportunity to learn logback. Obviously, there would be plenty
+      of editorial help and guidance coming from the logback
+      developers.
       </p>
       </li>
 
-      <li><span class="label">high priority</span> <b>Proof reading the documentation</b>
-      <p>We are always looking for volunteers to proof-read the
-      documentation. Suggestions as to the design and look-and-feel of
-      the site are also welcome.</p>
-      </li>
-
-      <li><span class="label">medium priority</span> <b>Decoder:
-      parse log files and transform them into logging events</b>
-      
-      <p>This effort has been started under the <a
-      href="https://github.com/qos-ch/logback-decoder">logback-decoder</a>
-      project but has stalled. This problem is technically
-      interesting, has a well-defined scope and mostly independent of
-      the logback framework.
-      </p>
-      
-      </li>
+      <li><b>Write a tool for parsing log files</b>
 
-      <li><span class="label">medium priority</span> <b>Maintain the
-      groovy configurator</b>
-
-      <p>The Groovy configurator, aka Gaffer, although pretty cool, is
-      not getting the attention it deserves. The amount of code
-      involved, although not completely trivial, is far from
-      insurmountable. We are looking for a volunteer to take over
-      Gaffer.
-       </p>
+      <p>We are looking for a volunteer to write a tool for parsing
+      log files.</p>
       </li>
 
       <li><b>Improve OSGi support</b>
@@ -76,61 +54,16 @@
       <p>We are looking for volunteers for fixing logback
       bugs. Volunteering to solve bugs is a good way to learn about
       any project.
-      </p> 
-
-      <p>For those looking for highly technical challenges with
-      limited scope, have a look at various build failures observable
-      on <a href="http://logback.qos.ch/jenkins/">our Jenkins
-      instance</a>.
-      </p>
-
-      <p>Our build is quite stable but failures occur from time to
-      time on our Jenkins instance hosted on a relatively old
-      computer.</p>
-
-      <ul>
-
-        <li><a
-        href="http://logback.qos.ch/jenkins/job/logback/149/">build
-        #149</a> with test failure in <a
-        href="http://logback.qos.ch/jenkins/job/logback/ch.qos.logback$logback-classic/149/testReport/junit/ch.qos.logback.classic.joran/JoranConfiguratorTest/levelChangePropagator1/">JoranConfiguratorTest.levelChangePropagator1</a>
-        probable cause: parallel execution, j.u.l. shared-state
-        overridden by levelChangePropagator0 while levelChangePropagator1 is running
-        </li>
-
-        <li><a
-        href="http://logback.qos.ch/jenkins/job/logback/298/">build
-        #298</a> with test failure in <a
-        href="http://logback.qos.ch/jenkins/job/logback/ch.qos.logback$logback-core/298/testReport/junit/ch.qos.logback.core/AsyncAppenderBaseTest/workerShouldStopEvenIfInterruptExceptionConsumedWithinSubappender/">AsyncAppenderBaseTest</a>
-        probable cause: race condition
-        </li>
-
-
-        <li><a
-        href="http://logback.qos.ch/jenkins/job/logback/91/">build
-        #91</a> with test failure in <a
-        href="http://logback.qos.ch/jenkins/job/logback/ch.qos.logback$logback-classic/91/testReport/junit/ch.qos.logback.classic.net/SMTPAppender_GreenTest/testMultipleTo/">SMTPAppender_GreenTest</a>
-        probable cause: race condition, GreenMail server not running
-        at time of message transmission</li>
-
-
-      </ul>
-
-      <p>These build failures are quite hard to reproduce. If you
-      intend to work on these problems, you will probably first need
-      to make changes to logback code so that the problem becomes
-      easily reproducible. One the problem is identified and
-      reproducible, solving it should be much easier.
-      </p>
+      </p>      
+      </li>
 
-    <h3>Setting up the project</h3>
+      <li><b>Proof reading the documentation</b>
+      <p>We are always looking for volunteers to proof-read the
+      documentation. Suggestions as to the design and look-and-feel of
+      the site are also welcome.</p>
+      </li>
+    </ol>
     
-    <p>If you wish to contribute to the project or just hack for fun,
-    you will probably want to import logback as a project into your
-    favorite IDE. See the instructions for <a
-    href="setup.html#ide">building logback in Eclipse or IntelliJ
-    IDEA</a> for details.</p>
-
     <script src="templates/footer.js" type="text/javascript"></script>
   </div>
   </body>
diff --git a/logback-site/src/site/resources/beagle/images/beagleFeature.png b/logback-site/src/site/resources/beagle/images/beagleFeature.png
deleted file mode 100644
index faf6ab9..0000000
Binary files a/logback-site/src/site/resources/beagle/images/beagleFeature.png and /dev/null differ
diff --git a/logback-site/src/site/resources/beagle/images/beagleSample.png b/logback-site/src/site/resources/beagle/images/beagleSample.png
deleted file mode 100644
index 2d24175..0000000
Binary files a/logback-site/src/site/resources/beagle/images/beagleSample.png and /dev/null differ
diff --git a/logback-site/src/site/resources/beagle/images/beagleView0.png b/logback-site/src/site/resources/beagle/images/beagleView0.png
deleted file mode 100644
index 344e0a0..0000000
Binary files a/logback-site/src/site/resources/beagle/images/beagleView0.png and /dev/null differ
diff --git a/logback-site/src/site/resources/beagle/images/callerData-jump.png b/logback-site/src/site/resources/beagle/images/callerData-jump.png
deleted file mode 100644
index f9f5ee7..0000000
Binary files a/logback-site/src/site/resources/beagle/images/callerData-jump.png and /dev/null differ
diff --git a/logback-site/src/site/resources/beagle/images/callerData.png b/logback-site/src/site/resources/beagle/images/callerData.png
deleted file mode 100644
index aa4ee7f..0000000
Binary files a/logback-site/src/site/resources/beagle/images/callerData.png and /dev/null differ
diff --git a/logback-site/src/site/resources/beagle/images/font.png b/logback-site/src/site/resources/beagle/images/font.png
deleted file mode 100644
index 2a0629d..0000000
Binary files a/logback-site/src/site/resources/beagle/images/font.png and /dev/null differ
diff --git a/logback-site/src/site/resources/beagle/images/menu.png b/logback-site/src/site/resources/beagle/images/menu.png
deleted file mode 100644
index dd05f50..0000000
Binary files a/logback-site/src/site/resources/beagle/images/menu.png and /dev/null differ
diff --git a/logback-site/src/site/resources/beagle/images/nebulaFeature.png b/logback-site/src/site/resources/beagle/images/nebulaFeature.png
deleted file mode 100644
index 5af6295..0000000
Binary files a/logback-site/src/site/resources/beagle/images/nebulaFeature.png and /dev/null differ
diff --git a/logback-site/src/site/resources/beagle/images/play_doc.gif b/logback-site/src/site/resources/beagle/images/play_doc.gif
deleted file mode 100644
index 4d7e77a..0000000
Binary files a/logback-site/src/site/resources/beagle/images/play_doc.gif and /dev/null differ
diff --git a/logback-site/src/site/resources/beagle/images/preferences.png b/logback-site/src/site/resources/beagle/images/preferences.png
deleted file mode 100644
index 5d8e1cd..0000000
Binary files a/logback-site/src/site/resources/beagle/images/preferences.png and /dev/null differ
diff --git a/logback-site/src/site/resources/beagle/images/sailing-ship-128x128.png b/logback-site/src/site/resources/beagle/images/sailing-ship-128x128.png
deleted file mode 100644
index 59aec6a..0000000
Binary files a/logback-site/src/site/resources/beagle/images/sailing-ship-128x128.png and /dev/null differ
diff --git a/logback-site/src/site/resources/beagle/images/sailing-ship-16x16.png b/logback-site/src/site/resources/beagle/images/sailing-ship-16x16.png
deleted file mode 100644
index 44e9663..0000000
Binary files a/logback-site/src/site/resources/beagle/images/sailing-ship-16x16.png and /dev/null differ
diff --git a/logback-site/src/site/resources/beagle/images/sailing-ship-32x32.png b/logback-site/src/site/resources/beagle/images/sailing-ship-32x32.png
deleted file mode 100644
index 1b40e46..0000000
Binary files a/logback-site/src/site/resources/beagle/images/sailing-ship-32x32.png and /dev/null differ
diff --git a/logback-site/src/site/resources/beagle/images/sailing-ship-48x48.png b/logback-site/src/site/resources/beagle/images/sailing-ship-48x48.png
deleted file mode 100644
index f7b9527..0000000
Binary files a/logback-site/src/site/resources/beagle/images/sailing-ship-48x48.png and /dev/null differ
diff --git a/logback-site/src/site/resources/css/anchor12.png b/logback-site/src/site/resources/css/anchor12.png
deleted file mode 100644
index 2cd97ac..0000000
Binary files a/logback-site/src/site/resources/css/anchor12.png and /dev/null differ
diff --git a/logback-site/src/site/resources/css/anchor16.png b/logback-site/src/site/resources/css/anchor16.png
deleted file mode 100644
index c0676f4..0000000
Binary files a/logback-site/src/site/resources/css/anchor16.png and /dev/null differ
diff --git a/logback-site/src/site/resources/css/anchor20.png b/logback-site/src/site/resources/css/anchor20.png
deleted file mode 100644
index 65c26c1..0000000
Binary files a/logback-site/src/site/resources/css/anchor20.png and /dev/null differ
diff --git a/logback-site/src/site/resources/css/anchor24.png b/logback-site/src/site/resources/css/anchor24.png
deleted file mode 100644
index ad1a8c6..0000000
Binary files a/logback-site/src/site/resources/css/anchor24.png and /dev/null differ
diff --git a/logback-site/src/site/resources/images/logos/lblogo-150.jpg b/logback-site/src/site/resources/images/logos/lblogo-150.jpg
deleted file mode 100644
index 38a2606..0000000
Binary files a/logback-site/src/site/resources/images/logos/lblogo-150.jpg and /dev/null differ
diff --git a/logback-site/src/site/resources/images/logos/lblogo-200.jpg b/logback-site/src/site/resources/images/logos/lblogo-200.jpg
deleted file mode 100644
index d0edaf8..0000000
Binary files a/logback-site/src/site/resources/images/logos/lblogo-200.jpg and /dev/null differ
diff --git a/logback-site/src/site/resources/images/logos/lblogo-40.jpg b/logback-site/src/site/resources/images/logos/lblogo-40.jpg
deleted file mode 100644
index 668c08c..0000000
Binary files a/logback-site/src/site/resources/images/logos/lblogo-40.jpg and /dev/null differ
diff --git a/logback-site/src/site/resources/manual/images/chapters/receivers/serverSocketReceiver.png b/logback-site/src/site/resources/manual/images/chapters/receivers/serverSocketReceiver.png
deleted file mode 100644
index 4aaa504..0000000
Binary files a/logback-site/src/site/resources/manual/images/chapters/receivers/serverSocketReceiver.png and /dev/null differ
diff --git a/logback-site/src/site/resources/manual/images/chapters/receivers/socketReceiver.png b/logback-site/src/site/resources/manual/images/chapters/receivers/socketReceiver.png
deleted file mode 100644
index dbd79ec..0000000
Binary files a/logback-site/src/site/resources/manual/images/chapters/receivers/socketReceiver.png and /dev/null differ
diff --git a/pom.xml b/pom.xml
index 3afac14..252af2c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
 
   <groupId>ch.qos.logback</groupId>
   <artifactId>logback-parent</artifactId>
-  <version>1.1.2</version>
+  <version>1.0.4</version>
   <packaging>pom</packaging>
   <name>Logback-Parent</name>
   <description>logback project pom.xml file</description>
@@ -33,9 +33,10 @@
 
   <scm>
     <url>https://github.com/ceki/logback</url>
-    <connection>git at github.com:ceki/logback.git</connection>
+    <connection>git at github.com:ceki/logback.git</connection> 
   </scm>
 
+  
 
   <modules>
     <module>logback-core</module>
@@ -46,28 +47,18 @@
   </modules>
 
   <properties>
-    <!-- target JDK version == source JDK version -->
-    <jdk.version>1.5</jdk.version>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <!-- slf4j.version property is used below, in
          logback-classic/pom.xml and in setClasspath.cmd -->
-    <slf4j.version>1.7.6</slf4j.version>
+    <slf4j.version>1.6.4</slf4j.version>
     <junit.version>4.10</junit.version>
-    <javax.mail.version>1.4</javax.mail.version>
-    <janino.version>2.6.1</janino.version>
-    <groovy.version>2.0.7</groovy.version>
-
+    <janino.version>2.5.16</janino.version>
+    <scala.version>2.9.1</scala.version>
+    <groovy.version>1.7.6</groovy.version>
     <consolePlugin.version>1.1.0</consolePlugin.version>
     <tomcat.version>7.0.21</tomcat.version>
     <jetty.version>7.5.1.v20110908</jetty.version>
-    <jansi.version>1.9</jansi.version>
-
-    <maven-compiler-plugin.version>2.3.2</maven-compiler-plugin.version>
-    <maven-jar-plugin.version>2.3.1</maven-jar-plugin.version>
-    <maven-surefire-plugin.version>2.14.1</maven-surefire-plugin.version>
-    <maven-license-plugin.version>1.9.0</maven-license-plugin.version>
-    <findbugs-maven-plugin.version>2.5</findbugs-maven-plugin.version>
-
+    <!--<jetty.version>8.0.1.v20110908</jetty.version>-->
   </properties>
 
   <developers>
@@ -144,15 +135,9 @@
         <version>${groovy.version}</version>
       </dependency>
       <dependency>
-        <groupId>org.fusesource.jansi</groupId>
-        <artifactId>jansi</artifactId>
-        <version>${jansi.version}</version>
-      </dependency>
-
-      <dependency>
         <groupId>javax.mail</groupId>
         <artifactId>mail</artifactId>
-        <version>${javax.mail.version}</version>
+        <version>1.4</version>
       </dependency>
       <dependency>
         <groupId>dom4j</groupId>
@@ -188,12 +173,6 @@
       </dependency>
 
       <dependency>
-        <groupId>org.apache.tomcat</groupId>
-        <artifactId>tomcat-coyote</artifactId>
-        <version>${tomcat.version}</version>
-      </dependency>
-
-      <dependency>
         <groupId>org.eclipse.jetty</groupId>
         <artifactId>jetty-server</artifactId>
         <version>${jetty.version}</version>
@@ -215,6 +194,13 @@
         <artifactId>servlet-api</artifactId>
         <version>2.5</version>
       </dependency>
+
+      <dependency>
+        <groupId>org.scala-lang</groupId>
+        <artifactId>scala-library</artifactId>
+        <version>${scala.version}</version>
+      </dependency>
+
     </dependencies>
   </dependencyManagement>
 
@@ -229,21 +215,40 @@
     </extensions>
 
     <plugins>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>build-helper-maven-plugin</artifactId>
+        <version>1.7</version>
+        <executions>
+          <execution>
+            <id>add-test-source</id>
+            <phase>generate-sources</phase>
+            <goals>
+              <goal>add-test-source</goal>
+            </goals>
+            <configuration>
+              <sources>
+                <source>src/test/scala</source>
+              </sources>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
 
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-compiler-plugin</artifactId>
-        <version>${maven-compiler-plugin.version}</version>
+        <version>2.3.2</version>
         <configuration>
-          <source>${jdk.version}</source>
-          <target>${jdk.version}</target>
+          <source>1.5</source>
+          <target>1.5</target>
         </configuration>
       </plugin>
 
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
-        <version>${maven-surefire-plugin.version}</version>
+        <version>2.10</version>
       </plugin>
 
       <plugin>
@@ -259,11 +264,10 @@
           </execution>
         </executions>
       </plugin>
-
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-jar-plugin</artifactId>
-        <version>${maven-jar-plugin.version}</version>
+        <version>2.3.1</version>
       </plugin>
 
       <plugin>
@@ -274,6 +278,7 @@
           <downloadSources>true</downloadSources>
           <downloadJavadocs>true</downloadJavadocs>
           <sourceIncludes>
+            <sourceInclude>**/*.scala</sourceInclude>
             <sourceInclude>**/*.java</sourceInclude>
           </sourceIncludes>
         </configuration>
@@ -298,18 +303,18 @@
         <!-- avoid "Duplicate entry" warnings -->
         <version>2.1.0</version>
       </plugin>
-
       <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>findbugs-maven-plugin</artifactId>
-        <version>${findbugs-maven-plugin.version}</version>
-        <configuration>
-          <threshold>High</threshold>
-          <!--<trace>true</trace>-->
-          <excludeFilterFile>findbugs-exclude.xml</excludeFilterFile>
-        </configuration>
+        <groupId>org.scala-tools</groupId>
+        <artifactId>maven-scala-plugin</artifactId>
+        <version>2.15.2</version>
+      </plugin>
+      <plugin>
+        <groupId>org.codehaus.groovy.maven</groupId>
+        <artifactId>gmaven-plugin</artifactId>
+        <version>1.0</version>
       </plugin>
 
+
       <!-- ================ site plugin ==================== -->
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
@@ -405,7 +410,7 @@
       <build>
         <plugins>
           <plugin>
-            <groupId>com.mycila.maven-license-plugin</groupId>
+            <groupId>com.google.code.maven-license-plugin</groupId>
             <artifactId>maven-license-plugin</artifactId>
             <version>1.9.0</version>
             <configuration>
@@ -429,6 +434,19 @@
         </plugins>
       </build>
 
+      <pluginRepositories>
+        <pluginRepository>
+          <id>mc-release</id>
+          <name>Local Maven repository of releases</name>
+          <url>http://mc-repo.googlecode.com/svn/maven2/releases</url>
+          <snapshots>
+            <enabled>false</enabled>
+          </snapshots>
+          <releases>
+            <enabled>true</enabled>
+          </releases>
+        </pluginRepository>
+      </pluginRepositories>
     </profile>
 
     <profile>
@@ -473,7 +491,7 @@
           </plugin>
         </plugins>
       </build>
-    </profile>
+    </profile> 
 
 
   </profiles>
diff --git a/src/main/clas/signed-clas.txt b/src/main/clas/signed-clas.txt
deleted file mode 100644
index 28ad0ae..0000000
--- a/src/main/clas/signed-clas.txt
+++ /dev/null
@@ -1,67 +0,0 @@
-
-Here is a list of persons who have signed a CLA [1].
-
-Name                     Location              Date
-----                     --------              ----
-Maarten Bosteels         Heverlee, Belgium     2007-01-15
-John E. Conlon           WI, USA               2007-02-08
-Ralph W. Goers Jr.       CA, USA               2008-07-24
-Matt Humphreys           London, UK            2008-08-16
-Thorbjorn Ravn Andersen  Hammel, Denmark       2008-08-16
-Chad LaVigne             MN, USA               2009-03-25
-Joern Huxhorn            Pfungstadt, Germany   2009-04-29
-Thorsten Moeller         Basel, Switzerland    2009-11-16
-Robert Elliot            Twickenham, UK        2010-03-08
-Tomasz Nurkiewicz        Wegrow, Poland        2010-03-19
-Aleksey Didik            S.Putilovskay, Russia 2010-03-26
-Heiko Seeberger          Schondorf , Germany   2010-09-06
-Ryan Cogswell            MN, USA               2011-07-07
-Pierre Queinnec          Paris, France         2011-07-20
-Anthony Trinh            MA, USA               2012-05-10
-Torsten Juergeleit       Liederbach, Germany   2012-05-13
-Cedric Lime              Levallois-Perret, FR  2012-06-08
-Christian Trutz          Mark, Germany         2012-06-14
-Les Hazlewood            CA, USA               2012-09-10
-Libor Jelinek            Czech Republic        2012-09-17
-Matthew Bishop           Vancouver, Canada     2012-09-18
-Joris Kuipers            Amstelveen, NL        2013-02-11
-Andrey Korzhevskiy       Skryabina Akademika, Russia 2013-03-26 
-Carl E. Harris Jr.       VA, USA               2013-03-27
-Matthew R. Bertolini     NJ, USA               2013-04-23
-Gregory A. Denton        WA, USA               2013-05-02
-Mikhail Mazursky         Bashkortostan,Russia  2013-10-02
-Marvin B. Lillehaug      Trondheim, Norway     2014-01-20
-Chetan Mehrotra          Uttar Pradesh, India  2014-02-04
-Justification for CLAs
-----------------------
-
-The CLA requirement adds a bureaucratic step before contributions can
-be accepted. However, the CLA offers several advantages:
-  
-1) having a CLA on file for all contributors provides reassurance to
-downstream users. For example, IP officers from Eclipse foundation
-contact QOS.ch at regular intervals asking whether QOS.ch has CLA for
-SLF4J and logback contributions.
-
-2) allows QOS.ch to change the software license as long as the change
-is not contrary to public interest. This allowed QOS.ch to add Eclipse
-Public License 1.0 (in addition to LGPL) in logback version
-0.9.18. This was undoubtedly a net gain for those wishing to use
-logback and it was a fairly painless process. Without the CLA on file,
-dual-licensing logback would have been near impossible.
-
-3) by virtue of clause 3 of the CLA, the contributor vouches for
-his/her contributions as his/her own. Thus, QOS.ch takes a lesser risk
-when distributing software because QOS.ch can claim that some vetting
-has been performed (due diligence). 
-
-A more detailed discussion of CLAs can be found at [2].
-
-BTW, the CLA can be sent to Ceki directly by email. A scanned copy on
-two separate pages is fine but please make sure that the images render
-reasonably well when printed on a laser printer. Images taken by
-cellphone cameras often render as a large gray smudge when printed.
-
-[1] http://logback.qos.ch/cla.txt
-[2] http://www.oss-watch.ac.uk/resources/cla.xml
-
diff --git a/src/main/javadocHeaders.xml b/src/main/javadocHeaders.xml
index 91cdddd..b011d99 100644
--- a/src/main/javadocHeaders.xml
+++ b/src/main/javadocHeaders.xml
@@ -3,8 +3,7 @@
     <firstLine>/**</firstLine>
     <beforeEachLine> * </beforeEachLine>
     <endLine> */</endLine>
-    <isMultiline>true</isMultiline>
-    <allowBlankLines>false</allowBlankLines>
+    <!--<skipLine>packa</skipLine>-->
     <firstLineDetectionPattern>(\s|\t)*/\*.*$</firstLineDetectionPattern>
     <lastLineDetectionPattern>.*\*/(\s|\t)*$</lastLineDetectionPattern>
   </javadoc_style>
diff --git a/src/main/licenseHeader.txt b/src/main/licenseHeader.txt
index 49f6f08..e292c67 100644
--- a/src/main/licenseHeader.txt
+++ b/src/main/licenseHeader.txt
@@ -1,5 +1,5 @@
 Logback: the reliable, generic, fast and flexible logging framework.
-Copyright (C) 1999-2013, QOS.ch. All rights reserved.
+Copyright (C) 1999-2011, QOS.ch. All rights reserved.
 
 This program and the accompanying materials are dual-licensed under
 either the terms of the Eclipse Public License v1.0 as published by

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/logback.git



More information about the pkg-java-commits mailing list