some extra implementation