Split out the kernel code from BP

There is going to be quite a bit of repetition with kernel code when
TRBP is included, splitting it out allows potential for templating and
makes it easier to maintain
Skeleton code for TRBP