updated implementation per article