pass custom_attrs as dictionary to avoid namespace conflicts