Added widget cache and separated modules to store widgets