Top down approach is slow, need to rewrite bottom up