Refactor phase 2, add new data type into