rework code to make Provisioner and Shell Provisioner for flexibility.