everything works if you ignore hardware