added base interface for vec