extended functions