added a weird recursive thing