implement firstChild and lastChild