refactoring. use boxes.