changed structure with require