Written some of implementation