After digging into NSOperations again it looks like I implemented it incorrectly here. Based on what I've read, there is no need for -isConcurrent, -isExecuting, and -isFinished to be implemented as our operation should be non-concurrent, whereas the queue is what handles concurrency.