works before moving around to many registers