<----------------------------------------------------------------------------------------- <----------------------------------------------------------------------------------------
thank to nicovdt1 for some of the ideas