updates and new functions