cpp: more design work on merged model