first checks implementation