some defince for smaller code, to be continue