added bottom up approaches