Up to final stages, implemented a GUI (optional).