with Bill's solution