ugly but updated