beginning of implementation