We were writing concurently.
I also understand the significant amount of coding to optimize everything. If immediate mode suites you, just keep using it. I'm not sure for MacOS, but on Windows/Linux you should be able to use compatibility profile and easily mix ancient and modern approach, and slowly drift to better and more optimized solution. I'm not sure persistent buffer storage can aways beat immediate mode if direct mapping is used, but if you measured performance and concluded so than it is an excellent news.