separated core logic from maven plugin