serve has better error handling