section 5.4 functionality working