restructuring into multiple files