iterate over key value pairs (async/sync)