Remove ExtandableType and refactor to be more abstract