diff --git a/factory-kit/etc/factory-kit.png b/factory-kit/etc/factory-kit.png
new file mode 100644
index 000000000..7093193cb
Binary files /dev/null and b/factory-kit/etc/factory-kit.png differ
diff --git a/factory-kit/etc/factory-kit.ucls b/factory-kit/etc/factory-kit.ucls
new file mode 100644
index 000000000..403fb7e27
--- /dev/null
+++ b/factory-kit/etc/factory-kit.ucls
@@ -0,0 +1,10 @@
+
+  
+      
+        
+      
+    
+  
+
\ No newline at end of file
diff --git a/factory-kit/index.md b/factory-kit/index.md
index 63809ecc3..03fa53de0 100644
--- a/factory-kit/index.md
+++ b/factory-kit/index.md
@@ -10,21 +10,18 @@ tags:
  - Functional
 ---
 
-## Also known as
-Virtual Constructor
-
 ## Intent
 Define factory of immutable content with separated builder and factory interfaces.
 
-
+
 
 ## Applicability
 Use the Factory Kit pattern when
 
 * a class can't anticipate the class of objects it must create
-* you just want a new instance of custom builder instead of global one
-* a class wants its subclasses to specify the objects it creates
-* classes delegate responsibility to one of several helper subclasses, and you want to localize the knowledge of which helper subclass is the delegate
+* you just want a new instance of a custom builder instead of the global one
+* you explicitly want to define types of objects, that factory can build
+* you want a separated builder and creator interface
 
 ## Credits
 
diff --git a/factory-kit/src/main/java/com/iluwatar/factorykit/App.java b/factory-kit/src/main/java/com/iluwatar/factorykit/App.java
index 572b24630..659cc4a33 100644
--- a/factory-kit/src/main/java/com/iluwatar/factorykit/App.java
+++ b/factory-kit/src/main/java/com/iluwatar/factorykit/App.java
@@ -2,14 +2,14 @@ package com.iluwatar.factorykit;
 
 public class App {
 
-    public static void main(String[] args) {
-        WeaponFactory factory = WeaponFactory.factory(builder -> {
-            builder.add(WeaponType.SWORD, Sword::new);
-            builder.add(WeaponType.AXE, Axe::new);
-            builder.add(WeaponType.SPEAR, Spear::new);
-            builder.add(WeaponType.BOW, Bow::new);
-        });
-        Weapon axe = factory.create(WeaponType.AXE);
-        System.out.println(axe);
-    }
+  public static void main(String[] args) {
+    WeaponFactory factory = WeaponFactory.factory(builder -> {
+      builder.add(WeaponType.SWORD, Sword::new);
+      builder.add(WeaponType.AXE, Axe::new);
+      builder.add(WeaponType.SPEAR, Spear::new);
+      builder.add(WeaponType.BOW, Bow::new);
+    });
+    Weapon axe = factory.create(WeaponType.AXE);
+    System.out.println(axe);
+  }
 }
diff --git a/factory-kit/src/main/java/com/iluwatar/factorykit/Axe.java b/factory-kit/src/main/java/com/iluwatar/factorykit/Axe.java
index 8a3ca587b..4e1a5e554 100644
--- a/factory-kit/src/main/java/com/iluwatar/factorykit/Axe.java
+++ b/factory-kit/src/main/java/com/iluwatar/factorykit/Axe.java
@@ -1,7 +1,8 @@
 package com.iluwatar.factorykit;
 
 public class Axe implements Weapon {
-    @Override public String toString() {
-        return "Axe{}";
-    }
+  @Override
+  public String toString() {
+    return "Axe";
+  }
 }
diff --git a/factory-kit/src/main/java/com/iluwatar/factorykit/Bow.java b/factory-kit/src/main/java/com/iluwatar/factorykit/Bow.java
index aac272513..a90f4cf2e 100644
--- a/factory-kit/src/main/java/com/iluwatar/factorykit/Bow.java
+++ b/factory-kit/src/main/java/com/iluwatar/factorykit/Bow.java
@@ -1,7 +1,8 @@
 package com.iluwatar.factorykit;
 
-/**
- * Created by crossy on 2016-01-16.
- */
 public class Bow implements Weapon {
+  @Override
+  public String toString() {
+    return "Bow";
+  }
 }
diff --git a/factory-kit/src/main/java/com/iluwatar/factorykit/Builder.java b/factory-kit/src/main/java/com/iluwatar/factorykit/Builder.java
index e20795a1f..2612fe1e6 100644
--- a/factory-kit/src/main/java/com/iluwatar/factorykit/Builder.java
+++ b/factory-kit/src/main/java/com/iluwatar/factorykit/Builder.java
@@ -2,6 +2,9 @@ package com.iluwatar.factorykit;
 
 import java.util.function.Supplier;
 
+/**
+ * Functional interface that allows adding builder with name to the factory
+ */
 public interface Builder {
-    void add(WeaponType name, Supplier supplier);
+  void add(WeaponType name, Supplier supplier);
 }
diff --git a/factory-kit/src/main/java/com/iluwatar/factorykit/Spear.java b/factory-kit/src/main/java/com/iluwatar/factorykit/Spear.java
index 9bbb41915..a50f54290 100644
--- a/factory-kit/src/main/java/com/iluwatar/factorykit/Spear.java
+++ b/factory-kit/src/main/java/com/iluwatar/factorykit/Spear.java
@@ -1,7 +1,8 @@
 package com.iluwatar.factorykit;
 
 public class Spear implements Weapon {
-    @Override public String toString() {
-        return "Spear{}";
-    }
+  @Override
+  public String toString() {
+    return "Spear";
+  }
 }
diff --git a/factory-kit/src/main/java/com/iluwatar/factorykit/Sword.java b/factory-kit/src/main/java/com/iluwatar/factorykit/Sword.java
index f6e5c5a3e..278febaf5 100644
--- a/factory-kit/src/main/java/com/iluwatar/factorykit/Sword.java
+++ b/factory-kit/src/main/java/com/iluwatar/factorykit/Sword.java
@@ -1,7 +1,8 @@
 package com.iluwatar.factorykit;
 
 public class Sword implements Weapon {
-    @Override public String toString() {
-        return "Sword{}";
-    }
+  @Override
+  public String toString() {
+    return "Sword";
+  }
 }
diff --git a/factory-kit/src/main/java/com/iluwatar/factorykit/Weapon.java b/factory-kit/src/main/java/com/iluwatar/factorykit/Weapon.java
index 039628f3d..4e9daee55 100644
--- a/factory-kit/src/main/java/com/iluwatar/factorykit/Weapon.java
+++ b/factory-kit/src/main/java/com/iluwatar/factorykit/Weapon.java
@@ -1,4 +1,7 @@
 package com.iluwatar.factorykit;
 
+/**
+ * Interface representing weapon
+ */
 public interface Weapon {
 }
diff --git a/factory-kit/src/main/java/com/iluwatar/factorykit/WeaponFactory.java b/factory-kit/src/main/java/com/iluwatar/factorykit/WeaponFactory.java
index e77e2023b..df29e6284 100644
--- a/factory-kit/src/main/java/com/iluwatar/factorykit/WeaponFactory.java
+++ b/factory-kit/src/main/java/com/iluwatar/factorykit/WeaponFactory.java
@@ -4,13 +4,18 @@ import java.util.HashMap;
 import java.util.function.Consumer;
 import java.util.function.Supplier;
 
+/**
+ * Functional interface that represents factory kit. Instance created locally gives an opportunity to strictly define
+ * which objects types the instance of a factory would be able to create. Factory is just a placeholder for builders with
+ * create method to initialize new objects.
+ */
 public interface WeaponFactory {
 
-    Weapon create(WeaponType name);
+  Weapon create(WeaponType name);
 
-    static WeaponFactory factory(Consumer consumer) {
-        HashMap> map = new HashMap<>();
-        consumer.accept(map::put);
-        return name -> map.get(name).get();
-    }
+  static WeaponFactory factory(Consumer consumer) {
+    HashMap> map = new HashMap<>();
+    consumer.accept(map::put);
+    return name -> map.get(name).get();
+  }
 }
diff --git a/factory-kit/src/main/java/com/iluwatar/factorykit/WeaponType.java b/factory-kit/src/main/java/com/iluwatar/factorykit/WeaponType.java
index 1db668b0e..89a17523a 100644
--- a/factory-kit/src/main/java/com/iluwatar/factorykit/WeaponType.java
+++ b/factory-kit/src/main/java/com/iluwatar/factorykit/WeaponType.java
@@ -1,8 +1,5 @@
 package com.iluwatar.factorykit;
 
-/**
- * Created by crossy on 2016-01-16.
- */
 public enum WeaponType {
-    SWORD, AXE, BOW, SPEAR
+  SWORD, AXE, BOW, SPEAR
 }
diff --git a/factory-kit/src/test/java/com/iluwatar/factorykit/app/AppTest.java b/factory-kit/src/test/java/com/iluwatar/factorykit/app/AppTest.java
index 9dbb8444e..9b9af2530 100644
--- a/factory-kit/src/test/java/com/iluwatar/factorykit/app/AppTest.java
+++ b/factory-kit/src/test/java/com/iluwatar/factorykit/app/AppTest.java
@@ -5,9 +5,10 @@ import org.junit.Test;
 
 public class AppTest {
 
-    @Test public void test() {
-        String[] args = {};
-        App.main(args);
-    }
+  @Test
+  public void test() {
+    String[] args = {};
+    App.main(args);
+  }
 }
 
diff --git a/factory-kit/src/test/java/com/iluwatar/factorykit/factorykit/FactoryKitTest.java b/factory-kit/src/test/java/com/iluwatar/factorykit/factorykit/FactoryKitTest.java
index 088b54ba9..ea629f57d 100644
--- a/factory-kit/src/test/java/com/iluwatar/factorykit/factorykit/FactoryKitTest.java
+++ b/factory-kit/src/test/java/com/iluwatar/factorykit/factorykit/FactoryKitTest.java
@@ -6,53 +6,54 @@ import org.junit.Test;
 
 import static org.junit.Assert.assertTrue;
 
-/**
- * Created by crossy on 2016-01-16.
- */
 public class FactoryKitTest {
 
-    private WeaponFactory factory;
+  private WeaponFactory factory;
 
-    @Before public void init() {
-        factory = WeaponFactory.factory(builder -> {
-            builder.add(WeaponType.SPEAR, Spear::new);
-            builder.add(WeaponType.AXE, Axe::new);
-            builder.add(WeaponType.SWORD, Sword::new);
-        });
-    }
+  @Before
+  public void init() {
+    factory = WeaponFactory.factory(builder -> {
+      builder.add(WeaponType.SPEAR, Spear::new);
+      builder.add(WeaponType.AXE, Axe::new);
+      builder.add(WeaponType.SWORD, Sword::new);
+    });
+  }
 
-    /**
-     * Testing {@link WeaponFactory} to produce a SPEAR asserting that the Weapon is an instance of {@link Spear}
-     */
-    @Test public void testSpearWeapon() {
-        Weapon weapon = factory.create(WeaponType.SPEAR);
-        verifyWeapon(weapon, Spear.class);
-    }
+  /**
+   * Testing {@link WeaponFactory} to produce a SPEAR asserting that the Weapon is an instance of {@link Spear}
+   */
+  @Test
+  public void testSpearWeapon() {
+    Weapon weapon = factory.create(WeaponType.SPEAR);
+    verifyWeapon(weapon, Spear.class);
+  }
 
-    /**
-     * Testing {@link WeaponFactory} to produce a AXE asserting that the Weapon is an instance of {@link Axe}
-     */
-    @Test public void testAxeWeapon() {
-        Weapon weapon = factory.create(WeaponType.AXE);
-        verifyWeapon(weapon, Axe.class);
-    }
+  /**
+   * Testing {@link WeaponFactory} to produce a AXE asserting that the Weapon is an instance of {@link Axe}
+   */
+  @Test
+  public void testAxeWeapon() {
+    Weapon weapon = factory.create(WeaponType.AXE);
+    verifyWeapon(weapon, Axe.class);
+  }
 
 
-    /**
-     * Testing {@link WeaponFactory} to produce a SWORD asserting that the Weapon is an instance of {@link Sword}
-     */
-    @Test public void testWeapon() {
-        Weapon weapon = factory.create(WeaponType.SWORD);
-        verifyWeapon(weapon, Sword.class);
-    }
+  /**
+   * Testing {@link WeaponFactory} to produce a SWORD asserting that the Weapon is an instance of {@link Sword}
+   */
+  @Test
+  public void testWeapon() {
+    Weapon weapon = factory.create(WeaponType.SWORD);
+    verifyWeapon(weapon, Sword.class);
+  }
 
-    /**
-     * This method asserts that the weapon object that is passed is an instance of the clazz
-     *
-     * @param weapon weapon object which is to be verified
-     * @param clazz  expected class of the weapon
-     */
-    private void verifyWeapon(Weapon weapon, Class clazz) {
-        assertTrue("Weapon must be an object of: " + clazz.getName(), clazz.isInstance(weapon));
-    }
+  /**
+   * This method asserts that the weapon object that is passed is an instance of the clazz
+   *
+   * @param weapon weapon object which is to be verified
+   * @param clazz  expected class of the weapon
+   */
+  private void verifyWeapon(Weapon weapon, Class clazz) {
+    assertTrue("Weapon must be an object of: " + clazz.getName(), clazz.isInstance(weapon));
+  }
 }
diff --git a/factory-method/src/test/java/com/iluwatar/factory/method/FactoryMethodTest.java b/factory-method/src/test/java/com/iluwatar/factory/method/FactoryMethodTest.java
index 6a9b03d2e..2ef0de990 100644
--- a/factory-method/src/test/java/com/iluwatar/factory/method/FactoryMethodTest.java
+++ b/factory-method/src/test/java/com/iluwatar/factory/method/FactoryMethodTest.java
@@ -19,57 +19,61 @@ import static org.junit.Assert.assertTrue;
  */
 public class FactoryMethodTest {
 
-    /**
-     * Testing {@link OrcBlacksmith} to produce a SPEAR asserting that the Weapon is an instance
-     * of {@link OrcWeapon}.
-     */
-    @Test public void testOrcBlacksmithWithSpear() {
-        Blacksmith blacksmith = new OrcBlacksmith();
-        Weapon weapon = blacksmith.manufactureWeapon(WeaponType.SPEAR);
-        verifyWeapon(weapon, WeaponType.SPEAR, OrcWeapon.class);
-    }
+  /**
+   * Testing {@link OrcBlacksmith} to produce a SPEAR asserting that the Weapon is an instance
+   * of {@link OrcWeapon}.
+   */
+  @Test
+  public void testOrcBlacksmithWithSpear() {
+    Blacksmith blacksmith = new OrcBlacksmith();
+    Weapon weapon = blacksmith.manufactureWeapon(WeaponType.SPEAR);
+    verifyWeapon(weapon, WeaponType.SPEAR, OrcWeapon.class);
+  }
 
-    /**
-     * Testing {@link OrcBlacksmith} to produce a AXE asserting that the Weapon is an instance
-     * of {@link OrcWeapon}.
-     */
-    @Test public void testOrcBlacksmithWithAxe() {
-        Blacksmith blacksmith = new OrcBlacksmith();
-        Weapon weapon = blacksmith.manufactureWeapon(WeaponType.AXE);
-        verifyWeapon(weapon, WeaponType.AXE, OrcWeapon.class);
-    }
+  /**
+   * Testing {@link OrcBlacksmith} to produce a AXE asserting that the Weapon is an instance
+   * of {@link OrcWeapon}.
+   */
+  @Test
+  public void testOrcBlacksmithWithAxe() {
+    Blacksmith blacksmith = new OrcBlacksmith();
+    Weapon weapon = blacksmith.manufactureWeapon(WeaponType.AXE);
+    verifyWeapon(weapon, WeaponType.AXE, OrcWeapon.class);
+  }
 
-    /**
-     * Testing {@link ElfBlacksmith} to produce a SHORT_SWORD asserting that the Weapon is an
-     * instance of {@link ElfWeapon}.
-     */
-    @Test public void testElfBlacksmithWithShortSword() {
-        Blacksmith blacksmith = new ElfBlacksmith();
-        Weapon weapon = blacksmith.manufactureWeapon(WeaponType.SHORT_SWORD);
-        verifyWeapon(weapon, WeaponType.SHORT_SWORD, ElfWeapon.class);
-    }
+  /**
+   * Testing {@link ElfBlacksmith} to produce a SHORT_SWORD asserting that the Weapon is an
+   * instance of {@link ElfWeapon}.
+   */
+  @Test
+  public void testElfBlacksmithWithShortSword() {
+    Blacksmith blacksmith = new ElfBlacksmith();
+    Weapon weapon = blacksmith.manufactureWeapon(WeaponType.SHORT_SWORD);
+    verifyWeapon(weapon, WeaponType.SHORT_SWORD, ElfWeapon.class);
+  }
 
-    /**
-     * Testing {@link ElfBlacksmith} to produce a SPEAR asserting that the Weapon is an instance
-     * of {@link ElfWeapon}.
-     */
-    @Test public void testElfBlacksmithWithSpear() {
-        Blacksmith blacksmith = new ElfBlacksmith();
-        Weapon weapon = blacksmith.manufactureWeapon(WeaponType.SPEAR);
-        verifyWeapon(weapon, WeaponType.SPEAR, ElfWeapon.class);
-    }
+  /**
+   * Testing {@link ElfBlacksmith} to produce a SPEAR asserting that the Weapon is an instance
+   * of {@link ElfWeapon}.
+   */
+  @Test
+  public void testElfBlacksmithWithSpear() {
+    Blacksmith blacksmith = new ElfBlacksmith();
+    Weapon weapon = blacksmith.manufactureWeapon(WeaponType.SPEAR);
+    verifyWeapon(weapon, WeaponType.SPEAR, ElfWeapon.class);
+  }
 
-    /**
-     * This method asserts that the weapon object that is passed is an instance of the clazz and the
-     * weapon is of type expectedWeaponType.
-     *
-     * @param weapon             weapon object which is to be verified
-     * @param expectedWeaponType expected WeaponType of the weapon
-     * @param clazz              expected class of the weapon
-     */
-    private void verifyWeapon(Weapon weapon, WeaponType expectedWeaponType, Class clazz) {
-        assertTrue("Weapon must be an object of: " + clazz.getName(), clazz.isInstance(weapon));
-        assertEquals("Weapon must be of weaponType: " + clazz.getName(), expectedWeaponType,
-            weapon.getWeaponType());
-    }
+  /**
+   * This method asserts that the weapon object that is passed is an instance of the clazz and the
+   * weapon is of type expectedWeaponType.
+   *
+   * @param weapon             weapon object which is to be verified
+   * @param expectedWeaponType expected WeaponType of the weapon
+   * @param clazz              expected class of the weapon
+   */
+  private void verifyWeapon(Weapon weapon, WeaponType expectedWeaponType, Class clazz) {
+    assertTrue("Weapon must be an object of: " + clazz.getName(), clazz.isInstance(weapon));
+    assertEquals("Weapon must be of weaponType: " + clazz.getName(), expectedWeaponType,
+        weapon.getWeaponType());
+  }
 }