closes #8, though I need better shaders than this