new functions implemented