Big ball of mess right now, work in progress.