Refactor and support multi-item