more initial structure, helper methods, more tests