one mistake users might do is to think that they can invoke this several times (after construction) to replace the behavior, should we capture that mistake and throw something?