This method is just too big and it is in need of a refactoring,