added several new functions