maybe this should inherit from `dict` ?