Refactoring ModificationCommandBatch to improve extensibility

Alternatively we can add another constructor to LazyRef that takes a value