why does the compiler think this block needs a return?