add new features for next assignment