rearrange souce code