improve firstChild, lastChild, parent, next, prev methods