* rerewrite