more generic dup object