too lazy to merge with cli