completed basic class implementation