Major refactor and package change