added whenever gem, added some unit tests