i think i've absracted away the storage mechanism
race conditions everywhere