Factor site parsing into separate module