Added a program runner (partially tested and somewhat buggy), but the idea is here