all logic works