diff --git Build.PL Build.PL
index 398ae77..1534a7f 100644
--- Build.PL
+++ Build.PL
@@ -8,6 +8,7 @@ use 5.008_001;
 use strict;
 use warnings;
 use utf8;
+use lib '.';
 
 use builder::MyBuilder;
 use File::Basename;
diff --git mouse.h mouse.h
index 629ea80..2e190d3 100644
--- mouse.h
+++ mouse.h
@@ -110,6 +110,7 @@ SV* mouse_av_at_safe(pTHX_ AV* const mi, I32 const ix);
 static inline MAGIC *MOUSE_get_magic(pTHX_ CV *cv, MGVTBL *vtbl)
 {
 #ifndef MULTIPLICITY
+    PERL_UNUSED_ARG(vtbl);
     return (MAGIC*)(CvXSUBANY(cv).any_ptr);
 #else
     return mg_findext((SV*)cv, PERL_MAGIC_ext, vtbl);
diff --git tool/generate-mouse-tiny.pl tool/generate-mouse-tiny.pl
index cd9389a..25bcb50 100644
--- tool/generate-mouse-tiny.pl
+++ tool/generate-mouse-tiny.pl
@@ -3,6 +3,7 @@ use strict;
 use warnings;
 use File::Find;
 use Fatal qw(open close);
+use lib ('.', 'lib');
 #use File::Slurp 'slurp';
 #use List::MoreUtils 'uniq';
 #use autodie;
@@ -19,7 +20,7 @@ sub uniq{
     return grep{ !$seen{$_}++ } @_;
 }
 
-require 'lib/Mouse/Spec.pm';
+require Mouse::Spec;
 
 my $MouseTinyFile = shift || 'lib/Mouse/Tiny.pm';
 
diff --git xs-src/MouseAccessor.xs xs-src/MouseAccessor.xs
index 4607704..f60a254 100644
--- xs-src/MouseAccessor.xs
+++ xs-src/MouseAccessor.xs
@@ -254,7 +254,7 @@ mouse_attr_set(pTHX_ SV* const self, MAGIC* const mg, SV* value){
         call_sv_safe(trigger, G_VOID | G_DISCARD);
         /* need not SPAGAIN */
 
-        assert(SvTYPE(value) != SVTYPEMASK);
+        /* wrong assert(SvFLAGS(value) > SVTYPEMASK); can be undef/SVt_NULL */
     }
 
     mouse_push_value(aTHX_ value, flags);
diff --git xs-src/MouseTypeConstraints.xs xs-src/MouseTypeConstraints.xs
index c7c60e8..b6cbe7b 100644
--- xs-src/MouseTypeConstraints.xs
+++ xs-src/MouseTypeConstraints.xs
@@ -1,6 +1,6 @@
 /*
  * TypeConstraint stuff
- *  - Mouse::Util::TypeConstraints (including OptimizedConstraionts)
+ *  - Mouse::Util::TypeConstraints (including OptimizedConstraints)
  *  - Mouse::Meta::TypeConstraint
  */
 
@@ -506,7 +506,7 @@ mouse_tc_generate(pTHX_ const char* const name, check_fptr_t const fptr, SV* con
     CV* xsub;
     MAGIC* mg;
 
-    xsub = newXS(name, XS_Mouse_constraint_check, __FILE__);
+    xsub = newXS((const char*)name, XS_Mouse_constraint_check, __FILE__);
     mg = sv_magicext(
         (SV*)xsub,
         param,       /* mg_obj: refcnt will be increased */