maybe use Map as the return type?