Implement TopLevelPushCode / TopLevelPopCode options
Make the factorial example work