arguments should now be given as arrays + error handling