changed internal design