Tests added. Ball made more abstract.