There are probably existing solutions