change compilation order