partition into separate files and packages