bottom up method