add some public functions and bdd hasn't finished