model behavior and widget