prototype pattern added