fix bug concerning empty elements on the fringe
refactor
exclude sibling descendants