top arrow first implementation