Add optional width parameter

Added an optional width parameter and did some other tidying up