diff --git a/conf/quality-config/pmd-ruleset.xml b/conf/quality-config/pmd-ruleset.xml
index 8846898f6afacb71cab1ce336bb2c8a8fac9fcb7..241ddd22ad7807c7bbbc47ab909f3e80e6710067 100644
--- a/conf/quality-config/pmd-ruleset.xml
+++ b/conf/quality-config/pmd-ruleset.xml
@@ -16,7 +16,7 @@
 	<rule ref="rulesets/java/codesize.xml" />
 	<!-- <rule ref="rulesets/java/comments.xml" /> -->
 	<!-- <rule ref="rulesets/java/controversial.xml" /> -->
-	<rule ref="rulesets/java/coupling.xml" />
+	<!-- <rule ref="rulesets/java/coupling.xml" /> -->
 	<rule ref="rulesets/java/design.xml" />
 	<rule ref="rulesets/java/empty.xml" />
 	<rule ref="rulesets/java/finalizers.xml" />
@@ -28,7 +28,7 @@
 	<rule ref="rulesets/java/logging-java.xml" />
 
 	<rule ref="rulesets/java/migrating.xml" />
-	<rule ref="rulesets/java/naming.xml" />
+	<!-- <rule ref="rulesets/java/naming.xml" /> -->
 	<!-- <rule ref="rulesets/java/optimizations.xml" /> -->
 	<rule ref="rulesets/java/strictexception.xml" />
 	<rule ref="rulesets/java/strings.xml" />
@@ -43,11 +43,11 @@
 	<rule ref="rulesets/jsp/basic-jsf.xml" />
 	<rule ref="rulesets/jsp/basic.xml" />
 
-<!-- 	<rule ref="rulesets/vm/basic.xml" /> -->
+	<!-- <rule ref="rulesets/vm/basic.xml" /> -->
 
-<!-- 	<rule ref="rulesets/xml/basic.xml" /> -->
+	<!-- <rule ref="rulesets/xml/basic.xml" /> -->
 
-<!-- 	<rule ref="rulesets/xsl/xpath.xml" /> -->
+	<!-- <rule ref="rulesets/xsl/xpath.xml" /> -->
 
 	<!-- custom adaptations -->
 
@@ -57,6 +57,7 @@
 
 	<rule ref="rulesets/java/comments.xml">
 		<exclude name="CommentRequired" />
+		<exclude name="CommentSize" />
 	</rule>
 
 	<rule ref="rulesets/java/controversial.xml">
@@ -64,6 +65,10 @@
 		<exclude name="AvoidUsingVolatile" />
 	</rule>
 
+	<rule ref="rulesets/java/coupling.xml">
+		<exclude name="LawOfDemeter" />
+	</rule>
+
 	<rule ref="rulesets/java/j2ee.xml">
 		<exclude name="DoNotUseThreads" />
 	</rule>
@@ -72,6 +77,10 @@
 		<exclude name="BeanMembersShouldSerialize" />
 	</rule>
 
+	<rule ref="rulesets/java/naming.xml">
+		<exclude name="LongVariable" />
+	</rule>
+
 	<rule ref="rulesets/java/naming.xml/VariableNamingConventions">
 		<priority>5</priority>
 	</rule>
@@ -80,7 +89,13 @@
 		<exclude name="LocalVariableCouldBeFinal" />
 		<exclude name="SimplifyStartsWith" />
 	</rule>
-	
+
 	<rule ref="rulesets/chw/basic.xml" />
 
+	<rule ref="rulesets/chw/basic.xml/NonHeaderCommentSize">
+		<properties>
+			<property name="maxLineLength" value="100" />
+		</properties>
+	</rule>
+
 </ruleset>
\ No newline at end of file
diff --git a/conf/quality-config/pmd/CustomPmdRules_1.0.0.201505130542.jar b/conf/quality-config/pmd/CustomPmdRules_1.0.0.201505130542.jar
deleted file mode 100644
index def7cb0cf3c0b0d578d61daa4fc4acb3392477ca..0000000000000000000000000000000000000000
Binary files a/conf/quality-config/pmd/CustomPmdRules_1.0.0.201505130542.jar and /dev/null differ
diff --git a/conf/quality-config/pmd/CustomPmdRules_1.0.0.201507080630.jar b/conf/quality-config/pmd/CustomPmdRules_1.0.0.201507080630.jar
new file mode 100644
index 0000000000000000000000000000000000000000..c93569024c9116883c3a2de7f28bece60ceee6a4
Binary files /dev/null and b/conf/quality-config/pmd/CustomPmdRules_1.0.0.201507080630.jar differ
diff --git a/pom.xml b/pom.xml
index d9bba1d67d22066259f9df043e5ce2536b6c97ec..0a15d0e886c0051cf49a515c0571dc65d2816917 100644
--- a/pom.xml
+++ b/pom.xml
@@ -269,14 +269,14 @@
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-pmd-plugin</artifactId>
-				<version>3.4</version>
+				<version>3.5</version>
 				<dependencies>
 					<dependency>
 						<groupId>de.chw</groupId>
 						<artifactId>pmd.ruleset</artifactId>
 						<version>0.0.1-SNAPSHOT</version>
 						<scope>system</scope>
-						<systemPath>${project.basedir}/conf/quality-config/pmd/CustomPmdRules_1.0.0.201505130542.jar</systemPath>
+						<systemPath>${project.basedir}/conf/quality-config/pmd/CustomPmdRules_1.0.0.201507080630.jar</systemPath>
 					</dependency>
 				</dependencies>
 				<configuration>
diff --git a/src/main/java/teetime/framework/AbstractInterThreadPipe.java b/src/main/java/teetime/framework/AbstractInterThreadPipe.java
index a0834944735f3e677e61da31744dc5c28f51a065..3336d636266bc92c6d74d5caefaef85e5f69814c 100644
--- a/src/main/java/teetime/framework/AbstractInterThreadPipe.java
+++ b/src/main/java/teetime/framework/AbstractInterThreadPipe.java
@@ -36,7 +36,7 @@ public abstract class AbstractInterThreadPipe extends AbstractPipe {
 
 	private final BlockingQueue<ISignal> signalQueue;
 
-	private volatile boolean isClosed;
+	private volatile boolean closed;
 
 	protected <T> AbstractInterThreadPipe(final OutputPort<? extends T> sourcePort, final InputPort<T> targetPort) {
 		super(sourcePort, targetPort);
@@ -85,11 +85,11 @@ public abstract class AbstractInterThreadPipe extends AbstractPipe {
 
 	@Override
 	public final boolean isClosed() {
-		return isClosed;
+		return closed;
 	}
 
 	@Override
 	public final void close() {
-		isClosed = true;
+		closed = true;
 	}
 }
diff --git a/src/main/java/teetime/framework/AbstractIntraThreadPipe.java b/src/main/java/teetime/framework/AbstractIntraThreadPipe.java
index 5cb77b4fd0e5efac43366636530acb3fc99e2f2a..8108cd5d85adff6f127f4f01134911b72acbcafe 100644
--- a/src/main/java/teetime/framework/AbstractIntraThreadPipe.java
+++ b/src/main/java/teetime/framework/AbstractIntraThreadPipe.java
@@ -19,7 +19,7 @@ import teetime.framework.signal.ISignal;
 
 public abstract class AbstractIntraThreadPipe extends AbstractPipe {
 
-	private boolean isClosed;
+	private boolean closed;
 
 	protected <T> AbstractIntraThreadPipe(final OutputPort<? extends T> sourcePort, final InputPort<T> targetPort) {
 		super(sourcePort, targetPort);
@@ -31,8 +31,8 @@ public abstract class AbstractIntraThreadPipe extends AbstractPipe {
 	}
 
 	@Override
-	// getTargetPort is always non-null since the framework adds dummy ports if necessary
 	public final void sendSignal(final ISignal signal) {
+		// getTargetPort is always non-null since the framework adds dummy ports if necessary
 		this.cachedTargetStage.onSignal(signal, this.getTargetPort());
 	}
 
@@ -43,12 +43,12 @@ public abstract class AbstractIntraThreadPipe extends AbstractPipe {
 
 	@Override
 	public boolean isClosed() {
-		return isClosed;
+		return closed;
 	}
 
 	@Override
 	public void close() {
-		isClosed = true;
+		closed = true;
 	}
 
 	@SuppressWarnings("PMD.EmptyMethodInAbstractClassShouldBeAbstract")
diff --git a/src/main/java/teetime/framework/AbstractPort.java b/src/main/java/teetime/framework/AbstractPort.java
index 71eed42eb52cf45d0f251b696642d61691174d79..6d5bf310c8750238bd604a039c0d00ca3c534894 100644
--- a/src/main/java/teetime/framework/AbstractPort.java
+++ b/src/main/java/teetime/framework/AbstractPort.java
@@ -54,6 +54,7 @@ public abstract class AbstractPort<T> {
 		this.pipe = pipe;
 	}
 
+	@SuppressWarnings("PMD.ConfusingTernary")
 	@Override
 	public String toString() {
 		return (name != null) ? name : super.toString();
diff --git a/src/main/java/teetime/framework/AbstractStage.java b/src/main/java/teetime/framework/AbstractStage.java
index 4f23d450c2e2833b65930b3a8d0ee4100887345e..934a2c2bcdc6f6c332229ac99016eebf6642d63c 100644
--- a/src/main/java/teetime/framework/AbstractStage.java
+++ b/src/main/java/teetime/framework/AbstractStage.java
@@ -315,7 +315,7 @@ public abstract class AbstractStage extends Stage {
 				((DynamicOutputPort<?>) outputPort).setIndex(i);
 			}
 		}
-		outputPorts = tempOutputPorts.toArray(new OutputPort[0]);
+		outputPorts = tempOutputPorts.toArray(new OutputPort[tempOutputPorts.size()]);
 
 		firePortRemoved(removedOutputPort);
 	}