Assumes zero-argument constructor... Should probably allow either passing in the blueprint in the constructor or use reflection (5.4) or unserialization