refactor, add normals, blend