lets try moving filter special cases outside of the actual filter method