always chose the less specific implementation, not the other way around