Added geometry primitives -> lots of refactoring