Forked o2 to allow for custom storage methods