It is a little disconcerting to have all these hard-coded sizes.  Maybe a constant or two would make it nicer.