add some funtion