explanations moved to blackboard.py