Currently there are a lot of classes of ParticleSources and InnerRegions that differ only by underlying geometic shape, e.g: Inner_region_box, Inner_region_cylinder, Particle_source_box, Particle_source_cylinder etc.
It seems more convenient to extract geometric primitives into separate classes and use objects of such classes inside Particle_source and Inner_region.
See also epicf/ef_python#21