initial infrastructure for refatoring the package