General observation: this method is way too fucking long...