updated for system requirements, programming level, etc.