Seperate image output into an external crate, update to use the latest version of Rust, and use Cargo.