todo: make geometry primitives