fine tune error handling, add geo plugin