added some core functions