major refactor and repackaging