diff --git a/Java/Advanced-Java/Advanced-Java.iml b/Advanced-Java/Advanced-Java.iml
similarity index 100%
rename from Java/Advanced-Java/Advanced-Java.iml
rename to Advanced-Java/Advanced-Java.iml
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/AsyncProgramming/CompletableFutureExample.class b/Advanced-Java/out/production/Advanced-Java/AsyncProgramming/CompletableFutureExample.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/AsyncProgramming/CompletableFutureExample.class
rename to Advanced-Java/out/production/Advanced-Java/AsyncProgramming/CompletableFutureExample.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/Callbacks/Callbacks.class b/Advanced-Java/out/production/Advanced-Java/Callbacks/Callbacks.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/Callbacks/Callbacks.class
rename to Advanced-Java/out/production/Advanced-Java/Callbacks/Callbacks.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/Callbacks/Lambdas$Service.class b/Advanced-Java/out/production/Advanced-Java/Callbacks/Lambdas$Service.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/Callbacks/Lambdas$Service.class
rename to Advanced-Java/out/production/Advanced-Java/Callbacks/Lambdas$Service.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/Callbacks/Lambdas.class b/Advanced-Java/out/production/Advanced-Java/Callbacks/Lambdas.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/Callbacks/Lambdas.class
rename to Advanced-Java/out/production/Advanced-Java/Callbacks/Lambdas.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/CombinatorPattern/Customer.class b/Advanced-Java/out/production/Advanced-Java/CombinatorPattern/Customer.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/CombinatorPattern/Customer.class
rename to Advanced-Java/out/production/Advanced-Java/CombinatorPattern/Customer.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/CombinatorPattern/CustomerRegistrationValidator.class b/Advanced-Java/out/production/Advanced-Java/CombinatorPattern/CustomerRegistrationValidator.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/CombinatorPattern/CustomerRegistrationValidator.class
rename to Advanced-Java/out/production/Advanced-Java/CombinatorPattern/CustomerRegistrationValidator.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/CombinatorPattern/CustomerValidatorService.class b/Advanced-Java/out/production/Advanced-Java/CombinatorPattern/CustomerValidatorService.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/CombinatorPattern/CustomerValidatorService.class
rename to Advanced-Java/out/production/Advanced-Java/CombinatorPattern/CustomerValidatorService.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/CombinatorPattern/Main.class b/Advanced-Java/out/production/Advanced-Java/CombinatorPattern/Main.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/CombinatorPattern/Main.class
rename to Advanced-Java/out/production/Advanced-Java/CombinatorPattern/Main.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/CombinatorPattern/ValidationResult.class b/Advanced-Java/out/production/Advanced-Java/CombinatorPattern/ValidationResult.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/CombinatorPattern/ValidationResult.class
rename to Advanced-Java/out/production/Advanced-Java/CombinatorPattern/ValidationResult.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/Concurrency/ConditionExample.class b/Advanced-Java/out/production/Advanced-Java/Concurrency/ConditionExample.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/Concurrency/ConditionExample.class
rename to Advanced-Java/out/production/Advanced-Java/Concurrency/ConditionExample.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/Concurrency/ThreadLocalExample.class b/Advanced-Java/out/production/Advanced-Java/Concurrency/ThreadLocalExample.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/Concurrency/ThreadLocalExample.class
rename to Advanced-Java/out/production/Advanced-Java/Concurrency/ThreadLocalExample.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/Concurrency/ThreadSafeFormatter.class b/Advanced-Java/out/production/Advanced-Java/Concurrency/ThreadSafeFormatter.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/Concurrency/ThreadSafeFormatter.class
rename to Advanced-Java/out/production/Advanced-Java/Concurrency/ThreadSafeFormatter.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/Concurrency/VolatileOrAtomic$FlagChecker.class b/Advanced-Java/out/production/Advanced-Java/Concurrency/VolatileOrAtomic$FlagChecker.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/Concurrency/VolatileOrAtomic$FlagChecker.class
rename to Advanced-Java/out/production/Advanced-Java/Concurrency/VolatileOrAtomic$FlagChecker.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/Concurrency/VolatileOrAtomic$FlagUpdater.class b/Advanced-Java/out/production/Advanced-Java/Concurrency/VolatileOrAtomic$FlagUpdater.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/Concurrency/VolatileOrAtomic$FlagUpdater.class
rename to Advanced-Java/out/production/Advanced-Java/Concurrency/VolatileOrAtomic$FlagUpdater.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/Concurrency/VolatileOrAtomic.class b/Advanced-Java/out/production/Advanced-Java/Concurrency/VolatileOrAtomic.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/Concurrency/VolatileOrAtomic.class
rename to Advanced-Java/out/production/Advanced-Java/Concurrency/VolatileOrAtomic.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/DesignPatterns/TaxCalculator.class b/Advanced-Java/out/production/Advanced-Java/DesignPatterns/TaxCalculator.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/DesignPatterns/TaxCalculator.class
rename to Advanced-Java/out/production/Advanced-Java/DesignPatterns/TaxCalculator.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/DesignPatterns/TaxCalculator2019.class b/Advanced-Java/out/production/Advanced-Java/DesignPatterns/TaxCalculator2019.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/DesignPatterns/TaxCalculator2019.class
rename to Advanced-Java/out/production/Advanced-Java/DesignPatterns/TaxCalculator2019.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/DesignPatterns/TaxCalculator2020.class b/Advanced-Java/out/production/Advanced-Java/DesignPatterns/TaxCalculator2020.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/DesignPatterns/TaxCalculator2020.class
rename to Advanced-Java/out/production/Advanced-Java/DesignPatterns/TaxCalculator2020.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/DesignPatterns/User.class b/Advanced-Java/out/production/Advanced-Java/DesignPatterns/User.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/DesignPatterns/User.class
rename to Advanced-Java/out/production/Advanced-Java/DesignPatterns/User.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/DesignPatterns/memento/Editor.class b/Advanced-Java/out/production/Advanced-Java/DesignPatterns/memento/Editor.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/DesignPatterns/memento/Editor.class
rename to Advanced-Java/out/production/Advanced-Java/DesignPatterns/memento/Editor.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/DesignPatterns/memento/EditorState.class b/Advanced-Java/out/production/Advanced-Java/DesignPatterns/memento/EditorState.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/DesignPatterns/memento/EditorState.class
rename to Advanced-Java/out/production/Advanced-Java/DesignPatterns/memento/EditorState.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/DesignPatterns/memento/History.class b/Advanced-Java/out/production/Advanced-Java/DesignPatterns/memento/History.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/DesignPatterns/memento/History.class
rename to Advanced-Java/out/production/Advanced-Java/DesignPatterns/memento/History.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/DesignPatterns/memento/Main.class b/Advanced-Java/out/production/Advanced-Java/DesignPatterns/memento/Main.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/DesignPatterns/memento/Main.class
rename to Advanced-Java/out/production/Advanced-Java/DesignPatterns/memento/Main.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/DesignPatterns/state/BrushTool.class b/Advanced-Java/out/production/Advanced-Java/DesignPatterns/state/BrushTool.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/DesignPatterns/state/BrushTool.class
rename to Advanced-Java/out/production/Advanced-Java/DesignPatterns/state/BrushTool.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/DesignPatterns/state/Canvas.class b/Advanced-Java/out/production/Advanced-Java/DesignPatterns/state/Canvas.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/DesignPatterns/state/Canvas.class
rename to Advanced-Java/out/production/Advanced-Java/DesignPatterns/state/Canvas.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/DesignPatterns/state/Main.class b/Advanced-Java/out/production/Advanced-Java/DesignPatterns/state/Main.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/DesignPatterns/state/Main.class
rename to Advanced-Java/out/production/Advanced-Java/DesignPatterns/state/Main.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/DesignPatterns/state/Selection.class b/Advanced-Java/out/production/Advanced-Java/DesignPatterns/state/Selection.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/DesignPatterns/state/Selection.class
rename to Advanced-Java/out/production/Advanced-Java/DesignPatterns/state/Selection.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/DesignPatterns/state/Tool.class b/Advanced-Java/out/production/Advanced-Java/DesignPatterns/state/Tool.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/DesignPatterns/state/Tool.class
rename to Advanced-Java/out/production/Advanced-Java/DesignPatterns/state/Tool.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/DesignPatterns/state/ToolType.class b/Advanced-Java/out/production/Advanced-Java/DesignPatterns/state/ToolType.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/DesignPatterns/state/ToolType.class
rename to Advanced-Java/out/production/Advanced-Java/DesignPatterns/state/ToolType.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/FunctionalProgramming/Gender.class b/Advanced-Java/out/production/Advanced-Java/FunctionalProgramming/Gender.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/FunctionalProgramming/Gender.class
rename to Advanced-Java/out/production/Advanced-Java/FunctionalProgramming/Gender.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/FunctionalProgramming/Main.class b/Advanced-Java/out/production/Advanced-Java/FunctionalProgramming/Main.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/FunctionalProgramming/Main.class
rename to Advanced-Java/out/production/Advanced-Java/FunctionalProgramming/Main.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/FunctionalProgramming/Person.class b/Advanced-Java/out/production/Advanced-Java/FunctionalProgramming/Person.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/FunctionalProgramming/Person.class
rename to Advanced-Java/out/production/Advanced-Java/FunctionalProgramming/Person.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/FunctionalProgramming/_Function.class b/Advanced-Java/out/production/Advanced-Java/FunctionalProgramming/_Function.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/FunctionalProgramming/_Function.class
rename to Advanced-Java/out/production/Advanced-Java/FunctionalProgramming/_Function.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/FunctionalProgramming/_Predicate.class b/Advanced-Java/out/production/Advanced-Java/FunctionalProgramming/_Predicate.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/FunctionalProgramming/_Predicate.class
rename to Advanced-Java/out/production/Advanced-Java/FunctionalProgramming/_Predicate.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/FunctionalProgramming/_Supplier.class b/Advanced-Java/out/production/Advanced-Java/FunctionalProgramming/_Supplier.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/FunctionalProgramming/_Supplier.class
rename to Advanced-Java/out/production/Advanced-Java/FunctionalProgramming/_Supplier.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/META-INF/Advanced-Java.kotlin_module b/Advanced-Java/out/production/Advanced-Java/META-INF/Advanced-Java.kotlin_module
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/META-INF/Advanced-Java.kotlin_module
rename to Advanced-Java/out/production/Advanced-Java/META-INF/Advanced-Java.kotlin_module
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/Optionals/_Optionals.class b/Advanced-Java/out/production/Advanced-Java/Optionals/_Optionals.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/Optionals/_Optionals.class
rename to Advanced-Java/out/production/Advanced-Java/Optionals/_Optionals.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/csv_reader/CSVReader.class b/Advanced-Java/out/production/Advanced-Java/csv_reader/CSVReader.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/csv_reader/CSVReader.class
rename to Advanced-Java/out/production/Advanced-Java/csv_reader/CSVReader.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/csv_reader/data.csv b/Advanced-Java/out/production/Advanced-Java/csv_reader/data.csv
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/csv_reader/data.csv
rename to Advanced-Java/out/production/Advanced-Java/csv_reader/data.csv
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/dsa_koffman_ch2/JUnitTest.class b/Advanced-Java/out/production/Advanced-Java/dsa_koffman_ch2/JUnitTest.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/dsa_koffman_ch2/JUnitTest.class
rename to Advanced-Java/out/production/Advanced-Java/dsa_koffman_ch2/JUnitTest.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/dsa_koffman_ch2/OrderedList.class b/Advanced-Java/out/production/Advanced-Java/dsa_koffman_ch2/OrderedList.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/dsa_koffman_ch2/OrderedList.class
rename to Advanced-Java/out/production/Advanced-Java/dsa_koffman_ch2/OrderedList.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/dsa_koffman_ch2/TestOrderedList.class b/Advanced-Java/out/production/Advanced-Java/dsa_koffman_ch2/TestOrderedList.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/dsa_koffman_ch2/TestOrderedList.class
rename to Advanced-Java/out/production/Advanced-Java/dsa_koffman_ch2/TestOrderedList.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/interfaces/Employee.class b/Advanced-Java/out/production/Advanced-Java/interfaces/Employee.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/interfaces/Employee.class
rename to Advanced-Java/out/production/Advanced-Java/interfaces/Employee.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/interfaces/Person.class b/Advanced-Java/out/production/Advanced-Java/interfaces/Person.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/interfaces/Person.class
rename to Advanced-Java/out/production/Advanced-Java/interfaces/Person.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/interfaces/TaxCollector.class b/Advanced-Java/out/production/Advanced-Java/interfaces/TaxCollector.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/interfaces/TaxCollector.class
rename to Advanced-Java/out/production/Advanced-Java/interfaces/TaxCollector.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/interfaces/TaxPayer.class b/Advanced-Java/out/production/Advanced-Java/interfaces/TaxPayer.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/interfaces/TaxPayer.class
rename to Advanced-Java/out/production/Advanced-Java/interfaces/TaxPayer.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/java8_features/FunctionalInterfaces.class b/Advanced-Java/out/production/Advanced-Java/java8_features/FunctionalInterfaces.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/java8_features/FunctionalInterfaces.class
rename to Advanced-Java/out/production/Advanced-Java/java8_features/FunctionalInterfaces.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/java8_features/GreetingService.class b/Advanced-Java/out/production/Advanced-Java/java8_features/GreetingService.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/java8_features/GreetingService.class
rename to Advanced-Java/out/production/Advanced-Java/java8_features/GreetingService.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/java8_features/Lambda.class b/Advanced-Java/out/production/Advanced-Java/java8_features/Lambda.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/java8_features/Lambda.class
rename to Advanced-Java/out/production/Advanced-Java/java8_features/Lambda.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/java8_features/LocalDateTimeExample.class b/Advanced-Java/out/production/Advanced-Java/java8_features/LocalDateTimeExample.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/java8_features/LocalDateTimeExample.class
rename to Advanced-Java/out/production/Advanced-Java/java8_features/LocalDateTimeExample.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/java8_features/MathOperation.class b/Advanced-Java/out/production/Advanced-Java/java8_features/MathOperation.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/java8_features/MathOperation.class
rename to Advanced-Java/out/production/Advanced-Java/java8_features/MathOperation.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/java8_features/MethodReference.class b/Advanced-Java/out/production/Advanced-Java/java8_features/MethodReference.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/java8_features/MethodReference.class
rename to Advanced-Java/out/production/Advanced-Java/java8_features/MethodReference.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/java8_features/Stream.class b/Advanced-Java/out/production/Advanced-Java/java8_features/Stream.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/java8_features/Stream.class
rename to Advanced-Java/out/production/Advanced-Java/java8_features/Stream.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/java_gc/FinalizeExample.class b/Advanced-Java/out/production/Advanced-Java/java_gc/FinalizeExample.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/java_gc/FinalizeExample.class
rename to Advanced-Java/out/production/Advanced-Java/java_gc/FinalizeExample.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/java_gc/Person.class b/Advanced-Java/out/production/Advanced-Java/java_gc/Person.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/java_gc/Person.class
rename to Advanced-Java/out/production/Advanced-Java/java_gc/Person.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/java_gc/PersonMetaData.class b/Advanced-Java/out/production/Advanced-Java/java_gc/PersonMetaData.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/java_gc/PersonMetaData.class
rename to Advanced-Java/out/production/Advanced-Java/java_gc/PersonMetaData.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/java_gc/WeakHashMapExample.class b/Advanced-Java/out/production/Advanced-Java/java_gc/WeakHashMapExample.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/java_gc/WeakHashMapExample.class
rename to Advanced-Java/out/production/Advanced-Java/java_gc/WeakHashMapExample.class
diff --git a/Java/Advanced-Java/out/production/Advanced-Java/java_gc/WeakReferenceExample.class b/Advanced-Java/out/production/Advanced-Java/java_gc/WeakReferenceExample.class
similarity index 100%
rename from Java/Advanced-Java/out/production/Advanced-Java/java_gc/WeakReferenceExample.class
rename to Advanced-Java/out/production/Advanced-Java/java_gc/WeakReferenceExample.class
diff --git a/Java/Advanced-Java/src/AsyncProgramming/CompletableFutureExample.java b/Advanced-Java/src/AsyncProgramming/CompletableFutureExample.java
similarity index 100%
rename from Java/Advanced-Java/src/AsyncProgramming/CompletableFutureExample.java
rename to Advanced-Java/src/AsyncProgramming/CompletableFutureExample.java
diff --git a/Java/Advanced-Java/src/Callbacks/Callbacks.java b/Advanced-Java/src/Callbacks/Callbacks.java
similarity index 100%
rename from Java/Advanced-Java/src/Callbacks/Callbacks.java
rename to Advanced-Java/src/Callbacks/Callbacks.java
diff --git a/Java/Advanced-Java/src/Callbacks/Lambdas.java b/Advanced-Java/src/Callbacks/Lambdas.java
similarity index 100%
rename from Java/Advanced-Java/src/Callbacks/Lambdas.java
rename to Advanced-Java/src/Callbacks/Lambdas.java
diff --git a/Java/Advanced-Java/src/CombinatorPattern/Customer.java b/Advanced-Java/src/CombinatorPattern/Customer.java
similarity index 100%
rename from Java/Advanced-Java/src/CombinatorPattern/Customer.java
rename to Advanced-Java/src/CombinatorPattern/Customer.java
diff --git a/Java/Advanced-Java/src/CombinatorPattern/CustomerRegistrationValidator.java b/Advanced-Java/src/CombinatorPattern/CustomerRegistrationValidator.java
similarity index 100%
rename from Java/Advanced-Java/src/CombinatorPattern/CustomerRegistrationValidator.java
rename to Advanced-Java/src/CombinatorPattern/CustomerRegistrationValidator.java
diff --git a/Java/Advanced-Java/src/CombinatorPattern/CustomerValidatorService.java b/Advanced-Java/src/CombinatorPattern/CustomerValidatorService.java
similarity index 100%
rename from Java/Advanced-Java/src/CombinatorPattern/CustomerValidatorService.java
rename to Advanced-Java/src/CombinatorPattern/CustomerValidatorService.java
diff --git a/Java/Advanced-Java/src/CombinatorPattern/Main.java b/Advanced-Java/src/CombinatorPattern/Main.java
similarity index 100%
rename from Java/Advanced-Java/src/CombinatorPattern/Main.java
rename to Advanced-Java/src/CombinatorPattern/Main.java
diff --git a/Java/Advanced-Java/src/CombinatorPattern/ValidationResult.java b/Advanced-Java/src/CombinatorPattern/ValidationResult.java
similarity index 100%
rename from Java/Advanced-Java/src/CombinatorPattern/ValidationResult.java
rename to Advanced-Java/src/CombinatorPattern/ValidationResult.java
diff --git a/Java/Advanced-Java/src/Concurrency/ConditionExample.java b/Advanced-Java/src/Concurrency/ConditionExample.java
similarity index 100%
rename from Java/Advanced-Java/src/Concurrency/ConditionExample.java
rename to Advanced-Java/src/Concurrency/ConditionExample.java
diff --git a/Java/Advanced-Java/src/Concurrency/MyRunnable.java b/Advanced-Java/src/Concurrency/MyRunnable.java
similarity index 100%
rename from Java/Advanced-Java/src/Concurrency/MyRunnable.java
rename to Advanced-Java/src/Concurrency/MyRunnable.java
diff --git a/Java/Advanced-Java/src/Concurrency/MyRunnableMain.java b/Advanced-Java/src/Concurrency/MyRunnableMain.java
similarity index 100%
rename from Java/Advanced-Java/src/Concurrency/MyRunnableMain.java
rename to Advanced-Java/src/Concurrency/MyRunnableMain.java
diff --git a/Java/Advanced-Java/src/Concurrency/ThreadLocalExample.java b/Advanced-Java/src/Concurrency/ThreadLocalExample.java
similarity index 100%
rename from Java/Advanced-Java/src/Concurrency/ThreadLocalExample.java
rename to Advanced-Java/src/Concurrency/ThreadLocalExample.java
diff --git a/Java/Advanced-Java/src/Concurrency/VolatileOrAtomic.java b/Advanced-Java/src/Concurrency/VolatileOrAtomic.java
similarity index 100%
rename from Java/Advanced-Java/src/Concurrency/VolatileOrAtomic.java
rename to Advanced-Java/src/Concurrency/VolatileOrAtomic.java
diff --git a/Java/Advanced-Java/src/DesignPatterns/TaxCalculator.java b/Advanced-Java/src/DesignPatterns/TaxCalculator.java
similarity index 100%
rename from Java/Advanced-Java/src/DesignPatterns/TaxCalculator.java
rename to Advanced-Java/src/DesignPatterns/TaxCalculator.java
diff --git a/Java/Advanced-Java/src/DesignPatterns/TaxCalculator2019.java b/Advanced-Java/src/DesignPatterns/TaxCalculator2019.java
similarity index 100%
rename from Java/Advanced-Java/src/DesignPatterns/TaxCalculator2019.java
rename to Advanced-Java/src/DesignPatterns/TaxCalculator2019.java
diff --git a/Java/Advanced-Java/src/DesignPatterns/TaxCalculator2020.java b/Advanced-Java/src/DesignPatterns/TaxCalculator2020.java
similarity index 100%
rename from Java/Advanced-Java/src/DesignPatterns/TaxCalculator2020.java
rename to Advanced-Java/src/DesignPatterns/TaxCalculator2020.java
diff --git a/Java/Advanced-Java/src/DesignPatterns/User.java b/Advanced-Java/src/DesignPatterns/User.java
similarity index 100%
rename from Java/Advanced-Java/src/DesignPatterns/User.java
rename to Advanced-Java/src/DesignPatterns/User.java
diff --git a/Java/Advanced-Java/src/DesignPatterns/memento/Editor.java b/Advanced-Java/src/DesignPatterns/memento/Editor.java
similarity index 100%
rename from Java/Advanced-Java/src/DesignPatterns/memento/Editor.java
rename to Advanced-Java/src/DesignPatterns/memento/Editor.java
diff --git a/Java/Advanced-Java/src/DesignPatterns/memento/EditorState.java b/Advanced-Java/src/DesignPatterns/memento/EditorState.java
similarity index 100%
rename from Java/Advanced-Java/src/DesignPatterns/memento/EditorState.java
rename to Advanced-Java/src/DesignPatterns/memento/EditorState.java
diff --git a/Java/Advanced-Java/src/DesignPatterns/memento/History.java b/Advanced-Java/src/DesignPatterns/memento/History.java
similarity index 100%
rename from Java/Advanced-Java/src/DesignPatterns/memento/History.java
rename to Advanced-Java/src/DesignPatterns/memento/History.java
diff --git a/Java/Advanced-Java/src/DesignPatterns/memento/Main.java b/Advanced-Java/src/DesignPatterns/memento/Main.java
similarity index 100%
rename from Java/Advanced-Java/src/DesignPatterns/memento/Main.java
rename to Advanced-Java/src/DesignPatterns/memento/Main.java
diff --git a/Java/Advanced-Java/src/DesignPatterns/state/BrushTool.java b/Advanced-Java/src/DesignPatterns/state/BrushTool.java
similarity index 100%
rename from Java/Advanced-Java/src/DesignPatterns/state/BrushTool.java
rename to Advanced-Java/src/DesignPatterns/state/BrushTool.java
diff --git a/Java/Advanced-Java/src/DesignPatterns/state/Canvas.java b/Advanced-Java/src/DesignPatterns/state/Canvas.java
similarity index 100%
rename from Java/Advanced-Java/src/DesignPatterns/state/Canvas.java
rename to Advanced-Java/src/DesignPatterns/state/Canvas.java
diff --git a/Java/Advanced-Java/src/DesignPatterns/state/Main.java b/Advanced-Java/src/DesignPatterns/state/Main.java
similarity index 100%
rename from Java/Advanced-Java/src/DesignPatterns/state/Main.java
rename to Advanced-Java/src/DesignPatterns/state/Main.java
diff --git a/Java/Advanced-Java/src/DesignPatterns/state/Selection.java b/Advanced-Java/src/DesignPatterns/state/Selection.java
similarity index 100%
rename from Java/Advanced-Java/src/DesignPatterns/state/Selection.java
rename to Advanced-Java/src/DesignPatterns/state/Selection.java
diff --git a/Java/Advanced-Java/src/DesignPatterns/state/Tool.java b/Advanced-Java/src/DesignPatterns/state/Tool.java
similarity index 100%
rename from Java/Advanced-Java/src/DesignPatterns/state/Tool.java
rename to Advanced-Java/src/DesignPatterns/state/Tool.java
diff --git a/Java/Advanced-Java/src/DesignPatterns/state/ToolType.java b/Advanced-Java/src/DesignPatterns/state/ToolType.java
similarity index 100%
rename from Java/Advanced-Java/src/DesignPatterns/state/ToolType.java
rename to Advanced-Java/src/DesignPatterns/state/ToolType.java
diff --git a/Java/Advanced-Java/src/FunctionalProgramming/Gender.java b/Advanced-Java/src/FunctionalProgramming/Gender.java
similarity index 100%
rename from Java/Advanced-Java/src/FunctionalProgramming/Gender.java
rename to Advanced-Java/src/FunctionalProgramming/Gender.java
diff --git a/Java/Advanced-Java/src/FunctionalProgramming/Main.java b/Advanced-Java/src/FunctionalProgramming/Main.java
similarity index 100%
rename from Java/Advanced-Java/src/FunctionalProgramming/Main.java
rename to Advanced-Java/src/FunctionalProgramming/Main.java
diff --git a/Java/Advanced-Java/src/FunctionalProgramming/Person.java b/Advanced-Java/src/FunctionalProgramming/Person.java
similarity index 100%
rename from Java/Advanced-Java/src/FunctionalProgramming/Person.java
rename to Advanced-Java/src/FunctionalProgramming/Person.java
diff --git a/Java/Advanced-Java/src/FunctionalProgramming/_Function.java b/Advanced-Java/src/FunctionalProgramming/_Function.java
similarity index 100%
rename from Java/Advanced-Java/src/FunctionalProgramming/_Function.java
rename to Advanced-Java/src/FunctionalProgramming/_Function.java
diff --git a/Java/Advanced-Java/src/FunctionalProgramming/_Predicate.java b/Advanced-Java/src/FunctionalProgramming/_Predicate.java
similarity index 100%
rename from Java/Advanced-Java/src/FunctionalProgramming/_Predicate.java
rename to Advanced-Java/src/FunctionalProgramming/_Predicate.java
diff --git a/Java/Advanced-Java/src/FunctionalProgramming/_Supplier.java b/Advanced-Java/src/FunctionalProgramming/_Supplier.java
similarity index 100%
rename from Java/Advanced-Java/src/FunctionalProgramming/_Supplier.java
rename to Advanced-Java/src/FunctionalProgramming/_Supplier.java
diff --git a/Java/Advanced-Java/src/Optionals/_Optionals.java b/Advanced-Java/src/Optionals/_Optionals.java
similarity index 100%
rename from Java/Advanced-Java/src/Optionals/_Optionals.java
rename to Advanced-Java/src/Optionals/_Optionals.java
diff --git a/Java/Advanced-Java/src/csv_reader/CSVReader.java b/Advanced-Java/src/csv_reader/CSVReader.java
similarity index 100%
rename from Java/Advanced-Java/src/csv_reader/CSVReader.java
rename to Advanced-Java/src/csv_reader/CSVReader.java
diff --git a/Java/Advanced-Java/src/csv_reader/data.csv b/Advanced-Java/src/csv_reader/data.csv
similarity index 100%
rename from Java/Advanced-Java/src/csv_reader/data.csv
rename to Advanced-Java/src/csv_reader/data.csv
diff --git a/Java/Advanced-Java/src/dsa_koffman_ch2/JUnitTest.java b/Advanced-Java/src/dsa_koffman_ch2/JUnitTest.java
similarity index 100%
rename from Java/Advanced-Java/src/dsa_koffman_ch2/JUnitTest.java
rename to Advanced-Java/src/dsa_koffman_ch2/JUnitTest.java
diff --git a/Java/Advanced-Java/src/dsa_koffman_ch2/OrderedList.java b/Advanced-Java/src/dsa_koffman_ch2/OrderedList.java
similarity index 100%
rename from Java/Advanced-Java/src/dsa_koffman_ch2/OrderedList.java
rename to Advanced-Java/src/dsa_koffman_ch2/OrderedList.java
diff --git a/Java/Advanced-Java/src/dsa_koffman_ch2/TestOrderedList.java b/Advanced-Java/src/dsa_koffman_ch2/TestOrderedList.java
similarity index 100%
rename from Java/Advanced-Java/src/dsa_koffman_ch2/TestOrderedList.java
rename to Advanced-Java/src/dsa_koffman_ch2/TestOrderedList.java
diff --git a/Java/Advanced-Java/src/interfaces/Employee.java b/Advanced-Java/src/interfaces/Employee.java
similarity index 100%
rename from Java/Advanced-Java/src/interfaces/Employee.java
rename to Advanced-Java/src/interfaces/Employee.java
diff --git a/Java/Advanced-Java/src/interfaces/Person.java b/Advanced-Java/src/interfaces/Person.java
similarity index 100%
rename from Java/Advanced-Java/src/interfaces/Person.java
rename to Advanced-Java/src/interfaces/Person.java
diff --git a/Java/Advanced-Java/src/interfaces/TaxCollector.java b/Advanced-Java/src/interfaces/TaxCollector.java
similarity index 100%
rename from Java/Advanced-Java/src/interfaces/TaxCollector.java
rename to Advanced-Java/src/interfaces/TaxCollector.java
diff --git a/Java/Advanced-Java/src/interfaces/TaxPayer.java b/Advanced-Java/src/interfaces/TaxPayer.java
similarity index 100%
rename from Java/Advanced-Java/src/interfaces/TaxPayer.java
rename to Advanced-Java/src/interfaces/TaxPayer.java
diff --git a/Java/Advanced-Java/src/java8_features/FunctionalInterfaces.java b/Advanced-Java/src/java8_features/FunctionalInterfaces.java
similarity index 100%
rename from Java/Advanced-Java/src/java8_features/FunctionalInterfaces.java
rename to Advanced-Java/src/java8_features/FunctionalInterfaces.java
diff --git a/Java/Advanced-Java/src/java8_features/Lambda.java b/Advanced-Java/src/java8_features/Lambda.java
similarity index 100%
rename from Java/Advanced-Java/src/java8_features/Lambda.java
rename to Advanced-Java/src/java8_features/Lambda.java
diff --git a/Java/Advanced-Java/src/java8_features/LocalDateTimeExample.java b/Advanced-Java/src/java8_features/LocalDateTimeExample.java
similarity index 100%
rename from Java/Advanced-Java/src/java8_features/LocalDateTimeExample.java
rename to Advanced-Java/src/java8_features/LocalDateTimeExample.java
diff --git a/Java/Advanced-Java/src/java8_features/MethodReference.java b/Advanced-Java/src/java8_features/MethodReference.java
similarity index 100%
rename from Java/Advanced-Java/src/java8_features/MethodReference.java
rename to Advanced-Java/src/java8_features/MethodReference.java
diff --git a/Java/Advanced-Java/src/java8_features/Stream.java b/Advanced-Java/src/java8_features/Stream.java
similarity index 100%
rename from Java/Advanced-Java/src/java8_features/Stream.java
rename to Advanced-Java/src/java8_features/Stream.java
diff --git a/Java/Advanced-Java/src/java_gc/FinalizeExample.java b/Advanced-Java/src/java_gc/FinalizeExample.java
similarity index 100%
rename from Java/Advanced-Java/src/java_gc/FinalizeExample.java
rename to Advanced-Java/src/java_gc/FinalizeExample.java
diff --git a/Java/Advanced-Java/src/java_gc/WeakHashMapExample.java b/Advanced-Java/src/java_gc/WeakHashMapExample.java
similarity index 100%
rename from Java/Advanced-Java/src/java_gc/WeakHashMapExample.java
rename to Advanced-Java/src/java_gc/WeakHashMapExample.java
diff --git a/Java/Advanced-Java/src/java_gc/WeakReferenceExample.java b/Advanced-Java/src/java_gc/WeakReferenceExample.java
similarity index 100%
rename from Java/Advanced-Java/src/java_gc/WeakReferenceExample.java
rename to Advanced-Java/src/java_gc/WeakReferenceExample.java
diff --git a/Design-patterns/src/singleton/Captain.java b/Design-patterns/src/singleton/Captain.java
new file mode 100644
index 0000000..dd9c36a
--- /dev/null
+++ b/Design-patterns/src/singleton/Captain.java
@@ -0,0 +1,21 @@
+package singleton;
+
+// final is to avoid having non-static nested classes subclassing Captain
+final class Captain {
+
+ private static Captain captain;
+
+ private Captain() {}
+
+ // synchronized is for multithreaded purpose
+ public static synchronized Captain getInstance() {
+ if (captain == null) { // lazy initialization
+ captain = new Captain();
+ System.out.println("A new captain is created :)");
+ return captain;
+ } else {
+ System.out.println("You already have a captain!");
+ }
+ return captain;
+ }
+}
diff --git a/Design-patterns/src/singleton/SingletonExample.java b/Design-patterns/src/singleton/SingletonExample.java
new file mode 100644
index 0000000..6d8e430
--- /dev/null
+++ b/Design-patterns/src/singleton/SingletonExample.java
@@ -0,0 +1,13 @@
+package singleton;
+
+public class SingletonExample {
+ public static void main(String[] args) {
+ Captain captain1 = Captain.getInstance();
+ Captain captain2 = Captain.getInstance();
+
+ if (captain1 == captain2) {
+ System.out.println("Captain 1 and 2 are same instances");
+ }
+
+ }
+}
diff --git a/interview-preparation.iml b/interview-preparation.iml
index 81ac92b..9dbde82 100644
--- a/interview-preparation.iml
+++ b/interview-preparation.iml
@@ -4,6 +4,7 @@
+