The first implementation