added some infrastructure