complete collection base class

needs test
Add test

TODO: use Test::Class