more working logic