structural redo. removed the console only version to simplify. may add back later