df2: add storage layer