change Memo struct to interface{} and get rid of NewMemo