done with most logic. Need to implement drag-and-drop logic next