rewritten from scratch.. in to a widgetised arreas