add spherical coordinate system and remove over-engineering impl