separate input generation