finished basic class framework