added backgroundworker for processing - now it can be cancelled