There is room for factorization here.