add clone method
setup prototype pattern and group pattern