Merged Phil + Nik's code.  Width is a mess