currently the error handling does not precisly tell you what went wrong when wrong arguments are called