I'd use an array; sort the array however and then pop a cell when a notification disappears.
Since the notifications' UIDs are based on their position in the array, they'll automatically move up.
e.g.
for 0 to array.Width
  pick notification with UID array.At(loopindex)
  set notification.Y to (0 + loopindex * notification.Height)
You can also use lerp or some other method to move them more gradually, but that means you have to set their position correctly when they are first created.
The fade behavior is for the visual effect, and the array takes care of the rest.
https://drive.google.com/open?id=0BzomH ... 2ZRQ2tTRVE