Implemented Simple Factory idiom