submarine implemented