This will not be trivial to implement
This will not be trivial to implement