incompatible types: unexpected return value