change component.json
change code to use supplant component
change tests
expose subs module
refator code, we should remove the function apply
refactor and clean