Decompose into private modules
Support precise property-value replacement

Fix gh-1