refactor: prepare for more state