Re-factored the package structure