Fixing typed selfcheck

buy_sub() is now exception oriented and has unit tests