Oh boy that's a lot of code.