refactored and updated diff21 kata