More general condition.
Bug fixes.
Macros for #B #X and #O.
Use function NAMES instead of functions.
Change name of condition.