better exception handling ...