broke als experiment but added some more useful code