internal methods rewrite