Don't use boxed trait objects

Boxed trait objects are a great scape goat for solving hard borrow checker errors. But when writing a struct that needs to be reused, you're better off using something else for their interior structure.