Impliment decorator, move some interfaces around