handle blocks, but need to handle return values correctly