data storage abstracted out to it's own class