Started implementing Factory pathern