draft for tree impl
draft for tree impl