do not mix yield and return