flesh out implementation