big refactor. labels included.