Refactor into library.

Signed-off-by: Peter Atashian <retep998@gmail.com>