Code reorganization, fully supports specifing through command line arguments: 'crossed' or 'random'