1) fix bug
2) add new function