tangents cached, area cached, perimeter cached, new normals calculation, refactoring, updated example