Updated request to not use globals
Restructuring to use interfaces