#setWithDelegates should only validate when asked to. Also added a little caching to speed it up.