Sketched out some idea to make the build system more reusable across projects.
diff --git a/SConstruct b/SConstruct
index c714f39..9542696 100644
--- a/SConstruct
+++ b/SConstruct
@@ -1,3 +1,74 @@
+"""
+Build system can be clean-up by sticking to a few core production factory, with automatic dependencies resolution.
+4 basic project productions:
+- library
+- binary
+- documentation
+- tests
+
+* Library:
+  Input:
+    - dependencies (other libraries)
+    - headers: include path & files
+    - sources
+    - generated sources
+    - resources
+    - generated resources
+  Production:
+    - Static library
+    - Dynamic library
+    - Naming rule
+  Life-cycle:
+    - Library compilation
+    - Compilation as a dependencies
+    - Run-time
+    - Packaging
+  Identity:
+    - Name
+    - Version
+* Binary:
+  Input:
+    - dependencies (other libraries)
+    - headers: include path & files (usually empty)
+    - sources
+    - generated sources
+    - resources
+    - generated resources
+    - supported variant (optimized/debug, dll/static...)
+  Production:
+    - Binary executable
+    - Manifest [on some platforms]
+    - Debug symbol [on some platforms]
+  Life-cycle:
+    - Compilation
+    - Run-time
+    - Packaging
+  Identity:
+    - Name
+    - Version
+* Documentation:
+  Input:
+    - dependencies (libraries, binaries)
+    - additional sources
+    - generated sources
+    - resources
+    - generated resources
+    - supported variant (public/internal)
+  Production:
+    - HTML documentation
+    - PDF documentation
+    - CHM documentation
+  Life-cycle:
+    - Documentation
+    - Packaging
+    - Test
+  Identity:
+    - Name
+    - Version
+"""
+
+
+
 import os
 import os.path
 import sys