ok completed + listener first draft