open-closed example