change the the result container data types and impement more of the protocol