add getByKeys method
misc cleanup