<s>[INST] In this code, `Region` has `upper_bound` and `lower_bound`, so a `Rectangle` object is initialized with `upper_bound` and `lower_bound` when constructed. However, I would like to make the constructor of `Rectangle` take `top`, `right`, `bottom`, and `left` as arguments instead of `upper_bound` and `lower_bound`. Can I achieve this with an intermediate struct?[/INST]