new functions writen