Refactor, using standard Provider, Function instead of custom interfaces
standard interfaces instead of custom ones