mostly through input-output exercises