a bit more restructuring