Completed requirements. UI additions to follow