diff --git a/src/main/java/teetime/stage/opad/AnomalyDetectionFilter.java b/src/main/java/teetime/stage/opad/filter/AnomalyDetectionFilter.java
similarity index 98%
rename from src/main/java/teetime/stage/opad/AnomalyDetectionFilter.java
rename to src/main/java/teetime/stage/opad/filter/AnomalyDetectionFilter.java
index b39fc105024a479572aad7e08ff368516b08b176..01815d6e60bb9836269d43f376cd21afc9646787 100644
--- a/src/main/java/teetime/stage/opad/AnomalyDetectionFilter.java
+++ b/src/main/java/teetime/stage/opad/filter/AnomalyDetectionFilter.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package teetime.stage.opad;
+package teetime.stage.opad.filter;
 
 import teetime.framework.AbstractConsumerStage;
 import teetime.framework.OutputPort;
diff --git a/src/test/java/teetime/stage/opad/AnomalyDetectionFilterTest.java b/src/test/java/teetime/stage/opad/filter/AnomalyDetectionFilterTest.java
similarity index 97%
rename from src/test/java/teetime/stage/opad/AnomalyDetectionFilterTest.java
rename to src/test/java/teetime/stage/opad/filter/AnomalyDetectionFilterTest.java
index 3ad21e55fe0cb36c3a8ce2e0b56e70c2863a28f3..c0c8e0268acf374fd1b847e2354caef0af4937e1 100644
--- a/src/test/java/teetime/stage/opad/AnomalyDetectionFilterTest.java
+++ b/src/test/java/teetime/stage/opad/filter/AnomalyDetectionFilterTest.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package teetime.stage.opad;
+package teetime.stage.opad.filter;
 
 import static org.hamcrest.collection.IsIterableContainingInOrder.contains;
 import static org.junit.Assert.assertEquals;
@@ -27,6 +27,8 @@ import org.junit.Before;
 import org.junit.Ignore;
 import org.junit.Test;
 
+import teetime.stage.opad.filter.AnomalyDetectionFilter;
+
 import kieker.tools.opad.record.StorableDetectionResult;
 
 /**