this isn't recursive but I feel like it should be