add geometric operations