pass input to the parent run() method
* remove data and callback private properties from the abstract class
* rename boolean option to from_uri
* define a default callback
* callbacks are now defined in the run() method