diff --git a/tools/doc/index_template.md.html b/tools/doc/index_template.md.html
index 4cd7e2b..473481d 100644
--- a/tools/doc/index_template.md.html
+++ b/tools/doc/index_template.md.html
@@ -1,179 +1,424 @@
-
- **Sample API Doc**
- 1.1 Release
+
+**SFW Docs**
+
+what it is, notes
-This is the markdeep generic "Company API" template. Replace
-`company-logo-512.png` with your organization's logo and adjust the
-`company-api.css` styling to match the desired colors.
+Compile
+------------------------------------------------------------------
-See `CA::OpenHandle()` for an example of an auto-generated API link.
-The rest of the information on this page is bogus placeholder to show the formatting.
+
+License
+------------------------------------------------------------------
-
-
-
-ENUMS
+CORE
====================================================================================
-Error
-----------------------------------------------------------------------------------------
+Enums
+------------------------------------------------------------------
+
+
+Error
|||ENUM_Error|||
-KeyList
-----------------------------------------------------------------------------------------
+
+
+
+KeyList
|||ENUM_KeyList|||
+
+
+Errors and Logging
+------------------------------------------------------------------
+
+
+Logging
+
+Use the provided macros:
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C
+#define PRINT_TRACE(str)
+#define LOG_TRACE(...)
+
+#define PRINT_MSG(str)
+#define LOG_MSG(...)
+
+#define PRINT_WARN(str)
+#define LOG_WARN(...)
+
+#define PRINT_ERR(str)
+#define ERR_PRINT(str)
+#define LOG_ERR(...)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+
+
+Error
+
+Uses these macros:
+
+Note that the library itself does not use exceptions, it uses these macros exclusively.
+
+Also note that you are not prevented you from using exceptions if you want to in your own code.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C
+#define ERR_FAIL_MSG(msg)
+
+#define ERR_FAIL_V(val)
+
+#define ERR_FAIL_V_MSG(val, msg)
+
+#define ERR_FAIL_INDEX(index, size)
+#define ERR_FAIL_INDEX_MSG(index, size, msg)
+
+#define ERR_FAIL_INDEX_V(index, size, val)
+#define ERR_FAIL_INDEX_V_MSG(index, size, val, msg)
+
+#define ERR_FAIL_COND(cond)
+#define ERR_FAIL_COND_MSG(cond, msg)
+
+#define ERR_FAIL_COND_V(cond, val)
+#define ERR_FAIL_COND_V_MSG(cond, val, msg)
+
+#define ERR_CONTINUE(cond)
+#define ERR_CONTINUE_MSG(cond, msg)
+
+#define ERR_CONTINUE_ACTION(cond, action)
+#define ERR_CONTINUE_ACTION_MSG(cond, action, msg)
+
+#define CRASH_INDEX(index, size)
+#define CRASH_BAD_INDEX(index, size)
+#define CRASH_BAD_UNSIGNED_INDEX(index, size)
+
+#define CRASH_COND(cond)
+#define CRASH_COND_MSG(cond, msg)
+
+#define CRASH_MSG(msg)
+#define CRASH_NOW(msg)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+
+
+Asserts
+
+Use the provided macros:
+
+These should be 'free' checks for program flow and should not be needed in any releases, only used when the DEV_ENABLED define is set.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C
+#define DEV_CHECK(m_cond)
+#define DEV_CHECK_ONCE(m_cond)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+
+Math
+------------------------------------------------------------------
+
+
+Math
+
+|||CLASS_Math|||
+
+
+
+
+Vector2
+
+ |||STRUCT_Vector2|||
+
+
+
+
+Vector2i
+
+ |||STRUCT_Vector2i|||
+
+
+
+
+Vector3
+
+ |||STRUCT_Vector3|||
+
+
+
+
+Vector3i
+
+ |||STRUCT_Vector3i|||
+
+
+
+
+Vector4
+
+ |||STRUCT_Vector4|||
+
+
+
+
+Vector4i
+
+ |||STRUCT_Vector4i|||
+
+
+
+
+Color
+
+ |||STRUCT_Color|||
+
+
+
+
+Rect2
+
+ |||STRUCT_Rect2|||
+
+
+
+
+Rect2i
+
+ |||STRUCT_Rect2i|||
+
+
+
+
+Plane
+
+ |||STRUCT_Plane|||
+
+
+
+
+AABB
+
+ |||STRUCT_AABB|||
+
+
+
+
+Face3
+
+ |||STRUCT_Face3|||
+
+
+
+
+Transform2D
+
+ |||STRUCT_Transform2D|||
+
+
+
+
+Quaternion
+
+ |||STRUCT_Quaternion|||
+
+
+
+
+Basis
+
+ |||STRUCT_Basis|||
+
+
+
+
+Transform
+
+ |||STRUCT_Transform|||
+
+
+
+
+Projection
+
+ |||STRUCT_Projection|||
+
+
+
+
+RandomPCG
+
+ |||CLASS_RandomPCG|||
+
+
+
+String
+------------------------------------------------------------------
+
+Helper Structs
+
+
+CharRange
+
+ |||STRUCT_CharRange|||
+
+
+
+
+StrRange
+
+ |||STRUCT_StrRange|||
+
+
+
+
+NoCaseComparator
+
+ |||STRUCT_NoCaseComparator|||
+
+
+
+
+NaturalNoCaseComparator
+
+ |||STRUCT_NaturalNoCaseComparator|||
+
+
+
+Character Strings
+
+
+StaticCString
+
+ You can statically stoe a C string with this.
+
+ |||STRUCT_StaticCString|||
+
+
+
+
+Char16String
+
+ 16 bit (wide char) char string.
+
+ |||CLASS_Char16String|||
+
+
+
+
+CharString
+
+ 8 bit char string.
+
+ |||CLASS_CharString|||
+
+
+
+
+CharProxy
+
+ Properly stores a reference to an element in a String.
+
+ |||CLASS_CharProxy|||
+
+
+
+Main
+
+
+String
+
+ Main String class. This is what you normally use. Stores characters as 32 bit variables. It's COW (Copy on Write).
+
+ If you want to convert this to a char* use it's utf8() method.
+
+ |||CLASS_String|||
+
+
+
+
+StringName
+
+ A String that is optimized for comparisons using ==.
+
+ |||CLASS_StringName|||
+
+
+
+Containers
+------------------------------------------------------------------
-API Modules
+Files
+------------------------------------------------------------------
+
+
+Threading
+------------------------------------------------------------------
+
+
+OBJECT
====================================================================================
-The CA library is a layer on top of the resource manager and parsing libraries that
-provides utilities for streaming processing and client-side process construction.
-ENUMS
+
+
+RENDER CORE
====================================================================================
-$ENUMS$
+Coordinate Systems
+------------------------------------------------------------------
-STRUCTS
-====================================================================================
+3D TODO doube check z
-$STRUCTS$
-
-CLASSES
-====================================================================================
-
-$CLASSES$
-
-Modules
-----------------------------------------------------------------------------------------
-
-The CA library contains the APIs for applications to allocate and exchange resources.
-
-
-!!! Attention Attention
- Always read all of the documentation.
-
-[CA APIs](#CA)
-: List of APIs to manage external processes.
-
-CA Buffer List APIs
-: Methods to process buffer resources separate from computation.
-
-CA Data Structures
-: Specifies the data structures used for complex cases.
-
-
-## Handles
-
-`CA::OpenHandle(const std::string&)`
-: Open a reference handle.
-
-`CA::ReadMetaData(const Handle&)`
-: Metadata about the event.
-
-`CA::CloseHandle(const Handle&)`
-: Free all handle resources, recursively.
-
-
-CA
-====================================================================================
-
-!!! Warning Warning
- The API content represents the set of APIs you can use directly. Some APIs
- are not documented and we advise you do not use them directly. Using undocumented
- APIs can lead to incompatibility when upgrading to later releases.
-
-
-These examples assume that your directory structure is:
-
-**********************************************************
+******************************************************************
*
-* 📂 ca1
-* |
-* +-- 📄 bar.txt
-* |
-* +-- 📂 foo
-* | |
-* | â‹®
-* |
-* +-- 📂 xsource
-* | |
-* | +-- 📂 data
-* | | |
-* | | +-- 📄 manifest.json
-* | | |
-* | â‹® â‹®
-* |
-* â‹®
-**********************************************************
-[Directory structure.]
+* +x
+* *--->--------. .--->--------.
+* | | | |
+* v +y | | |
+* | | +y ^ ^ +z |
+* | | |/ |
+* '------------' *--->--------'
+* / +x
+* -z
+* 2D 3D
+******************************************************************
-Table
+Application
------------------------------------------------------------------
-Screen | Factor | Used | Efficiency
-----------:|------------:|----------:|---------:
-1366x768 | 3x | 1152x672 | 74%
-1440x900 | 3x | 1152x672 | 60%
-*1600x900* | *4x* | 1536x896 | *96%*
-1680x1050 | 4x | 1536x896 | 78%
-1920x1080 | 4x | 1536x896 | 66%
-*1920x1200*| *5x* | 1920x1120 | *93%*
-[A Table]
-
-
-More Info
+Input
------------------------------------------------------------------
-******************************************************************
-* ^ y
-* |
-* .---------. .----|----.
-* | | | | |
-* | *-------> x | *--------> x
-* | | | | |
-* '----|----' '---------'
-* |
-* v y
-******************************************************************
-[Figure 1: Coordinate Example]
+
+Rendering
+------------------------------------------------------------------
- -----
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ GLSL
-vec3 sphNormal(in vec3 pos, in vec4 sph) {
- return normalize(pos-sph.xyz);
-}
+Materials
+------------------------------------------------------------------
+
+
+
+
+RENDER IMMEDIATE
+====================================================================================
+
+
+
+
+RENDER OBJECTS
+====================================================================================
-vec3 camera(vec2 U, vec2 r, vec3 ro, vec3 la, float fl) {
- vec2 uv = (U - r*.5)/r.y;
- vec3 fwd = normalize(la-ro),
- rgt = normalize(vec3(fwd.z, 0., -fwd.x));
- return normalize(fwd + fl*uv.x*rgt + fl*uv.y*cross(fwd, rgt));
-}
-float vMap(vec3 p) {
- float hit = 0.0;
- vec2 h2 = hash22(floor(p.xz*0.25));
- if (p.z > 0.0) {
- if (p.y < -10.0 && h2.x > 0.5) hit=1.0;
- if (p.y > 10.0 && h2.y > 0.5) hit=1.0;
- }
- return hit;
-}
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-[Code listing]