first implementation protlog