minor refactor: introduce widget map