Cleanup, should rely on exceptions