add abstract class example
add templates class and templates functions