http://smaroomch.net/programing-naming/