add recovers to catch panics