finished smart method