refactor abstract to _Abstract avoid use keywords