major refactor and readme update