support basic error check, like shouldn't allow two same bindings