refactor delayed setter to avoid instantiating delaysetter