One problem: deferring is handled by a script provided in ezscriptmonitor extension, which is installed out of the box only in community version.
Therefore this needs to be handled in some way.
2 of 3 methods are not implemented: updateContentObjects() and deleteOldType()
updateContentObjects() probably does not need implementation as its job should be handled by publishNewType().
deleteOldType() can be implemented by using Content Gateway as it is not an intensive operation.