implementation of source add* members