abstrated out PrePatcher