This is my first draft of this work. More to some.

Please dont merge yet.