First cut at top-level script