restructured again with top-level package