slightly different, passes tests