This is the type of stuff I put myself through at 2AM, no seriously, I started working on this at 2AM and I am writing this at 3AM I need some sleep...