add collocation module and refactor