add listener& param support