diff --git a/patterns-modules/design-patterns-structural-2/pom.xml b/patterns-modules/design-patterns-structural-2/pom.xml
new file mode 100644
index 000000000000..c02d21d63e33
--- /dev/null
+++ b/patterns-modules/design-patterns-structural-2/pom.xml
@@ -0,0 +1,25 @@
+
+
+ 4.0.0
+ design-patterns-structural-2
+ 1.0
+ design-patterns-structural-2
+ jar
+
+
+ com.baeldung
+ patterns-modules
+ 1.0.0-SNAPSHOT
+
+
+
+
+ log4j
+ log4j
+ ${log4j.version}
+
+
+
+
\ No newline at end of file
diff --git a/patterns-modules/design-patterns-structural/src/main/java/com/baeldung/bridge/Blue.java b/patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/bridge/Blue.java
similarity index 100%
rename from patterns-modules/design-patterns-structural/src/main/java/com/baeldung/bridge/Blue.java
rename to patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/bridge/Blue.java
diff --git a/patterns-modules/design-patterns-structural/src/main/java/com/baeldung/bridge/BridgePatternDriver.java b/patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/bridge/BridgePatternDriver.java
similarity index 100%
rename from patterns-modules/design-patterns-structural/src/main/java/com/baeldung/bridge/BridgePatternDriver.java
rename to patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/bridge/BridgePatternDriver.java
diff --git a/patterns-modules/design-patterns-structural/src/main/java/com/baeldung/bridge/Color.java b/patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/bridge/Color.java
similarity index 100%
rename from patterns-modules/design-patterns-structural/src/main/java/com/baeldung/bridge/Color.java
rename to patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/bridge/Color.java
diff --git a/patterns-modules/design-patterns-structural/src/main/java/com/baeldung/bridge/Red.java b/patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/bridge/Red.java
similarity index 100%
rename from patterns-modules/design-patterns-structural/src/main/java/com/baeldung/bridge/Red.java
rename to patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/bridge/Red.java
diff --git a/patterns-modules/design-patterns-structural/src/main/java/com/baeldung/bridge/Shape.java b/patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/bridge/Shape.java
similarity index 100%
rename from patterns-modules/design-patterns-structural/src/main/java/com/baeldung/bridge/Shape.java
rename to patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/bridge/Shape.java
diff --git a/patterns-modules/design-patterns-structural/src/main/java/com/baeldung/bridge/Square.java b/patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/bridge/Square.java
similarity index 100%
rename from patterns-modules/design-patterns-structural/src/main/java/com/baeldung/bridge/Square.java
rename to patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/bridge/Square.java
diff --git a/patterns-modules/design-patterns-structural/src/main/java/com/baeldung/bridge/Triangle.java b/patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/bridge/Triangle.java
similarity index 100%
rename from patterns-modules/design-patterns-structural/src/main/java/com/baeldung/bridge/Triangle.java
rename to patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/bridge/Triangle.java
diff --git a/patterns-modules/design-patterns-structural/src/main/java/com/baeldung/composite/CompositeDemo.java b/patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/composite/CompositeDemo.java
similarity index 100%
rename from patterns-modules/design-patterns-structural/src/main/java/com/baeldung/composite/CompositeDemo.java
rename to patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/composite/CompositeDemo.java
diff --git a/patterns-modules/design-patterns-structural/src/main/java/com/baeldung/composite/Department.java b/patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/composite/Department.java
similarity index 100%
rename from patterns-modules/design-patterns-structural/src/main/java/com/baeldung/composite/Department.java
rename to patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/composite/Department.java
diff --git a/patterns-modules/design-patterns-structural/src/main/java/com/baeldung/composite/FinancialDepartment.java b/patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/composite/FinancialDepartment.java
similarity index 100%
rename from patterns-modules/design-patterns-structural/src/main/java/com/baeldung/composite/FinancialDepartment.java
rename to patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/composite/FinancialDepartment.java
diff --git a/patterns-modules/design-patterns-structural/src/main/java/com/baeldung/composite/HeadDepartment.java b/patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/composite/HeadDepartment.java
similarity index 100%
rename from patterns-modules/design-patterns-structural/src/main/java/com/baeldung/composite/HeadDepartment.java
rename to patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/composite/HeadDepartment.java
diff --git a/patterns-modules/design-patterns-structural/src/main/java/com/baeldung/composite/SalesDepartment.java b/patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/composite/SalesDepartment.java
similarity index 100%
rename from patterns-modules/design-patterns-structural/src/main/java/com/baeldung/composite/SalesDepartment.java
rename to patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/composite/SalesDepartment.java
diff --git a/patterns-modules/design-patterns-structural/src/main/java/com/baeldung/pipeline/immutable/Pipe.java b/patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/pipeline/immutable/Pipe.java
similarity index 100%
rename from patterns-modules/design-patterns-structural/src/main/java/com/baeldung/pipeline/immutable/Pipe.java
rename to patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/pipeline/immutable/Pipe.java
diff --git a/patterns-modules/design-patterns-structural/src/main/java/com/baeldung/pipeline/immutable/Pipeline.java b/patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/pipeline/immutable/Pipeline.java
similarity index 100%
rename from patterns-modules/design-patterns-structural/src/main/java/com/baeldung/pipeline/immutable/Pipeline.java
rename to patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/pipeline/immutable/Pipeline.java
diff --git a/patterns-modules/design-patterns-structural/src/main/java/com/baeldung/pipeline/pipes/Pipe.java b/patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/pipeline/pipes/Pipe.java
similarity index 100%
rename from patterns-modules/design-patterns-structural/src/main/java/com/baeldung/pipeline/pipes/Pipe.java
rename to patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/pipeline/pipes/Pipe.java
diff --git a/patterns-modules/design-patterns-structural/src/main/java/com/baeldung/proxy/ExpensiveObject.java b/patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/proxy/ExpensiveObject.java
similarity index 100%
rename from patterns-modules/design-patterns-structural/src/main/java/com/baeldung/proxy/ExpensiveObject.java
rename to patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/proxy/ExpensiveObject.java
diff --git a/patterns-modules/design-patterns-structural/src/main/java/com/baeldung/proxy/ExpensiveObjectImpl.java b/patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/proxy/ExpensiveObjectImpl.java
similarity index 100%
rename from patterns-modules/design-patterns-structural/src/main/java/com/baeldung/proxy/ExpensiveObjectImpl.java
rename to patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/proxy/ExpensiveObjectImpl.java
diff --git a/patterns-modules/design-patterns-structural/src/main/java/com/baeldung/proxy/ExpensiveObjectProxy.java b/patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/proxy/ExpensiveObjectProxy.java
similarity index 100%
rename from patterns-modules/design-patterns-structural/src/main/java/com/baeldung/proxy/ExpensiveObjectProxy.java
rename to patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/proxy/ExpensiveObjectProxy.java
diff --git a/patterns-modules/design-patterns-structural/src/main/java/com/baeldung/proxy/ProxyPatternDriver.java b/patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/proxy/ProxyPatternDriver.java
similarity index 100%
rename from patterns-modules/design-patterns-structural/src/main/java/com/baeldung/proxy/ProxyPatternDriver.java
rename to patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/proxy/ProxyPatternDriver.java
diff --git a/patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/util/LoggerUtil.java b/patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/util/LoggerUtil.java
new file mode 100644
index 000000000000..9702cba0f521
--- /dev/null
+++ b/patterns-modules/design-patterns-structural-2/src/main/java/com/baeldung/util/LoggerUtil.java
@@ -0,0 +1,35 @@
+package com.baeldung.util;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.Properties;
+
+import org.apache.log4j.Logger;
+import org.apache.log4j.PropertyConfigurator;
+
+public class LoggerUtil {
+
+ public final static Logger LOG = Logger.getLogger("GLOBAL");
+
+ static {
+ configuration();
+ }
+
+ private static void configuration() {
+ Properties props = new Properties();
+ try {
+ props.load(
+ new BufferedReader(
+ new InputStreamReader(
+ LoggerUtil.class.getResourceAsStream("/log4jstructuraldp.properties")
+ )
+ )
+ );
+ } catch (IOException e) {
+ System.out.println("log4jstructuraldp.properties file not configured properly");
+ System.exit(0);
+ }
+ PropertyConfigurator.configure(props);
+ }
+}
diff --git a/patterns-modules/design-patterns-structural-2/src/main/resources/log4jstructuraldp.properties b/patterns-modules/design-patterns-structural-2/src/main/resources/log4jstructuraldp.properties
new file mode 100644
index 000000000000..d7bfb41d12ea
--- /dev/null
+++ b/patterns-modules/design-patterns-structural-2/src/main/resources/log4jstructuraldp.properties
@@ -0,0 +1,9 @@
+
+# Root logger
+log4j.rootLogger=INFO, stdout
+
+# Write to console
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.Target=System.out
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
\ No newline at end of file
diff --git a/patterns-modules/design-patterns-structural/src/test/java/com/baeldung/bridge/BridgePatternIntegrationTest.java b/patterns-modules/design-patterns-structural-2/src/test/java/com/baeldung/bridge/BridgePatternIntegrationTest.java
similarity index 100%
rename from patterns-modules/design-patterns-structural/src/test/java/com/baeldung/bridge/BridgePatternIntegrationTest.java
rename to patterns-modules/design-patterns-structural-2/src/test/java/com/baeldung/bridge/BridgePatternIntegrationTest.java
diff --git a/patterns-modules/design-patterns-structural/src/test/java/com/baeldung/pipeline/BiFunctionPipelineUnitTest.java b/patterns-modules/design-patterns-structural-2/src/test/java/com/baeldung/pipeline/BiFunctionPipelineUnitTest.java
similarity index 92%
rename from patterns-modules/design-patterns-structural/src/test/java/com/baeldung/pipeline/BiFunctionPipelineUnitTest.java
rename to patterns-modules/design-patterns-structural-2/src/test/java/com/baeldung/pipeline/BiFunctionPipelineUnitTest.java
index 5f094ad6e8c4..417a3f7883ca 100644
--- a/patterns-modules/design-patterns-structural/src/test/java/com/baeldung/pipeline/BiFunctionPipelineUnitTest.java
+++ b/patterns-modules/design-patterns-structural-2/src/test/java/com/baeldung/pipeline/BiFunctionPipelineUnitTest.java
@@ -1,9 +1,10 @@
package com.baeldung.pipeline;
-import static org.junit.jupiter.api.Assertions.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
import java.util.function.BiFunction;
import java.util.function.Function;
+
import org.junit.jupiter.api.Test;
class BiFunctionPipelineUnitTest {
diff --git a/patterns-modules/design-patterns-structural/src/test/java/com/baeldung/pipeline/FunctionPipelineUnitTest.java b/patterns-modules/design-patterns-structural-2/src/test/java/com/baeldung/pipeline/FunctionPipelineUnitTest.java
similarity index 91%
rename from patterns-modules/design-patterns-structural/src/test/java/com/baeldung/pipeline/FunctionPipelineUnitTest.java
rename to patterns-modules/design-patterns-structural-2/src/test/java/com/baeldung/pipeline/FunctionPipelineUnitTest.java
index 71bc14a5eb0f..0353e3ff5887 100644
--- a/patterns-modules/design-patterns-structural/src/test/java/com/baeldung/pipeline/FunctionPipelineUnitTest.java
+++ b/patterns-modules/design-patterns-structural-2/src/test/java/com/baeldung/pipeline/FunctionPipelineUnitTest.java
@@ -1,8 +1,9 @@
package com.baeldung.pipeline;
-import static org.junit.jupiter.api.Assertions.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
import java.util.function.Function;
+
import org.junit.jupiter.api.Test;
class FunctionPipelineUnitTest {
diff --git a/patterns-modules/design-patterns-structural/src/test/java/com/baeldung/pipeline/PipeUnitTest.java b/patterns-modules/design-patterns-structural-2/src/test/java/com/baeldung/pipeline/PipeUnitTest.java
similarity index 99%
rename from patterns-modules/design-patterns-structural/src/test/java/com/baeldung/pipeline/PipeUnitTest.java
rename to patterns-modules/design-patterns-structural-2/src/test/java/com/baeldung/pipeline/PipeUnitTest.java
index 6a3a988f89f1..d14a68250554 100644
--- a/patterns-modules/design-patterns-structural/src/test/java/com/baeldung/pipeline/PipeUnitTest.java
+++ b/patterns-modules/design-patterns-structural-2/src/test/java/com/baeldung/pipeline/PipeUnitTest.java
@@ -2,9 +2,10 @@
import static org.assertj.core.api.Assertions.assertThat;
-import com.baeldung.pipeline.pipes.Pipe;
import org.junit.jupiter.api.Test;
+import com.baeldung.pipeline.pipes.Pipe;
+
class PipeUnitTest {
@Test
diff --git a/patterns-modules/design-patterns-structural/src/test/java/com/baeldung/pipeline/PipelineUnitTest.java b/patterns-modules/design-patterns-structural-2/src/test/java/com/baeldung/pipeline/PipelineUnitTest.java
similarity index 99%
rename from patterns-modules/design-patterns-structural/src/test/java/com/baeldung/pipeline/PipelineUnitTest.java
rename to patterns-modules/design-patterns-structural-2/src/test/java/com/baeldung/pipeline/PipelineUnitTest.java
index 2cbafc62133c..a6887806076b 100644
--- a/patterns-modules/design-patterns-structural/src/test/java/com/baeldung/pipeline/PipelineUnitTest.java
+++ b/patterns-modules/design-patterns-structural-2/src/test/java/com/baeldung/pipeline/PipelineUnitTest.java
@@ -2,9 +2,10 @@
import static org.assertj.core.api.Assertions.assertThat;
+import org.junit.jupiter.api.Test;
+
import com.baeldung.pipeline.immutable.Pipe;
import com.baeldung.pipeline.immutable.Pipeline;
-import org.junit.jupiter.api.Test;
class PipelineUnitTest {
diff --git a/patterns-modules/design-patterns-structural/src/test/java/com/baeldung/proxy/ProxyPatternIntegrationTest.java b/patterns-modules/design-patterns-structural-2/src/test/java/com/baeldung/proxy/ProxyPatternIntegrationTest.java
similarity index 100%
rename from patterns-modules/design-patterns-structural/src/test/java/com/baeldung/proxy/ProxyPatternIntegrationTest.java
rename to patterns-modules/design-patterns-structural-2/src/test/java/com/baeldung/proxy/ProxyPatternIntegrationTest.java
diff --git a/patterns-modules/design-patterns-structural/src/test/java/com/baeldung/proxy/TestAppenderDP.java b/patterns-modules/design-patterns-structural-2/src/test/java/com/baeldung/proxy/TestAppenderDP.java
similarity index 100%
rename from patterns-modules/design-patterns-structural/src/test/java/com/baeldung/proxy/TestAppenderDP.java
rename to patterns-modules/design-patterns-structural-2/src/test/java/com/baeldung/proxy/TestAppenderDP.java
diff --git a/patterns-modules/pom.xml b/patterns-modules/pom.xml
index 500fc2e33d7c..34ff805e3125 100644
--- a/patterns-modules/pom.xml
+++ b/patterns-modules/pom.xml
@@ -29,6 +29,7 @@
design-patterns-functional
design-patterns-singleton
design-patterns-structural
+ design-patterns-structural-2
dependency-inversion
enterprise-patterns
front-controller