separated the kinetic logic