explain ICommandDataStore<T> in comment