Item refactor and implemented drag and drop