optimisation - replaced RAC with observers in the cell and vm