Split source in core/ and extra/ for clarity.