awful but functional