more like a gem structure, plus some test cases - one fails :-(