modifed functions