added argument length check
still doesn't type check