Still need to implement private methods