introduce the logic