3.1.1.1. Software Implementation