add internal method for inheriting purpose
add internal method for inheriting purpose