die on direct access. don't use $plugin