https://patents.google.com/patent/US7401326B1/en https://patents.google.com/patent/US8321465B2/en https://patents.google.com/patent/US7818732B2/en