Updated Code
More Updated, Added ENUM