prototype pattern add