start doing guard and pattern matching support