massive reworking of Box.java