refactor: make some members final