added some extras, not tested