Make crafting implementation more independent, more reliant on API