#21 - added class template implementation