added core functions