dont leak global
gaurd against synchronous changes