Всё что выше предложенно уже есть.