Most of required algorithms were done but not tested yet.