There's 60 lines of code here without any whitespace.  Please consider adding some to improve readability.