added specialized interfaces to avoid dispatch overhead