accepts message resources as nested hash