here is the outline of the alternative solution