OK, I see. Since you're making multiple `Quadtree` instances for each child, it seems like a waste to have `max_tile_size` duplicated. I think what you want is something like this:

    pub struct Quadtree<T> {
        root: QuadtreeNode<T>,
        scale: f32,
        max_tile_size: uint,
    }

    struct QuadtreeNode<T> {
        tile: Option<T>,
        origin: Point2D<f32>,
        size: f32,
        quadrants: [Option<~QuadtreeNode<T>>, ..4],
    }

For each method on each `QuadtreeNode`, have it take fields of its parent like so:

    impl<T> QuadtreeNode<T> {
        fn munge(&mut self, scale: f32, max_tile_size: uint, ...) {
            ...
        }
    }