finished basic class structure