onwards and upwards
reworked as composer library