key-value store with recursive interpolation