forward checking implemented