split discrete geom functions into methods