Refactor Final Version with some Unimplement Methods