added crawl by state
refactor
reactored
refactor