add logics to methods