Complete rework to make the parts as generic as possible.