Made more recursive-y