issue 31, add implementation