The entire problem here stems from how singly linked lists work. When items get added to the list ( skills load ) they get added to the front. C++ users would recognize this as a list.push_front() operation. If a skill has a long list of affects, they are effectively loaded in reverse. This is not generally much of a problem unless you are trying to do something specific which relies on exact ordering. Yes, I can hear the screams already. Why convert this to a doubly linked list just to solve a minor glitch? Besides the reliability in being able to load the list in the proper order, this also allows the list to be walked in either direction if need be. So look at this as partly bugfix, partly forward planning, and partly as consistency with other lists in the code.