add: reimplement totient