commit decorate pattern