refactor, add q