like widget refactor