Changed all exception to specific objects
Added appropriat Options tests
Added an optional paramter to enable recursive text