struct's predicate should be able to accept all objects as an argument