abstract type implementation update, #undef label for states