first pass at file storage functionality