use async loop for transition state, add .repl/* to .gitignore