new functions impemented