build a localStorage implementation