reject abstract types
improve implementation
new method
new benchmark