inlined strategy
made methods private