Learning code the hard way, feel free to criticize me!