switch to spline-based tube profiles
a few cleanups
reduce redundancy and properly calculate normals