some logic separation