general logic