documentation
seperating module and main program