This is the first commit in series. There are many other things that could be improved, this is just the first renderable version.