trying to generalise the concept of a structure that can be filtered