SiteRoot as Site parent for query consistency; move query-related code to models