refactor with new binding