added more tests and ability to cast a generic enumerable