Rewrite the implementation