Major style changes, added support for vertex shaders, etc etc