* code restructuring