Resolves  #3, supports duplication of items