refac behaviors doctrine