add some convinient function
updated