uses software algorithms