add first impl and cases