ShaderProgram uses slices instead of silly linked list