add argument checking