do is_a? tests on assignment so runtime is faster