refactor generators so they are wrapped in IIFE. add controller generator. add communicator to base