basic class templates
groundwork