use standard conversion paradigm via constructors
use NONCONST_METHOD macro
remove dead code