add singleton pattern draft
merge