Big rework in progress, do not merge :)