more implementations for methods that depend on others