use double as return type for moving product since int return type overflows too quickly