I wouldn't go cold turkey to just one nap - most bubs don't really respond well to it. Most bubs really need to make it to 5 hrs of A time before they can handle one nap. What we did was just extend the A time before that first nap and still let her sleep, then do a later catnap and bedtime. Eventually, I did extend bedtime out a bit so I could still get 2 naps in, then she started refusing her catnap, so I did early bedtime. And then, once she made it to 5 hrs of A time it was pretty easy to do just one nap. So he's at 4 hrs now, I'd go to 4 hr 15 or 4 hr 30 if you think he can handle that. I'd keep the middle A time the same (4.5), as it's ok if he's not tired enough to take a full nap, you don't want him to take a full nap anyway (that might actually be why he's grumpy when he wakes, he's wanting a full nap after that A time). Then every week or so, push that morning A time again. You can leave the next one the same or even shorten it a bit (again, since the nap is short anyway).
Or...you could switch entirely and go to short am/long pm. In that case, you want to leave your am nap at the same time - don't extend that A time. You will then need to bring the pm nap earlier as you shorten the am nap.
Generally, a long am/short pm approach works best for bubs who don't like to be woken from naps and don't need a long A time before bed. For bubs who do need a long A time before bed, the short am/long pm approach works best. So it's really up to you and what you think will work best.