widget now build off of its json definition