Required Functionality with bugs corrected