refactored geometry constructors