More refactoring to support :multiple option