add more functions
more functions and test functions