Refactored to use Contracts where needed + simplyfied modules structure + dried out providers functionality