function pass --> module pass
need to clean-up the source a bit.