moving stuff to its own module