This method is too long. Can we split it?