some developed functions