now pretty much everything possible is done with numpy arrays