further porting