add many more functions and export all the public functions