Add program modes

Path mode isn't functional yet.