we'd probably want recursion here too