refactored refs : all code in AbstractRef, accepts a source field used with a short name to build the name