NB - Paraflow currently does not really implement modules yet. NB - The desciption here is subject to much change. ParaFlow has an interesting relationship between files, modules, and objects. A file parses out as a series of declarations. Unless a declaration is explicitly 'public' it is local to the file. Since ParaFlow is a two pass compiler, there is no need for a separate interface file as is the case with .c and .h files in C. A file is a module. A file can also act as an object. Consider a file named config.pf with the following contents: string userName; private string encryptedPassword; string homePage; to checkPassword(string password) into (boolean match) return encrypt.md5(password) == encryptedPassword; to setPassword(string password) encryptedPassword = encrypt.md5(password); This file might be used by another module as so: import "config" print("Please enter password: "); string password = getSecretText(); if (!config.checkPassword(password)) abort("Bad password"); Since ParaFlow allows executable statements outside of a function declaration, a method is needed to run these statements in a file. This is the run function. config.run(); Note the file could also be treated as an object: objectify "config" config user; user.userName = "jim" user.homePage = "www.soe.ucsc.edu/~jim" user.setPassword("bigSecret"); config superuser; superuser.userName = "root" superuser.setPassword("biggerSecret"); All modules that imported config would in a sense share an instance of config.