added a ton of comments to make this crappy code, okay code but still buggy