perf optimization, no longer initializing meta in constructor; constructor is back to synchronous; use async.mapSeries to guarantee purge order; eliminates recursive call to purge()