Needs tests... working on it!
not sure this is right