source code reorganized into separate files