provided required functions for assignment