everything is to document and I left a lot of garbage comments :p
d6ab158
This reverts commit 22e8e3e7dc4f1f83bbb3b8292205e0f73ddc85a8, reversing changes made to d6ab1586ff. possible bug fixes
d6ab1586ff