added some precondition checks
header
simplified plugin cache, removed guava dependency