use jpearman's SmartMotorLib