do not overwrite config block settings

If a  block fails or doesn't provide every field, we should fallback to
the config field. To do so, duplicate a block from the config before
updating it.

Thanks to static allocation, the code has been simplified.

Fixes #4