dev.dinner: restructure into modules