split out cluster resolution into separate module