Work so far: can be further optimized