add further testing.
complete tests.