handled some special cases
did some more
everything works except for non-negativity