Pull public method to interface
remamed the sender interface and implementation
add external config support
using PushConfiguration in all the class and the builder
fixed merge error