Interface improve

Please review @tonyseek