implemented can_be? feature