extract to own module