re-implement the functions and prepare for depreciate old functions
remove depreciated functions