refactor: use sessions