keeps unique, revisit possible deprecation after introduce 'filter'