Everything done except for Error Enum