add robot abstract implementation