initializing commit of new approach
final commit; bug fix, redesign, new test cases, better tests