New Version with a more organize structure
You can use main file to run the code.
All unecessary code was deleted.