complete all do rules except doCastObj, which may be unnecessary