new functions to abstract