using singleton list to save memory
using enummap instead enum
Make Instance.get() faster