UPD: moved some methods from the provider to the context.
UPD: reorganized constants.
UPD: changes based on context concept.