added more implementation section