improve on implementation names and precedences