the final version (GUI)