redesign datastore pattern