finalized first run, need to add module support