Refactor BProperty and BGenProperty