first implementation list