diff --git a/changelog.md b/doxygen/changelog.md
similarity index 100%
rename from changelog.md
rename to doxygen/changelog.md
diff --git a/doxygen/header.html b/doxygen/header.html
new file mode 100644
index 000000000..e75be44de
--- /dev/null
+++ b/doxygen/header.html
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+  |
+
+
+
+ $projectname
+ $projectnumber
+
+ $projectbrief
+ |
+
+
+ |
+
+
+
+
+ $projectbrief
+ |
+
+
+
+
+ $searchbox |
+
+
+
+
+
+
+
+
diff --git a/doxygen/started_build_demo.md b/doxygen/started_build_demo.md
new file mode 100644
index 000000000..c99683ba4
--- /dev/null
+++ b/doxygen/started_build_demo.md
@@ -0,0 +1,59 @@
+# Build Demos
+
+
+
+**Table of Contents**
+
+- [LPCXpresso](#lpcxpresso)
+- [Keil](#keil)
+- [IAR](#iar)
+- [Configure demo](#configure-demo)
+
+
+
+## LPCXpresso
+
+LPCXpresso is an eclipse-based IDE, so you will need to create an workspace first then import project files (.cproject & .project) into it. The following step explain how to do just that.
+
+1. Click *File->Import*, then expand the *General* folder and select **Existing Projects into Workspace** and click Next.
+
+ 
+
+2. On the next dialog, Click *Browse* and choose the **repo/demos** folder inside the repo. You should see a list of all demo applications. \[**IMPORTANT**\] Make sure the option **Copy projects into workspace** is **CLEAR**, as demo application uses *link folders* and this option may cause problem with the copy import. Then choose any of the demo application and click *Finish*.
+
+ 
+
+3. Select the configure corresponding to your development board.
+
+ 
+
+4. Then select the correct MCU option from project properties then you are ready to go.
+
+ 
+
+## Keil
+
+It is relatively simple for Keil
+
+1. Open the desired demo project e.g *demos/host/host\_freertos/host_freertos.uvproj*
+2. Select the configure corresponding to your development board and build it.
+
+ 
+
+## IAR
+
+IAR is just as easy as Keil
+
+1. Open the desired demo project e.g *demos/host/host\_freertos/host_freertos.eww*
+2. Again select the configure corresponding to your development board and build it.
+
+ 
+
+## Configure demo ##
+
+Application demo is written to have the code excluded if its required option is not enabled in [tusb_config.h](). Some of combination may exceed the 32KB limit of IAR/Keil so you may want to re-configure to disable some class support, decrease TUSB_CFG_DEBUG or increase the compiler optimization level.
+
+In addition, there are some configuration you can change such as
+
+- CFG_UART_BAUDRATE in board.h
+- CFG_PRINTF_TARGET in the specific board header (e.g board_ea4357.h) to either Semihost, Uart, or SWO.
\ No newline at end of file
diff --git a/doxygen/started_device_demo.md b/doxygen/started_device_demo.md
new file mode 100644
index 000000000..915715a67
--- /dev/null
+++ b/doxygen/started_device_demo.md
@@ -0,0 +1,13 @@
+# Device Demos #
+
+
+
+**Table of Contents**
+
+- [LPCXpresso](#lpcxpresso)
+- [Keil](#keil)
+- [IAR](#iar)
+- [Configure demo](#configure-demo)
+
+
+
diff --git a/doxygen/started_host_demo.md b/doxygen/started_host_demo.md
new file mode 100644
index 000000000..ce23016d6
--- /dev/null
+++ b/doxygen/started_host_demo.md
@@ -0,0 +1,13 @@
+# Host Demos #
+
+
+
+**Table of Contents**
+
+- [LPCXpresso](#lpcxpresso)
+- [Keil](#keil)
+- [IAR](#iar)
+- [Configure demo](#configure-demo)
+
+
+
diff --git a/doxygen/started_run_demo.md b/doxygen/started_run_demo.md
new file mode 100644
index 000000000..1267d8352
--- /dev/null
+++ b/doxygen/started_run_demo.md
@@ -0,0 +1,23 @@
+# Run Demos #
+
+
+
+**Table of Contents**
+
+- [LPCXpresso](#lpcxpresso)
+- [Keil](#keil)
+- [IAR](#iar)
+- [Configure demo](#configure-demo)
+
+
+
+For simplicity and user's convenience, there are only 2 basic application demos which are *Device* and *Host*. Each application demo has a few projects, each for its supported RTOS. For instance in the /demo/device you will find 3 projects
+
+- device\_os\_none for no RTOS
+- device\_freertos for freeRTOS
+- device\_cmsis_rtx for ARM CMSIS with RTX implemenation
+
+
+
+\subpage md_doxygen_started_device_demo
+\subpage md_doxygen_started_host_demo
\ No newline at end of file
diff --git a/tinyusb.Doxyfile b/doxygen/tinyusb.Doxyfile
similarity index 99%
rename from tinyusb.Doxyfile
rename to doxygen/tinyusb.Doxyfile
index 9fb0c858c..aff4afd8d 100644
--- a/tinyusb.Doxyfile
+++ b/doxygen/tinyusb.Doxyfile
@@ -58,7 +58,7 @@ PROJECT_LOGO =
# entered, it will be relative to the location where doxygen was started. If
# left blank the current directory will be used.
-OUTPUT_DIRECTORY = ../../web/gh_page
+OUTPUT_DIRECTORY = ../../../web/gh_page
# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-
# directories (in 2 levels) under the output directory of each output format and
@@ -749,11 +749,11 @@ WARN_LOGFILE =
# spaces.
# Note: If this tag is empty the current directory is searched.
-INPUT = doxygen \
- readme.markdown \
- tinyusb \
- boards \
- tests/readme.md
+INPUT = ../doxygen \
+ ../readme.markdown \
+ ../tinyusb \
+ ../boards \
+ ../tests/readme.md
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses