constructor accepts metaStore implementation as argument
updating version
refactored sorting of results to account for asyncronous metaStore.get
add doesn't need to call update.  removed unnecessary metaStore.has checks.
metaStore add will always add - even if the record already exists