finally working fully, needs better ascii and faster printing