Why not (finally) expose main.cpp to the user ?

OK, that probably works too.

All I'm saying is that with the above shown 'template' ("bare minimum"), every user will sooner or later find out what goes where. There's really no need to hide that. Or add code that usually doesn't do anything and steals 200 bytes of flash.