modules now have variables (with $) and synthetic modules (with @)