refactor - moved to own package