I don't know if I 100% like the Pimple design structure. I understand the value in putting things in getter, but having everything as a top level ['item'] seems risky. If one such class does not exist it becomes a unset error, as opposed to more gracefully fail over of getter methods?