add argument checks