Well, I don't like much this part. It silently hide when current_item is nil, which looks like bug for me. If you expect nil as part of common work-flow then it should not be in exception handling ( like something exceptional ). and if it is not common work-flow then you should not silently return nil. At least some log would be nice, but exception is better from my POV as you want to catch it quickly ( for sources just google fail quickly )