use immutable world object instead of atom