rewrited functions