basic type-safe vector