fully working baby!  without the printing.  even exception handling