Fixed a problem with throw. By mostly changing signatures and not throwing stuff.