refactor extrude functionality in preparation for CSG