software technicalities