added delegate version of Add