changes and new functions