split into two modules