improved bottom-down