Implement changes discussed in #1821
Made the send function abstract, since its an abstract class
Added basic validation on recipients