major functionality added