restructured as a proper package