Separate shell execution from ui for better usability