added some functions to implement