rewrite some functions