improvements
re-aarranging