Added some structure to reuse the core make logic