final version: comments, debugging levels
final version: design discussion