I don't quite like the special handling here. Is there any better solution?