refactor storage interface