enforce type constraint on interface properties
add types to base variables too
use consistent syntax