nice exception handling and stuff... mostly stuff...