The second implementation