* A little bit of refactoring, moving stuff to the companion object