transient impl
add update and merge functions