nonull needs to be at same leve with src and dest