Loads of changes
Moved to a main caller