differences between Delegate and Interfaces