new functions fully implemented