extended new functions