added some incomplete functions