only change is to add more 'unit' tests