clean up, add process()