widgets trigger asynchronously