How to change a light bulb. Normal way. int change(bulb) { double price = 4.9999; double myTime = 10000.002; take_bulb_out(e-); let_cat_play_with_bulb(bulb, e-); place_new_bulb_in(bulb); losses = (cat * price) * (cat * myTime); return losses; } Proper way... int checkBulb(bulb) { if (bulb.off === true) { if (bulb.hot !== true) { if (bulb.maybeBurntOut === true || bulb.maybeBurntOut === false) { if (bulb.burntOut === true) { return true; } else { cry(self); } } } } return false; } double takeNotes(bulb, self) { return bulb.wattage; } double goToCar(bulb.wattage) { go_to_store(bulb.wattage); } void go_to_store(bulb.wattage) { return; // Ah, great... } double go_to_store(bulb.wattage, true) { return newBulb; } void replaceBulb(bulb) { return; // Yay... } ....