base recipe framework