Almost done with the demo version and will clean up code later