added initialise guards to systems so they only initialise once