Major update to the project, still learning a few concepts