start of implementation