only api calls used
dynamic copy of contribution fields
add error handling