improving structure of program. Adding new features.