Explained
requirements
Beginning with insert function