started on query and filter visitor pattern