#5 Draft implementation.Fix #3 to justify