More verbose, but better performance