added exception layer