First pass at an upgrader