added filter and interfaces for it, using lambdas and streams