move some stuff to separate objects