move vector implementation to separate file
convert class to typename for template