semi work UI + algo