add dynamic porting