Revise architecture a bit