big commit. restructured as package