Separating Smart Template class