added insertion sort implementation