finish porting forward