diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index 1fb598ef96..180534cff0 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -6,16 +6,21 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
index aa00ffab78..0cd0cea4ac 100644
--- a/.idea/encodings.xml
+++ b/.idea/encodings.xml
@@ -3,5 +3,7 @@
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 4ec2a1b534..740639b35c 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -6,6 +6,11 @@
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
index 45473da3cf..2da9b0836e 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -2,13 +2,16 @@
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index bb5b1dd06d..8996c0a2c9 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,52 +4,41 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -110,7 +99,7 @@
-
+
@@ -124,6 +113,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -137,6 +164,7 @@
+
1618147556538
diff --git a/src/main/java/com/ossez/codebank/algorithm/models/ListNode.java b/src/main/java/com/ossez/codebank/algorithm/models/ListNode.java
deleted file mode 100644
index 81a4985eae..0000000000
--- a/src/main/java/com/ossez/codebank/algorithm/models/ListNode.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.ossez.codebank.algorithm.models;
-
-/**
- *
- * @author YuCheng
- *
- */
-public class ListNode {
- public int val;
- public ListNode next;
-
- public ListNode(int x) {
- val = x;
- next = null;
- }
-}
diff --git a/src/main/java/com/ossez/codebank/algorithm/models/TreeNode.java b/src/main/java/com/ossez/codebank/algorithm/models/TreeNode.java
deleted file mode 100644
index d879b60b16..0000000000
--- a/src/main/java/com/ossez/codebank/algorithm/models/TreeNode.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.ossez.codebank.algorithm.models;
-
-/**
- *
- * @author YuCheng
- *
- */
-public class TreeNode {
- public int val;
- public TreeNode left, right;
-
- public TreeNode(int val) {
- this.val = val;
- this.left = this.right = null;
- }
-}
diff --git a/src/test/java/com/ossez/codebank/algorithm/tests/codility/CodilityBinaryGapTest.java b/src/test/java/com/ossez/codebank/algorithm/tests/codility/CodilityBinaryGapTest.java
deleted file mode 100644
index 88c4405f13..0000000000
--- a/src/test/java/com/ossez/codebank/algorithm/tests/codility/CodilityBinaryGapTest.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package com.ossez.codebank.algorithm.tests.codility;
-
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- *
- * More details about question see link below
- *
- *
- *
- * @author YuCheng
- *
- */
-public class CodilityBinaryGapTest {
-
- private final static Logger logger = LoggerFactory.getLogger(CodilityBinaryGapTest.class);
-
- /**
- *
- */
- @Test
- public void testMain() {
- logger.debug("BEGIN");
-
- int N = 529;
- String intStr = Integer.toBinaryString(N);
-
- intStr = intStr.replace("1", "#1#");
-
- String[] strArray = intStr.split("1");
-
- int maxCount = 0;
- for (int i = 0; i < strArray.length; i++) {
- String checkStr = strArray[i];
- int countLength = 0;
-
- if (checkStr.length() > 2 && checkStr.startsWith("#") && checkStr.endsWith("#")) {
- checkStr = checkStr.replace("#", "");
- countLength = checkStr.length();
-
- if (maxCount < countLength) {
- maxCount = countLength;
- }
-
- }
- }
-
- logger.debug("MAX COUNT: [{}]", maxCount);
- }
-
-}
diff --git a/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0007SerializeAndDeserializeTest.java b/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0007SerializeAndDeserializeTest.java
deleted file mode 100644
index d1c3438ff8..0000000000
--- a/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0007SerializeAndDeserializeTest.java
+++ /dev/null
@@ -1,131 +0,0 @@
-package com.ossez.codebank.algorithm.tests.lintcode;
-
-import java.util.ArrayList;
-
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.ossez.codebank.algorithm.models.TreeNode;
-
-/**
- *
- * 7
- *
- *
- *
- * @author YuCheng
- *
- */
-public class LintCode0007SerializeAndDeserializeTest {
-
- private final static Logger logger = LoggerFactory.getLogger(LintCode0007SerializeAndDeserializeTest.class);
-
- /**
- *
- */
- @Test
- public void testMain() {
- logger.debug("BEGIN");
- String data = "{3,9,20,#,#,15,7}";
-
- System.out.println(serialize(deserialize(data)));
-
- }
-
- /**
- * Deserialize from array to tree
- *
- * @param data
- * @return
- */
- private TreeNode deserialize(String data) {
- // NULL CHECK
- if (data.equals("{}")) {
- return null;
- }
-
- ArrayList treeList = new ArrayList();
-
- data = data.replace("{", "");
- data = data.replace("}", "");
- String[] vals = data.split(",");
-
- // INSERT ROOT
- TreeNode root = new TreeNode(Integer.parseInt(vals[0]));
- treeList.add(root);
-
- int index = 0;
- boolean isLeftChild = true;
- for (int i = 1; i < vals.length; i++) {
- if (!vals[i].equals("#")) {
- TreeNode node = new TreeNode(Integer.parseInt(vals[i]));
- if (isLeftChild) {
- treeList.get(index).left = node;
- } else {
- treeList.get(index).right = node;
- }
- treeList.add(node);
- }
-
- // LEVEL
- if (!isLeftChild) {
- index++;
- }
-
- // MOVE TO RIGHT OR NEXT LEVEL
- isLeftChild = !isLeftChild;
- }
-
- return root;
-
- }
-
- /**
- *
- * @param root
- * @return
- */
- public String serialize(TreeNode root) {
- // write your code here
- if (root == null) {
- return "{}";
- }
-
- ArrayList queue = new ArrayList();
- queue.add(root);
-
- for (int i = 0; i < queue.size(); i++) {
- TreeNode node = queue.get(i);
- if (node == null) {
- continue;
- }
- queue.add(node.left);
- queue.add(node.right);
- }
-
- while (queue.get(queue.size() - 1) == null) {
- queue.remove(queue.size() - 1);
- }
-
- StringBuilder sb = new StringBuilder();
- sb.append("{");
- sb.append(queue.get(0).val);
- for (int i = 1; i < queue.size(); i++) {
- if (queue.get(i) == null) {
- sb.append(",#");
- } else {
- sb.append(",");
- sb.append(queue.get(i).val);
- }
- }
- sb.append("}");
- return sb.toString();
- }
-
-}
diff --git a/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0069LevelOrderTest.java b/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0069LevelOrderTest.java
deleted file mode 100644
index 75633c8b25..0000000000
--- a/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0069LevelOrderTest.java
+++ /dev/null
@@ -1,124 +0,0 @@
-package com.ossez.codebank.algorithm.tests.lintcode;
-
-import java.util.ArrayList;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Queue;
-
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.ossez.codebank.algorithm.models.TreeNode;
-
-/**
- *
- * 69
- *
- *
- *
- * @author YuCheng
- *
- */
-public class LintCode0069LevelOrderTest {
-
- private final static Logger logger = LoggerFactory.getLogger(LintCode0069LevelOrderTest.class);
-
- /**
- *
- */
- @Test
- public void testMain() {
- logger.debug("BEGIN");
- String data = "{3,9,20,#,#,15,7}";
-
- TreeNode tn = deserialize(data);
- System.out.println(levelOrder(tn));
-
- }
-
- /**
- * Deserialize from array to tree
- *
- * @param data
- * @return
- */
- private TreeNode deserialize(String data) {
- // NULL CHECK
- if (data.equals("{}")) {
- return null;
- }
-
- ArrayList treeList = new ArrayList();
-
- data = data.replace("{", "");
- data = data.replace("}", "");
- String[] vals = data.split(",");
-
- // INSERT ROOT
- TreeNode root = new TreeNode(Integer.parseInt(vals[0]));
- treeList.add(root);
-
- int index = 0;
- boolean isLeftChild = true;
- for (int i = 1; i < vals.length; i++) {
- if (!vals[i].equals("#")) {
- TreeNode node = new TreeNode(Integer.parseInt(vals[i]));
- if (isLeftChild) {
- treeList.get(index).left = node;
- } else {
- treeList.get(index).right = node;
- }
- treeList.add(node);
- }
-
- // LEVEL
- if (!isLeftChild) {
- index++;
- }
-
- // MOVE TO RIGHT OR NEXT LEVEL
- isLeftChild = !isLeftChild;
- }
-
- return root;
-
- }
-
- private List> levelOrder(TreeNode root) {
- Queue queue = new LinkedList();
- List> rs = new ArrayList>();
-
- // NULL CHECK
- if (root == null) {
- return rs;
- }
-
- queue.offer(root);
-
- while (!queue.isEmpty()) {
- int length = queue.size();
- List list = new ArrayList();
-
- for (int i = 0; i < length; i++) {
- TreeNode curTN = queue.poll();
- list.add(curTN.val);
- if (curTN.left != null) {
- queue.offer(curTN.left);
- }
- if (curTN.right != null) {
- queue.offer(curTN.right);
- }
- }
-
- rs.add(list);
- }
-
- return rs;
- }
-}
diff --git a/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0102HasCycleTest.java b/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0102HasCycleTest.java
deleted file mode 100644
index 8e63d7cdd2..0000000000
--- a/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0102HasCycleTest.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package com.ossez.codebank.algorithm.tests.lintcode;
-
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.ossez.codebank.algorithm.models.ListNode;
-
-/**
- *
- * 102
- *
- *
- *
- * @author YuCheng
- *
- */
-public class LintCode0102HasCycleTest {
-
- private final static Logger logger = LoggerFactory.getLogger(LintCode0102HasCycleTest.class);
-
- /**
- *
- */
- @Test
- public void testMain() {
- logger.debug("BEGIN");
- // INIT LINKED LIST
- ListNode head = new ListNode(1);
- head.next = new ListNode(2);
- head.next.next = new ListNode(3);
- head.next.next.next = new ListNode(4);
-
- // CREATE A LOOP
- head.next.next.next.next = head.next.next.next;
-
- boolean retResult = false;
-
- // LIKED LIST MAY NULL:
- if (!(head == null || head.next == null)) {
- ListNode s = head;
- ListNode f = head.next;
-
- while (f.next != null && f.next.next != null) {
-
- s = s.next;
- f = f.next.next;
-
- if (f == s) {
- retResult = true;
- break;
- }
- }
- }
-
- System.out.println(retResult);
-
- }
-}
diff --git a/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0165MergeTwoListsTest.java b/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0165MergeTwoListsTest.java
deleted file mode 100644
index 15d4fa17e4..0000000000
--- a/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0165MergeTwoListsTest.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package com.ossez.codebank.algorithm.tests.lintcode;
-
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.ossez.codebank.algorithm.models.ListNode;
-
-/**
- *
- * 102
- *
- *
- *
- * @author YuCheng
- *
- */
-public class LintCode0165MergeTwoListsTest {
-
- private final static Logger logger = LoggerFactory.getLogger(LintCode0165MergeTwoListsTest.class);
-
- /**
- *
- */
- @Test
- public void testMain() {
- logger.debug("BEGIN");
- // INIT LINKED LIST l1
- ListNode l1 = new ListNode(1);
- l1.next = new ListNode(3);
- l1.next.next = new ListNode(8);
- l1.next.next.next = new ListNode(11);
- l1.next.next.next.next = new ListNode(15);
-
- // INIT LINKED LIST l2
- ListNode l2 = new ListNode(2);
-
- // RETURN RESULT
- ListNode retResult = new ListNode(0);
-
- // NULL CHECK
- // if (l1 == null && l2 == null) {
- // retResult = null;
- // }
- //
- // if (l1 == null) {
- // retResult = l2;
- // }
- //
- // if (l2 == null) {
- // retResult = l1;
- // }
-
- // MERGE
- retResult = new ListNode(0);
- ListNode tmpNode = new ListNode(0);
- retResult = tmpNode;
- while (l1 != null & l2 != null) {
- if (l1.val <= l2.val) {
- tmpNode.next = l1;
- l1 = l1.next;
- } else {
- tmpNode.next = l2;
- l2 = l2.next;
- }
-
- tmpNode = tmpNode.next;
- }
-
- if (l1 == null) {
- tmpNode.next = l2;
- }
-
- if (l2 == null) {
- tmpNode.next = l1;
- }
-
- retResult = retResult.next;
-
- System.out.println(retResult.val);
- System.out.println(retResult.next.val);
- System.out.println(retResult.next.next.val);
-
- }
-}
diff --git a/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0425LetterCombinationsTest.java b/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0425LetterCombinationsTest.java
deleted file mode 100644
index 328f7a3367..0000000000
--- a/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0425LetterCombinationsTest.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package com.ossez.codebank.algorithm.tests.lintcode;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- *
- * 425
- *
- *
- *
- * @author YuCheng
- *
- */
-public class LintCode0425LetterCombinationsTest {
-
- private final static Logger logger = LoggerFactory.getLogger(LintCode0425LetterCombinationsTest.class);
-
- /**
- *
- */
- @Test
- public void testMain() {
- logger.debug("LetterCombinationsTest");
- String digits = "23";
-
- HashMap phoneKeyMap = new HashMap();
- phoneKeyMap.put("0", "");
- phoneKeyMap.put("1", "");
- phoneKeyMap.put("2", "abc");
- phoneKeyMap.put("3", "def");
- phoneKeyMap.put("4", "ghi");
- phoneKeyMap.put("5", "jkl");
- phoneKeyMap.put("6", "mno");
- phoneKeyMap.put("7", "pqrs");
- phoneKeyMap.put("8", "tuv");
- phoneKeyMap.put("9", "wxyz");
-
- List retStatus = new ArrayList<>();
-
- if (digits != null && digits.length() != 0) {
- phoneRecursive(digits, retStatus, phoneKeyMap, "", 0);
- }
-
- System.out.println(retStatus);
- }
-
- /**
- * phoneRecursive
- *
- * @param digits
- * @param retStatus
- * @param phoneKeyMap
- * @param comb
- * @param index
- */
- private void phoneRecursive(String digits, List retStatus, HashMap phoneKeyMap, String comb, int index) {
- if (index == digits.length()) {
- retStatus.add(comb);
- return;
- }
-
- char pos = digits.charAt(index);
- for (char c : ((String) phoneKeyMap.get(String.valueOf(pos))).toCharArray()) {
- phoneRecursive(digits, retStatus, phoneKeyMap, comb + c, index + 1);
- }
- }
-}
diff --git a/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0433NumIslandsTest.java b/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0433NumIslandsTest.java
deleted file mode 100644
index 0e8d5cd08c..0000000000
--- a/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode0433NumIslandsTest.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package com.ossez.codebank.algorithm.tests.lintcode;
-
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- *
- * 433
- *
- *
- *
- * @author YuCheng
- *
- */
-public class LintCode0433NumIslandsTest {
-
- private final static Logger logger = LoggerFactory.getLogger(LintCode0433NumIslandsTest.class);
-
- /**
- *
- */
- @Test
- public void testMain() {
- logger.debug("BEGIN");
- // INIT GRID
- boolean[][] grid = { { true, true, false, false, false }, { false, true, false, false, true }, { false, false, false, true, true },
- { false, false, false, false, false }, { false, false, false, false, true }
-
- };
-
- // NULL CHECK
- if (grid.length == 0 || grid[0].length == 0) {
- System.out.println("NULL");
- // return 0;
- }
-
- // GET SIZE
- int n = grid.length;
- int m = grid[0].length;
-
- // ARRAY FOR VISITED LOG
- boolean[][] visited = new boolean[n][m];
-
- int count = 0;
-
- // LOOP FOR GRID
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < m; j++) {
- if (grid[i][j] && !visited[i][j]) {
- numIslandsDFS(grid, visited, i, j);
- count++;
- }
- }
- }
-
- System.out.println(count);
-
- }
-
- /**
- *
- * @param grid
- * @param visited
- * @param x
- * @param y
- */
- public void numIslandsDFS(boolean[][] grid, boolean[][] visited, int x, int y) {
- if (x < 0 || x >= grid.length) {
- return;
- }
-
- if (y < 0 || y >= grid[0].length) {
- return;
- }
-
- if (grid[x][y] != true || visited[x][y]) {
- return;
- }
-
- visited[x][y] = true;
-
- // Recursive call
- numIslandsDFS(grid, visited, x - 1, y);
- numIslandsDFS(grid, visited, x + 1, y);
- numIslandsDFS(grid, visited, x, y - 1);
- numIslandsDFS(grid, visited, x, y + 1);
-
- }
-}
diff --git a/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode1480DotProductTest.java b/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode1480DotProductTest.java
deleted file mode 100644
index b32db4bf6f..0000000000
--- a/src/test/java/com/ossez/codebank/algorithm/tests/lintcode/LintCode1480DotProductTest.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.ossez.codebank.algorithm.tests.lintcode;
-
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- *
- * 1480
- *
- *
- *
- * @author YuCheng
- *
- */
-public class LintCode1480DotProductTest {
-
- private final static Logger logger = LoggerFactory.getLogger(LintCode1480DotProductTest.class);
-
- /**
- *
- */
- @Test
- public void testMain() {
- logger.debug("BEGIN");
- int t = 87;
- int[] dur = { 20, 25, 19, 37 };
- // Write your code here
- }
-
-}
diff --git a/toolkits/.idea/compiler.xml b/toolkits/.idea/compiler.xml
deleted file mode 100644
index 6c6e9b735f..0000000000
--- a/toolkits/.idea/compiler.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/toolkits/.idea/encodings.xml b/toolkits/.idea/encodings.xml
deleted file mode 100644
index a0529939e8..0000000000
--- a/toolkits/.idea/encodings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/toolkits/.idea/jarRepositories.xml b/toolkits/.idea/jarRepositories.xml
deleted file mode 100644
index 712ab9d985..0000000000
--- a/toolkits/.idea/jarRepositories.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/toolkits/.idea/vcs.xml b/toolkits/.idea/vcs.xml
deleted file mode 100644
index 6c0b863585..0000000000
--- a/toolkits/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/main/java/com/ossez/codebank/interview/KayakCountUpDown.java b/toolkits/codebank/src/main/java/com/ossez/toolkits/codebank/common/interview/KayakCountUpDown.java
similarity index 95%
rename from src/main/java/com/ossez/codebank/interview/KayakCountUpDown.java
rename to toolkits/codebank/src/main/java/com/ossez/toolkits/codebank/common/interview/KayakCountUpDown.java
index fa272b22a1..9c4eeda688 100644
--- a/src/main/java/com/ossez/codebank/interview/KayakCountUpDown.java
+++ b/toolkits/codebank/src/main/java/com/ossez/toolkits/codebank/common/interview/KayakCountUpDown.java
@@ -1,4 +1,4 @@
-package com.ossez.codebank.interview;
+package com.ossez.toolkits.codebank.common.interview;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/main/java/com/ossez/codebank/interview/KayakRobotMovement.java b/toolkits/codebank/src/main/java/com/ossez/toolkits/codebank/common/interview/KayakRobotMovement.java
similarity index 93%
rename from src/main/java/com/ossez/codebank/interview/KayakRobotMovement.java
rename to toolkits/codebank/src/main/java/com/ossez/toolkits/codebank/common/interview/KayakRobotMovement.java
index 22cb653292..cb5b9537c8 100644
--- a/src/main/java/com/ossez/codebank/interview/KayakRobotMovement.java
+++ b/toolkits/codebank/src/main/java/com/ossez/toolkits/codebank/common/interview/KayakRobotMovement.java
@@ -1,4 +1,4 @@
-package com.ossez.codebank.interview;
+package com.ossez.toolkits.codebank.common.interview;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/main/java/com/ossez/codebank/interview/ManNextFibonacciNumber.java b/toolkits/codebank/src/main/java/com/ossez/toolkits/codebank/common/interview/ManNextFibonacciNumber.java
similarity index 96%
rename from src/main/java/com/ossez/codebank/interview/ManNextFibonacciNumber.java
rename to toolkits/codebank/src/main/java/com/ossez/toolkits/codebank/common/interview/ManNextFibonacciNumber.java
index d98b2da869..6b0c17ef50 100644
--- a/src/main/java/com/ossez/codebank/interview/ManNextFibonacciNumber.java
+++ b/toolkits/codebank/src/main/java/com/ossez/toolkits/codebank/common/interview/ManNextFibonacciNumber.java
@@ -1,4 +1,4 @@
-package com.ossez.codebank.interview;
+package com.ossez.toolkits.codebank.common.interview;
import java.io.BufferedReader;
import java.io.InputStreamReader;
diff --git a/src/main/java/com/ossez/codebank/algorithm/usecases/VarargsCase.java b/toolkits/codebank/src/main/java/com/ossez/toolkits/codebank/common/usecase/VarargsCase.java
similarity index 100%
rename from src/main/java/com/ossez/codebank/algorithm/usecases/VarargsCase.java
rename to toolkits/codebank/src/main/java/com/ossez/toolkits/codebank/common/usecase/VarargsCase.java
diff --git a/src/main/java/com/ossez/codebank/algorithml/utils/TreeUtils.java b/toolkits/codebank/src/main/java/com/ossez/toolkits/codebank/common/utils/TreeUtils.java
similarity index 85%
rename from src/main/java/com/ossez/codebank/algorithml/utils/TreeUtils.java
rename to toolkits/codebank/src/main/java/com/ossez/toolkits/codebank/common/utils/TreeUtils.java
index aafa847383..09d8ada76a 100644
--- a/src/main/java/com/ossez/codebank/algorithml/utils/TreeUtils.java
+++ b/toolkits/codebank/src/main/java/com/ossez/toolkits/codebank/common/utils/TreeUtils.java
@@ -1,55 +1,57 @@
-package com.ossez.codebank.algorithml.utils;
-
-import java.util.ArrayList;
-
-import com.ossez.codebank.algorithm.models.TreeNode;
-
-/**
- *
- * @author YuCheng
- *
- */
-public class TreeUtils {
-
- public static TreeNode initTree(String data) {
- // NULL CHECK
- if (data.equals("{}")) {
- return null;
- }
-
- ArrayList treeList = new ArrayList();
-
- data = data.replace("{", "");
- data = data.replace("}", "");
- String[] vals = data.split(",");
-
- // INSERT ROOT
- TreeNode root = new TreeNode(Integer.parseInt(vals[0]));
- treeList.add(root);
-
- int index = 0;
- boolean isLeftChild = true;
- for (int i = 1; i < vals.length; i++) {
- if (!vals[i].equals("#")) {
- TreeNode node = new TreeNode(Integer.parseInt(vals[i]));
- if (isLeftChild) {
- treeList.get(index).left = node;
- } else {
- treeList.get(index).right = node;
- }
- treeList.add(node);
- }
-
- // LEVEL
- if (!isLeftChild) {
- index++;
- }
-
- // MOVE TO RIGHT OR NEXT LEVEL
- isLeftChild = !isLeftChild;
- }
-
- return root;
-
- }
-}
+package com.ossez.toolkits.codebank.common.utils;
+
+import com.ossez.toolkits.codebank.common.model.TreeNode;
+
+import java.util.ArrayList;
+
+
+
+/**
+ *
+ * @author YuCheng
+ *
+ */
+public class TreeUtils {
+
+ public static TreeNode initTree(String data) {
+ // NULL CHECK
+ if (data.equals("{}")) {
+ return null;
+ }
+
+ ArrayList treeList = new ArrayList();
+
+ data = data.replace("{", "");
+ data = data.replace("}", "");
+ String[] vals = data.split(",");
+
+ // INSERT ROOT
+ TreeNode root = new TreeNode(Integer.parseInt(vals[0]));
+ treeList.add(root);
+
+ int index = 0;
+ boolean isLeftChild = true;
+ for (int i = 1; i < vals.length; i++) {
+ if (!vals[i].equals("#")) {
+ TreeNode node = new TreeNode(Integer.parseInt(vals[i]));
+ if (isLeftChild) {
+ treeList.get(index).left = node;
+ } else {
+ treeList.get(index).right = node;
+ }
+ treeList.add(node);
+ }
+
+ // LEVEL
+ if (!isLeftChild) {
+ index++;
+ }
+
+ // MOVE TO RIGHT OR NEXT LEVEL
+ isLeftChild = !isLeftChild;
+ }
+
+ return root;
+
+ }
+}
diff --git a/src/test/java/com/ossez/codebank/algorithm/tests/BitOperationTest.java b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/BitOperationTest.java
similarity index 90%
rename from src/test/java/com/ossez/codebank/algorithm/tests/BitOperationTest.java
rename to toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/BitOperationTest.java
index 257c6a3a68..fc432903f3 100644
--- a/src/test/java/com/ossez/codebank/algorithm/tests/BitOperationTest.java
+++ b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/BitOperationTest.java
@@ -1,36 +1,36 @@
-package com.ossez.codebank.algorithm.tests;
-
-import org.apache.commons.math3.util.FastMath;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- *
- * @author YuCheng
- *
- */
-public class BitOperationTest {
-
- private final static Logger logger = LoggerFactory.getLogger(BitOperationTest.class);
-
- /**
- * 35 https://www.lintcode.com/problem/reverse-linked-list/description
- */
- @Test
- public void testInt2Bit() {
- logger.debug("BEGIN");
- System.out.println(Integer.toBinaryString(5));
- System.out.println(Integer.toBinaryString(2));
-
- System.out.println(Integer.toBinaryString(2 << 2));
-
- System.out.println(Integer.parseInt(Integer.toBinaryString(2 << 2), 2));
-
- System.out.println(5 / 3);
- System.out.println(5 % 3);
- FastMath.pow(2, 3);
-
- }
-
-}
+package com.ossez.toolkits.codebank.tests;
+
+import org.apache.commons.math3.util.FastMath;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ *
+ * @author YuCheng
+ *
+ */
+public class BitOperationTest {
+
+ private final static Logger logger = LoggerFactory.getLogger(BitOperationTest.class);
+
+ /**
+ * 35 https://www.lintcode.com/problem/reverse-linked-list/description
+ */
+ @Test
+ public void testInt2Bit() {
+ logger.debug("BEGIN");
+ System.out.println(Integer.toBinaryString(5));
+ System.out.println(Integer.toBinaryString(2));
+
+ System.out.println(Integer.toBinaryString(2 << 2));
+
+ System.out.println(Integer.parseInt(Integer.toBinaryString(2 << 2), 2));
+
+ System.out.println(5 / 3);
+ System.out.println(5 % 3);
+ FastMath.pow(2, 3);
+
+ }
+
+}
diff --git a/src/test/java/com/ossez/codebank/algorithm/tests/LintcodeTest.java b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/LintcodeTest.java
similarity index 96%
rename from src/test/java/com/ossez/codebank/algorithm/tests/LintcodeTest.java
rename to toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/LintcodeTest.java
index 7cf699092d..082e4b6b62 100644
--- a/src/test/java/com/ossez/codebank/algorithm/tests/LintcodeTest.java
+++ b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/LintcodeTest.java
@@ -1,18 +1,12 @@
-package com.ossez.lang.tutorial.tests;
+package com.ossez.toolkits.codebank.tests;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
import java.util.HashSet;
-import java.util.LinkedList;
import java.util.List;
-import java.util.TreeSet;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import javax.management.ListenerNotFoundException;
-
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/test/java/com/ossez/codebank/algorithm/tests/SingletonTest.java b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/SingletonTest.java
similarity index 91%
rename from src/test/java/com/ossez/codebank/algorithm/tests/SingletonTest.java
rename to toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/SingletonTest.java
index 041a9b840c..9e2b343ddc 100644
--- a/src/test/java/com/ossez/codebank/algorithm/tests/SingletonTest.java
+++ b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/SingletonTest.java
@@ -1,69 +1,69 @@
-package com.ossez.codebank.algorithm.tests;
-
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Eager Singleton
- *
- * @author YuCheng
- *
- */
-class EagerSingleton {
- private static final EagerSingleton INSTANCE = new EagerSingleton();
-
- // Private constructor suppresses
- private EagerSingleton() {
- }
-
- // default public constructor
- public static EagerSingleton getInstance() {
- return INSTANCE;
- }
-}
-
-/**
- * Lazy Singleton
- *
- * @author YuCheng
- *
- */
-class LazySingleton {
- private static volatile LazySingleton INSTANCE = null;
-
- // Private constructor suppresses
- // default LazySingleton constructor
- private LazySingleton() {
- }
-
- // thread safe and performance promote
- public static LazySingleton getInstance() {
- if (INSTANCE == null) {
- synchronized (LazySingleton.class) {
- // when more than two threads run into the first null check same time, to avoid instanced more than one time, it needs to be
- // checked again.
- if (INSTANCE == null) {
- INSTANCE = new LazySingleton();
- }
- }
- }
- return INSTANCE;
- }
-}
-
-/**
- *
- * @author YuCheng
- *
- */
-public class SingletonTest {
- private final static Logger logger = LoggerFactory.getLogger(SingletonTest.class);
-
- @Test
- public void testSingleton() {
- logger.debug("TEST Singleton");
-
- }
-
-}
+package com.ossez.toolkits.codebank.tests;
+
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Eager Singleton
+ *
+ * @author YuCheng
+ *
+ */
+class EagerSingleton {
+ private static final EagerSingleton INSTANCE = new EagerSingleton();
+
+ // Private constructor suppresses
+ private EagerSingleton() {
+ }
+
+ // default public constructor
+ public static EagerSingleton getInstance() {
+ return INSTANCE;
+ }
+}
+
+/**
+ * Lazy Singleton
+ *
+ * @author YuCheng
+ *
+ */
+class LazySingleton {
+ private static volatile LazySingleton INSTANCE = null;
+
+ // Private constructor suppresses
+ // default LazySingleton constructor
+ private LazySingleton() {
+ }
+
+ // thread safe and performance promote
+ public static LazySingleton getInstance() {
+ if (INSTANCE == null) {
+ synchronized (LazySingleton.class) {
+ // when more than two threads run into the first null check same time, to avoid instanced more than one time, it needs to be
+ // checked again.
+ if (INSTANCE == null) {
+ INSTANCE = new LazySingleton();
+ }
+ }
+ }
+ return INSTANCE;
+ }
+}
+
+/**
+ *
+ * @author YuCheng
+ *
+ */
+public class SingletonTest {
+ private final static Logger logger = LoggerFactory.getLogger(SingletonTest.class);
+
+ @Test
+ public void testSingleton() {
+ logger.debug("TEST Singleton");
+
+ }
+
+}
diff --git a/src/test/java/com/ossez/codebank/algorithm/tests/TreeTest.java b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/TreeTest.java
similarity index 86%
rename from src/test/java/com/ossez/codebank/algorithm/tests/TreeTest.java
rename to toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/TreeTest.java
index 93a489f5bb..691e52c463 100644
--- a/src/test/java/com/ossez/codebank/algorithm/tests/TreeTest.java
+++ b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/TreeTest.java
@@ -1,85 +1,86 @@
-package com.ossez.codebank.algorithm.tests;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.ossez.codebank.algorithm.models.TreeNode;
-import com.ossez.codebank.algorithml.utils.TreeUtils;
-
-/**
- *
- * @author YuCheng
- *
- */
-public class TreeTest {
- private final static Logger logger = LoggerFactory.getLogger(TreeTest.class);
- private static List loopList = new ArrayList();
-
- @Test
- public void testMain() {
- logger.debug("TREE TEST");
- String data = "{1,2,3,4,5,#,6,#,#,7,8,#,#}";
- TreeNode treeNode = TreeUtils.initTree(data);
-
- // PRE
- loopList = new ArrayList();
- preOrderTraverselRecursion(treeNode);
- System.out.println(loopList);
-
- // IN
- loopList = new ArrayList();
- inOrderTraverselRecursion(treeNode);
- System.out.println(loopList);
-
- // POST
- loopList = new ArrayList();
- postOrderTraversalRecursion(treeNode);
- System.out.println(loopList);
- }
-
-
-
-
- /**
- *
- * @param root
- */
- public void preOrderTraverselRecursion(TreeNode root) {
- if (root != null) {
- loopList.add(root.val);
- preOrderTraverselRecursion(root.left);
- preOrderTraverselRecursion(root.right);
- }
- }
-
- /**
- *
- * @param root
- */
- public void inOrderTraverselRecursion(TreeNode root) {
- if (root != null) {
- inOrderTraverselRecursion(root.left);
- loopList.add(root.val);
- inOrderTraverselRecursion(root.right);
- }
-
- }
-
- /**
- *
- * @param root
- */
- public void postOrderTraversalRecursion(TreeNode root) {
- if (root != null) {
- postOrderTraversalRecursion(root.left);
- postOrderTraversalRecursion(root.right);
- loopList.add(root.val);
- }
-
- }
-
-}
+package com.ossez.toolkits.codebank.tests;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.ossez.toolkits.codebank.common.model.TreeNode;
+import com.ossez.toolkits.codebank.common.utils.TreeUtils;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+
+/**
+ *
+ * @author YuCheng
+ *
+ */
+public class TreeTest {
+ private final static Logger logger = LoggerFactory.getLogger(TreeTest.class);
+ private static List loopList = new ArrayList();
+
+ @Test
+ public void testMain() {
+ logger.debug("TREE TEST");
+ String data = "{1,2,3,4,5,#,6,#,#,7,8,#,#}";
+ TreeNode treeNode = TreeUtils.initTree(data);
+
+ // PRE
+ loopList = new ArrayList();
+ preOrderTraverselRecursion(treeNode);
+ System.out.println(loopList);
+
+ // IN
+ loopList = new ArrayList();
+ inOrderTraverselRecursion(treeNode);
+ System.out.println(loopList);
+
+ // POST
+ loopList = new ArrayList();
+ postOrderTraversalRecursion(treeNode);
+ System.out.println(loopList);
+ }
+
+
+
+
+ /**
+ *
+ * @param root
+ */
+ public void preOrderTraverselRecursion(TreeNode root) {
+ if (root != null) {
+ loopList.add(root.val);
+ preOrderTraverselRecursion(root.left);
+ preOrderTraverselRecursion(root.right);
+ }
+ }
+
+ /**
+ *
+ * @param root
+ */
+ public void inOrderTraverselRecursion(TreeNode root) {
+ if (root != null) {
+ inOrderTraverselRecursion(root.left);
+ loopList.add(root.val);
+ inOrderTraverselRecursion(root.right);
+ }
+
+ }
+
+ /**
+ *
+ * @param root
+ */
+ public void postOrderTraversalRecursion(TreeNode root) {
+ if (root != null) {
+ postOrderTraversalRecursion(root.left);
+ postOrderTraversalRecursion(root.right);
+ loopList.add(root.val);
+ }
+
+ }
+
+}
diff --git a/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/VariableTest.java b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/VariableTest.java
index f2935594dd..c4aa5d3020 100644
--- a/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/VariableTest.java
+++ b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/VariableTest.java
@@ -54,7 +54,8 @@ public class VariableTest extends TestCase {
public void testStaticVariableChange() {
OssezVariable objA = new OssezVariable(1, 2, 3);
- logger.debug("s1/s2/s3 - [{}]/[{}]/[{}]", objA.s1, objA.s2, OssezVariable.s3);
+ logger.debug("s1/s2/s3 - [{}]", Math.round(10.55));
+
OssezVariable objB = new OssezVariable(4, 5, 6);
logger.debug("s1/s2/s3 - [{}]/[{}]/[{}]", objA.s1, objA.s2, OssezVariable.s3);
diff --git a/src/test/java/com/ossez/codebank/interview/tests/AmazonTest.java b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/AmazonTest.java
similarity index 98%
rename from src/test/java/com/ossez/codebank/interview/tests/AmazonTest.java
rename to toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/AmazonTest.java
index df2101b3ca..8aacd8f4fe 100644
--- a/src/test/java/com/ossez/codebank/interview/tests/AmazonTest.java
+++ b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/AmazonTest.java
@@ -1,6 +1,5 @@
-package com.ossez.codebank.interview.tests;
+package com.ossez.toolkits.codebank.tests.interview;
-import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
diff --git a/src/test/java/com/ossez/codebank/interview/tests/KayakTest.java b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/KayakTest.java
similarity index 78%
rename from src/test/java/com/ossez/codebank/interview/tests/KayakTest.java
rename to toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/KayakTest.java
index 19282437d9..e90e1d27c5 100644
--- a/src/test/java/com/ossez/codebank/interview/tests/KayakTest.java
+++ b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/KayakTest.java
@@ -1,64 +1,65 @@
-package com.ossez.codebank.interview.tests;
-
-import static org.junit.Assert.assertEquals;
-
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.ossez.codebank.interview.KayakCountUpDown;
-import com.ossez.codebank.interview.KayakRobotMovement;
-
-/**
- *
- * @author YuCheng
- *
- */
-public class KayakTest {
-
- private final static Logger logger = LoggerFactory.getLogger(KayakTest.class);
-
- /**
- * https://www.cwiki.us/display/ITCLASSIFICATION/Robot+Movement
- *
- * testGetCoordinates
- *
- */
- @Test
- public void testGetCoordinates() {
- logger.debug("TEST Get Coordinat ");
- logger.debug("LFFF - [{}]", KayakRobotMovement.getCoordinates("FF"));
- logger.debug("LFFFRFFFRRFFF - [{}]", KayakRobotMovement.getCoordinates("LFFFRFFFRRFFF"));
-
- assertEquals(KayakRobotMovement.getCoordinates("FF"), "0,2");
- assertEquals(KayakRobotMovement.getCoordinates("LFFFRFFFRRFFF"), "-3,0");
-
- }
-
- /**
- * https://www.cwiki.us/display/ITCLASSIFICATION/Count+Up+Down
- *
- * CountUpDown
- */
- @Test
- public void testCountUpDown() {
- logger.debug("TEST Count Up and Down ");
-
- // 2 -5
- logger.debug("[2 -> 5]");
- logger.debug("UP - {}", new KayakCountUpDown().countUp(2, 5));
- logger.debug("UP & DOWN - {}", new KayakCountUpDown().countUpDown(2, 5));
-
- // 0 - 5
- logger.debug("[0 -> 5]");
- logger.debug("UP - {}", new KayakCountUpDown().countUp(0, 5));
- logger.debug("UP & DOWN - {}", new KayakCountUpDown().countUpDown(0, 5));
-
- // -1 - 5
- logger.debug("[-1 -> 5]");
- logger.debug("UP - {}", new KayakCountUpDown().countUp(-1, 5));
- logger.debug("UP & DOWN - {}", new KayakCountUpDown().countUpDown(-1, 5));
-
- }
-
-}
+package com.ossez.toolkits.codebank.tests.interview;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.ossez.toolkits.codebank.common.interview.KayakCountUpDown;
+import com.ossez.toolkits.codebank.common.interview.KayakRobotMovement;
+
+/**
+ *
+ * @author YuCheng
+ *
+ */
+public class KayakTest {
+
+ private final static Logger logger = LoggerFactory.getLogger(KayakTest.class);
+
+ /**
+ * https://www.cwiki.us/display/ITCLASSIFICATION/Robot+Movement
+ *
+ * testGetCoordinates
+ *
+ */
+ @Test
+ public void testGetCoordinates() {
+ logger.debug("TEST Get Coordinat ");
+ logger.debug("LFFF - [{}]", KayakRobotMovement.getCoordinates("FF"));
+ logger.debug("LFFFRFFFRRFFF - [{}]", KayakRobotMovement.getCoordinates("LFFFRFFFRRFFF"));
+
+ Assert.assertEquals(KayakRobotMovement.getCoordinates("FF"), "0,2");
+ Assert.assertEquals(KayakRobotMovement.getCoordinates("LFFFRFFFRRFFF"), "-3,0");
+
+ }
+
+ /**
+ * https://www.cwiki.us/display/ITCLASSIFICATION/Count+Up+Down
+ *
+ * CountUpDown
+ */
+ @Test
+ public void testCountUpDown() {
+ logger.debug("TEST Count Up and Down ");
+
+ // 2 -5
+ logger.debug("[2 -> 5]");
+ logger.debug("UP - {}", new KayakCountUpDown().countUp(2, 5));
+ logger.debug("UP & DOWN - {}", new KayakCountUpDown().countUpDown(2, 5));
+
+ // 0 - 5
+ logger.debug("[0 -> 5]");
+ logger.debug("UP - {}", new KayakCountUpDown().countUp(0, 5));
+ logger.debug("UP & DOWN - {}", new KayakCountUpDown().countUpDown(0, 5));
+
+ // -1 - 5
+ logger.debug("[-1 -> 5]");
+ logger.debug("UP - {}", new KayakCountUpDown().countUp(-1, 5));
+ logger.debug("UP & DOWN - {}", new KayakCountUpDown().countUpDown(-1, 5));
+
+ }
+
+}
diff --git a/src/test/java/com/ossez/codebank/interview/tests/others/LambdaEvensTest.java b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/LambdaEvensTest.java
similarity index 94%
rename from src/test/java/com/ossez/codebank/interview/tests/others/LambdaEvensTest.java
rename to toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/LambdaEvensTest.java
index 38bdac4519..e17e89777d 100644
--- a/src/test/java/com/ossez/codebank/interview/tests/others/LambdaEvensTest.java
+++ b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/LambdaEvensTest.java
@@ -1,4 +1,4 @@
-package com.ossez.codebank.interview.tests.others;
+package com.ossez.toolkits.codebank.tests.interview;
import org.junit.Test;
import org.slf4j.Logger;
diff --git a/src/test/java/com/ossez/codebank/interview/tests/MassMutual.java b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/MassMutual.java
similarity index 98%
rename from src/test/java/com/ossez/codebank/interview/tests/MassMutual.java
rename to toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/MassMutual.java
index b88a2fe2f0..b322242a7c 100644
--- a/src/test/java/com/ossez/codebank/interview/tests/MassMutual.java
+++ b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/MassMutual.java
@@ -1,4 +1,4 @@
-package com.ossez.codebank.interview.tests;
+package com.ossez.toolkits.codebank.tests.interview;
import java.io.File;
import java.nio.charset.StandardCharsets;
diff --git a/src/test/java/com/ossez/codebank/interview/tests/others/MinimumCoinsTest.java b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/MinimumCoinsTest.java
similarity index 89%
rename from src/test/java/com/ossez/codebank/interview/tests/others/MinimumCoinsTest.java
rename to toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/MinimumCoinsTest.java
index 9b251ae5fd..aa806bfb7e 100644
--- a/src/test/java/com/ossez/codebank/interview/tests/others/MinimumCoinsTest.java
+++ b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/MinimumCoinsTest.java
@@ -1,12 +1,9 @@
-package com.ossez.codebank.interview.tests.others;
+package com.ossez.toolkits.codebank.tests.interview;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.ArrayList;
-import java.util.List;
-
/**
* For Minimum Coins
*
diff --git a/src/test/java/com/ossez/codebank/interview/tests/PillPackTest.java b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/PillPackTest.java
similarity index 94%
rename from src/test/java/com/ossez/codebank/interview/tests/PillPackTest.java
rename to toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/PillPackTest.java
index 17f7e15c5b..3df6538b9f 100644
--- a/src/test/java/com/ossez/codebank/interview/tests/PillPackTest.java
+++ b/toolkits/codebank/src/test/java/com/ossez/toolkits/codebank/tests/interview/PillPackTest.java
@@ -1,83 +1,83 @@
-package com.ossez.codebank.interview.tests;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.stream.Stream;
-
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * PillPack
- *
- *
- * https://www.cwiki.us/display/ITCLASSIFICATION/Flatten+Nested+Arrays
- *
- *
- * @author YuCheng
- *
- */
-public class PillPackTest {
-
- private final static Logger logger = LoggerFactory.getLogger(PillPackTest.class);
-
- List returnList = new ArrayList();
-
- /**
- * https://www.cwiki.us/display/ITCLASSIFICATION/Flatten+Nested+Arrays
- *
- * FlattenNestedArrays
- */
- @Test
- public void testFlattenNestedArrays() {
- logger.debug("Test FlattenNestedArrays");
-
- Object[] array = { 1, 2, new Object[] { 3, 4, new Object[] { 5, new Object[] { new Object[] { 6 } } }, 7 }, 8, 9, 10 };
- logger.debug("LOOP: {} - > {}", Arrays.deepToString(array), Arrays.toString(loopFlatten(array)));
-
- logger.debug("Java 8: {} - > {}", Arrays.deepToString(array), Arrays.toString(java8Flatten(array).toArray()));
-
- }
-
- /**
- * Loop And Recursive
- *
- * @param inputArray
- * @return
- * @throws IllegalArgumentException
- */
- private static Integer[] loopFlatten(Object[] inputArray) throws IllegalArgumentException {
- // NULL CHECK
- if (inputArray == null)
- return null;
-
- List flatList = new ArrayList();
-
- for (Object element : inputArray) {
- if (element instanceof Integer) {
- flatList.add((Integer) element);
- } else if (element instanceof Object[]) {
- // Recursive
- flatList.addAll(Arrays.asList(loopFlatten((Object[]) element)));
- } else {
- throw new IllegalArgumentException("Input must be an array of Integers or nested arrays of Integers");
- }
- }
- return flatList.toArray(new Integer[flatList.size()]);
- }
-
- /**
- * Java 8 Stream to Flatten array.
- *
- * @param array
- * @return
- */
- private static Stream