make filters chainable and add hash parameter support