allow subfunction replacement
allow subfunction replacement