add limit checking