Making better GValue use, still in progress