$data should always be given, not optional?