argument check etc.