reuse Q1's code