diff --git a/src/main/java/fucoin/Main.java b/src/main/java/fucoin/Main.java
index 3d9aee4dc1624be257d4e686ba92627b5e4325d5..a42c3888e50de17e55c10e477f7d9b213576ed56 100644
--- a/src/main/java/fucoin/Main.java
+++ b/src/main/java/fucoin/Main.java
@@ -24,7 +24,7 @@ import java.util.*;
 
 
 public class Main {
-    
+
     private static ActorSystem cSystem;
 
     static {
@@ -50,8 +50,19 @@ public class Main {
         ConfigurationSelection[] configs = new ConfigurationSelection[configurations.size()];
         configurations.toArray(configs);
 
-        ConfigurationSelection selectedConfig = (ConfigurationSelection) JOptionPane.showInputDialog(null, "Select a configuration to run", "Configuration Selection", JOptionPane.QUESTION_MESSAGE, null, configs, configurations.get(0));
+        // Display the selection dialog to select a configuration
+        ConfigurationSelection selectedConfig = (ConfigurationSelection) JOptionPane.showInputDialog(
+                null,
+                "Select a configuration to run",
+                "Configuration Selection",
+                JOptionPane.QUESTION_MESSAGE,
+                null,
+                configs,
+                configurations.get(0)
+        );
+
         if (selectedConfig != null) {
+            // The Configuration will be an actor in the system, so we tell akka to create the actor
             Props theProps = AbstractConfiguration.props(selectedConfig.getConfigurationClass());
 
             cSystem.actorOf(theProps, "Configuration");
@@ -60,8 +71,16 @@ public class Main {
         }
     }
 
+    /**
+     * This method crawls the fucoin.configurations package for classes extending the AbstractConfiguration.
+     *
+     * @return The list contains all non abstract extensions of AbstractConfiguration in the namespace, wrapped in ConfigurationSelection objects
+     * @throws InstantiationException
+     * @throws IllegalAccessException
+     */
     private static List<ConfigurationSelection> getAbstractConfigurations() throws InstantiationException, IllegalAccessException {
         List<ClassLoader> classLoadersList = new LinkedList<>();
+        // Lots of reflection magic happening here!
         classLoadersList.add(ClasspathHelper.contextClassLoader());
         classLoadersList.add(ClasspathHelper.staticClassLoader());
 
@@ -76,6 +95,7 @@ public class Main {
 
         List<ConfigurationSelection> configurations = new ArrayList<>();
 
+        // Filter the found classes for non abstract classes, that inherit from AbstractConfiguration
         allClasses.stream().filter(oneClass -> !Modifier.isAbstract(oneClass.getModifiers()) && AbstractConfiguration.class.isAssignableFrom(oneClass)).forEach(oneClass -> {
             ConfigurationSelection cfg = new ConfigurationSelection((Class<AbstractConfiguration>) oneClass);
             configurations.add(cfg);
diff --git a/src/main/java/fucoin/configurations/DefaultConfiguration.java b/src/main/java/fucoin/configurations/DefaultConfiguration.java
index ff6df01c578390927427822f4b069a6a4ae508be..81e59cc97c32b41a34b241e172cdf13352839ff1 100644
--- a/src/main/java/fucoin/configurations/DefaultConfiguration.java
+++ b/src/main/java/fucoin/configurations/DefaultConfiguration.java
@@ -5,7 +5,7 @@ import fucoin.actions.control.ActionWalletSendMoney;
 import fucoin.configurations.internal.ConfigurationName;
 
 /**
- *
+ * This configuration is the previous default of 2 wallets with GUI and a supervisor.
  */
 @ConfigurationName("Default Configuration")
 public class DefaultConfiguration extends AbstractConfiguration {
diff --git a/src/main/java/fucoin/configurations/MassWalletConfiguration.java b/src/main/java/fucoin/configurations/MassWalletConfiguration.java
index 0439612a335796f2dcceb859fc5a51bd6a24b221..1ebb3ee921a1d5e8a0dff9febce2a0bc7815f538 100644
--- a/src/main/java/fucoin/configurations/MassWalletConfiguration.java
+++ b/src/main/java/fucoin/configurations/MassWalletConfiguration.java
@@ -3,7 +3,7 @@ package fucoin.configurations;
 import fucoin.configurations.internal.ConfigurationName;
 
 /**
- *
+ * This configuration spawns 200 wallets to demonstrate the spawning of many headless wallets
  */
 @ConfigurationName("Lots of Wallets")
 public class MassWalletConfiguration extends AbstractConfiguration {
diff --git a/src/main/java/fucoin/configurations/internal/ConfigurationCreator.java b/src/main/java/fucoin/configurations/internal/ConfigurationCreator.java
index 423e495c35ba1457b9563f4450a058f8b065fbaa..46e7f0af2d91c5fc631ac15a999dde91a0a9c6ab 100644
--- a/src/main/java/fucoin/configurations/internal/ConfigurationCreator.java
+++ b/src/main/java/fucoin/configurations/internal/ConfigurationCreator.java
@@ -4,7 +4,7 @@ import akka.japi.Creator;
 import fucoin.configurations.AbstractConfiguration;
 
 /**
- *
+ * This is used by Akka to spawn the Configuration Actor
  */
 public class ConfigurationCreator implements Creator<AbstractConfiguration> {
 
diff --git a/src/main/java/fucoin/configurations/internal/ConfigurationName.java b/src/main/java/fucoin/configurations/internal/ConfigurationName.java
index de15502f4b12e17aca529324bae36b638722974d..9f18a0bc1b62767944ec94542a43cb95fc0ad883 100644
--- a/src/main/java/fucoin/configurations/internal/ConfigurationName.java
+++ b/src/main/java/fucoin/configurations/internal/ConfigurationName.java
@@ -4,7 +4,8 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
 /**
- *
+ * This Annotation can be used by Configurations to display
+ * a more friendly title than the class name in the startup dialog
  */
 @Retention(RetentionPolicy.RUNTIME)
 public @interface ConfigurationName {
diff --git a/src/main/java/fucoin/configurations/internal/ConfigurationSelection.java b/src/main/java/fucoin/configurations/internal/ConfigurationSelection.java
index 935ba072bf683ffb6b2e569d1c4935c9edb28d26..f43ec8aa58299cbbf68863162d7005423b05db72 100644
--- a/src/main/java/fucoin/configurations/internal/ConfigurationSelection.java
+++ b/src/main/java/fucoin/configurations/internal/ConfigurationSelection.java
@@ -2,10 +2,9 @@ package fucoin.configurations.internal;
 
 import fucoin.configurations.AbstractConfiguration;
 
-import java.util.Arrays;
-
 /**
- *
+ * A ConfigurationSelection is a wrapper around the configuration class objects
+ * to display a custom text in the configuration selection dropdown.
  */
 public class ConfigurationSelection {
     private Class<AbstractConfiguration> configurationClass;