Add first variant
Added tests, chaned methods