All these components only differ on the list that they use to add an element. Please refactor to remove the duplication