figured out recursive special-f