This is also implementation, which user shouldn't care about