implemented methods