Create new Storage component to reduce code duplication between components

Next step after #2088.