develop canons logic with 2 types of canons
Add comments and todos.