porting changes from other site