Added many tests etc.