it works, now need to be modified to support arguments