refactor to meet the specs
added filters