Adds optional arguments and error handling