Change internal intefaces and start to use Proc