Some Abstraction and package reorganising