implement mark 3