diff --git a/doc/HowToAddUML.md b/doc/HowToAddUML.md
new file mode 100644
index 0000000000000000000000000000000000000000..8c1c7f4997689f6f40a664e7bfd67b22e2726c8b
--- /dev/null
+++ b/doc/HowToAddUML.md
@@ -0,0 +1,39 @@
+#HowToAddUML
+*How to add plantuml docs to wiki pages Updated Apr 20, 2013 by frost.g...@gmail.com*
+
+Go to http://www.plantuml.com/plantuml and type in the text for you diagram.
+
+Hit submit and check out the diagram.
+
+Once you are happy, so with something like
+
+    start
+    :kernel.execute(range);
+    if (?) then (first call for this instance)
+        : Convert Kernel.run() to OpenCL;
+        note
+           We also convert all
+           methods reachable from
+           kernel.run()
+        end note
+        if (?) then (Conversion was successful)
+           : Compile OpenCL;
+           : Map compiled OpenCL to this Kernel;
+        else (Conversion unsuccessful)
+        endif
+    else (not first call)
+    endif
+    if (?) then (OpenCL mapped for this instance)
+       : Bind args (send to GPU);
+       : Execute kernel;
+    else (false)
+       : Execute using a Java Thread Pool;
+    endif
+    stop
+Paste the resulting URL into the wiki page but append %20as.png at the end of the URL
+
+http://www.plantuml.com:80/plantuml/img/BLAHBLAH%20as.png
+
+To get this!
+
+![Image of UML](uml.png)
\ No newline at end of file
diff --git a/doc/ProfilingKernelExecution.md b/doc/ProfilingKernelExecution.md
new file mode 100644
index 0000000000000000000000000000000000000000..58cc58844f5d51f2cbf4ce2e38a78d16c05b543d
--- /dev/null
+++ b/doc/ProfilingKernelExecution.md
@@ -0,0 +1,53 @@
+#ProfilingKernelExecution
+*Using Aparapi's built in profiling APIs Updated May 7, 2013 by frost.g...@gmail.com*
+
+If you want to extract OpenCL performance info from a kernel at runtime you need to set the property :-
+
+    -Dcom.amd.aparapi.enableProfiling=true
+
+Your application can then call kernel.getProfileInfo() after a successful call to kernel.execute(range) to extract a List List<ProfileInfo>.
+
+Each ProfileInfo holds timing information for buffer writes, executs and buffer reads.
+
+The following code will print a simple table of profile information
+
+    List<ProfileInfo> profileInfo = k.getProfileInfo();
+    for (final ProfileInfo p : profileInfo) {
+       System.out.print(" " + p.getType() + " " + p.getLabel() + " " + (p.getStart() / 1000) + " .. "
+           + (p.getEnd() / 1000) + " " + ((p.getEnd() - p.getStart()) / 1000) + "us");
+       System.out.println();
+    }
+
+Here is an example implementation
+
+            final float result[] = new float[2048*2048];
+            Kernel k = new Kernel(){
+               public void run(){
+                  final int gid=getGlobalId();
+                  result[gid] =0f;
+               }
+            };
+            k.execute(result.length);
+            List<ProfileInfo> profileInfo = k.getProfileInfo();
+
+            for (final ProfileInfo p : profileInfo) {
+               System.out.print(" " + p.getType() + " " + p.getLabel() + " " + (p.getStart() / 1000) + " .. "
+                  + (p.getEnd() / 1000) + " " + ((p.getEnd() - p.getStart()) / 1000) + "us");
+               System.out.println();
+            }
+            k.dispose();
+        }
+    }
+And here is the tabular output from
+
+        java
+           -Djava.library.path=${APARAPI_HOME}
+           -Dcom.amd.aparapi.enableProfiling=true
+           -cp ${APARAPI_HOME}:.
+           MyClass
+
+      W val$result 69500 .. 72694 3194us
+      X exec()     72694 .. 72835  141us
+      R val$result 75327 .. 78225 2898us
+
+The table shows that the transfer of the 'result' buffer to the device ('W') took 3194 us (micro seconds), the execute ('X') of the kernel 141 us and the read ('R') of resulting buffer 2898 us.
\ No newline at end of file
diff --git a/doc/README.md b/doc/README.md
index 0354093d77dba7bfa35c8f2b047393fe02095f32..abf3be0651149a76b44dfb6e2e83721464f4adcb 100644
--- a/doc/README.md
+++ b/doc/README.md
@@ -12,8 +12,8 @@ APARAPI Documentation
 | [SettingUpLinuxHSAMachineForAparapiSidebar](SettingUpLinuxHSAMachineForAparapiSidebar.md) | Sidebar for SettingUpLinuxHSAMachineForAparapi |
 | HSASidebar | |
 | [AddingLambdasToAparapi](AddingLambdasToAparapi.md) | Adding Java 8 Lambda Support to Aparapi |
-| ProfilingKernelExecution | Using Aparapi's built in profiling APIs |
-| HowToAddUML | How to add plantuml docs to wiki pages |
+| [ProfilingKernelExecution](ProfilingKernelExecution.md) | Using Aparapi's built in profiling APIs |
+| [HowToAddUML](HowToAddUML.md) | How to add plantuml docs to wiki pages |
 | LIbraryAgentDuality | Aparapi libraries can now be loaded as JVMTI agents. |
 | FrequentlyAskedQuestions | Frequently Asked Questions|
 | HomePageSuggestions ||
diff --git a/doc/uml.png b/doc/uml.png
new file mode 100644
index 0000000000000000000000000000000000000000..5dfc8690ae8500506d8337472ce5efae832de47c
Binary files /dev/null and b/doc/uml.png differ