uses new functions