some core functions added