Big changes but still got bugs. Need to recurse in order.