Don't rely on NotNull annotation
Made signature validation testable
listener & model packages
Added test for invalid signature