first running implementation