Improved by making error proof and interactive