switch to interfaces

Now using interfaces to define AssetGatherers
Using init() function to register new Gathererers